@aidc-toolkit/app-extension 1.0.24-beta → 1.0.26-beta

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/locale/i18n.ts","../src/locale/en/locale-resources.ts","../src/locale/fr/locale-resources.ts","../src/app-extension.ts","../src/lib-proxy.ts","../src/descriptor.ts","../src/app-utility-proxy.ts","../src/utility/transformer-proxy.ts","../src/utility/transformer-descriptor.ts","../src/utility/reg-exp-proxy.ts","../src/utility/string-descriptor.ts","../src/utility/string-proxy.ts","../src/utility/character-set-proxy.ts","../src/utility/character-set-descriptor.ts","../src/gs1/index.ts","../src/gs1/character-set-proxy.ts","../src/gs1/check-proxy.ts","../src/gs1/identifier-proxy.ts","../src/generator/generator.ts"],"sourcesContent":["import { i18nCoreInit, type I18nEnvironment } from \"@aidc-toolkit/core\";\nimport { gs1Resources, i18nGS1Init } from \"@aidc-toolkit/gs1\";\nimport { i18nUtilityInit, utilityResources } from \"@aidc-toolkit/utility\";\nimport i18next, { type i18n, type Resource } from \"i18next\";\nimport enLocaleResources from \"./en/locale-resources\";\nimport frLocaleResources from \"./fr/locale-resources\";\n\nexport const appExtensionNS = \"aidct_app_extension\";\n\n/**\n * Locale resources type is extracted from the English locale resources object.\n */\nexport type AppExtensionLocaleResources = typeof enLocaleResources;\n\n/**\n * App extension resources.\n */\nexport const appExtensionResources: Resource = {\n en: {\n aidct_app_extension: enLocaleResources\n },\n fr: {\n aidct_app_extension: frLocaleResources\n }\n};\n\n// Explicit type is necessary to work around bug in type discovery with linked packages.\nexport const i18nextAppExtension: i18n = i18next.createInstance();\n\n/**\n * Initialize internationalization.\n *\n * @param environment\n * Environment in which the application is running.\n *\n * @param debug\n * Debug setting.\n *\n * @returns\n * Void promise.\n */\nexport async function i18nAppExtensionInit(environment: I18nEnvironment, debug = false): Promise<void> {\n await i18nUtilityInit(environment, debug);\n await i18nGS1Init(environment, debug);\n await i18nCoreInit(i18nextAppExtension, environment, debug, appExtensionNS, utilityResources, gs1Resources, appExtensionResources);\n}\n","export default {\n AppExtension: {\n sequenceCountMustBeLessThanOrEqualTo: \"Sequence count {{sequenceCount, number}} must be less than or equal to {{maximumSequenceCount, number}}\"\n },\n Proxy: {\n vSpillMustBeHorizontalArray: \"Input must be a horizontal array\",\n hSpillMustBeVerticalArray: \"Input must be a vertical array\",\n matrixMustBeArray: \"Input must be a one-dimensional array\"\n },\n IdentifierCreatorProxy: {\n prefixDefinitionMustBeOneDimensional: \"Prefix definition must be a one-dimensional matrix\",\n prefixDefinitionMustHaveMaximumThreeElements: \"Prefix definition must have a maximum of 3 elements\",\n prefixMustBeString: \"Prefix must be a string\",\n prefixTypeMustBeNumber: \"Prefix type must be a number in the range of 0 to {{maximumPrefixType, number}}\",\n tweakFactorMustBeNumber: \"Tweak factor must be a number\"\n },\n Parameters: {\n spillMatrix: {\n name: \"matrix\",\n description: \"One-dimensional matrix to spill.\"\n },\n spillMaximumWidth: {\n name: \"maximumWidth\",\n description: \"Maximum width into which to spill the matrix. If not provided, the remaining width is used.\"\n },\n spillMaximumHeight: {\n name: \"maximumHeight\",\n description: \"Maximum height into which to spill the matrix. If not provided, the remaining height is used.\"\n },\n domain: {\n name: \"domain\",\n description: \"Transformation domain. Valid input values are from zero to domain-1.\"\n },\n value: {\n name: \"value\",\n description: \"Value to transform.\"\n },\n startValue: {\n name: \"startValue\",\n description: \"Start value of a domain of values to transform.\"\n },\n count: {\n name: \"count\",\n description: \"Count of values to transform. If positive, values transformed are startValue to startValue+count-1. If negative, values transformed are startValue down to startValue+count+1.\"\n },\n transformedValue: {\n name: \"transformedValue\",\n description: \"Previous output value of a transformation.\"\n },\n tweak: {\n name: \"tweak\",\n description: \"Value by which to tweak the transformation. If not provided or zero, the output is sequential. Otherwise, the output is encrypted in such a way as to appear random, masking the values used as inputs to the sequence.\"\n },\n regExp: {\n name: \"regExp\",\n description: \"Regular expression against which to validate a string.\"\n },\n validateS: {\n name: \"s\",\n description: \"String to validate.\"\n },\n valueForS: {\n name: \"s\",\n description: \"String for which to determine the value.\"\n },\n errorMessage: {\n name: \"errorMessage\",\n description: \"Custom error message to use if validation fails. If not provided, an internal error message is used.\"\n },\n exclusionNone: {\n name: \"exclusion\",\n description: \"String values to exclude. The only valid value is 0 (no exclusions).\"\n },\n exclusionFirstZero: {\n name: \"exclusion\",\n description: \"String values to exclude. Valid values are 0 (no exclusions) and 1 (strings starting with 0 excluded).\"\n },\n exclusionAllNumeric: {\n name: \"exclusion\",\n description: \"String values to exclude. Valid values are 0 (no exclusions) and 2 (strings that are all numeric excluded).\"\n },\n exclusionAny: {\n name: \"exclusion\",\n description: \"String values to exclude. Valid values are 0 (no exclusions), 1 (strings starting with 0 excluded), and 2 (strings that are all numeric excluded).\"\n },\n length: {\n name: \"length\",\n description: \"Length of string to create.\"\n },\n numericS: {\n name: \"s\",\n description: \"Numeric string.\"\n },\n numericSFourOrFiveDigits: {\n name: \"s\",\n description: \"Four- or five-digit numeric string.\"\n },\n numericSWithCheckDigit: {\n name: \"s\",\n description: \"Numeric string with check digit.\"\n },\n checkDigit: {\n name: \"checkDigit\",\n description: \"Check digit.\"\n },\n ai82S: {\n name: \"s\",\n description: \"GS1 AI encodable character set 82 string.\"\n },\n ai82SWithCheckCharacterPair: {\n name: \"s\",\n description: \"GS1 AI encodable character set 82 string with check character pair.\"\n },\n validateIdentifier: {\n name: \"identifier\",\n description: \"Identifier to validate.\"\n },\n zeroSuppressibleGTIN12: {\n name: \"gtin12\",\n description: \"GTIN-12 for which to suppress zeros.\"\n },\n zeroSuppressedGTIN12: {\n name: \"zeroSuppressedGTIN12\",\n description: \"Zero-suppressed GTIN-12 to expand.\"\n },\n convertGTIN: {\n name: \"gtin\",\n description: \"GTIN to convert to GTIN-14.\"\n },\n normalizeGTIN: {\n name: \"gtin\",\n description: \"GTIN to normalize.\"\n },\n validateGTIN: {\n name: \"gtin\",\n description: \"GTIN to validate.\"\n },\n validateGTIN14: {\n name: \"gtin14\",\n description: \"GTIN-14 to validate.\"\n },\n baseIdentifier: {\n name: \"baseIdentifier\",\n description: \"Base identifier.\"\n },\n indicatorDigit: {\n name: \"indicatorDigit\",\n description: \"Indicator digit.\"\n },\n gtinLevel: {\n name: \"level\",\n description: \"Level at which to validate the GTIN. Valid values are 0 (any), 1 (retail consumer trade item), and 2 (other than retail consumer trade item level).\"\n },\n rcnFormat: {\n name: \"format\",\n description: \"Restricted Circulation Number format.\"\n },\n rcn: {\n name: \"rcn\",\n description: \"Restricted Circulation Number to parse.\"\n },\n prefix: {\n name: \"prefix\",\n description: \"Prefix.\"\n },\n prefixType: {\n name: \"prefixType\",\n description: \"Prefix type. Valid values are 0 (GS1 Company Prefix), 1 (U.P.C. Company Prefix), and 2 (GS1 Prefix).\"\n },\n tweakFactor: {\n name: \"tweakFactor\",\n description: \"Tweak factor, used to support the creation of sparse identifiers. The default tweak factor is based on the GS1 Company Prefix, and is usually sufficient for obfuscation. This allows more control over the encryption when higher security is required.\"\n },\n prefixDefinitionAny: {\n name: \"prefixDefinition\",\n description: \"Prefix definition, either a simple GS1 Company Prefix (as a string) or the result of a call to definePrefix. Any prefix type is supported.\"\n },\n prefixDefinitionGS1UPC: {\n name: \"prefixDefinition\",\n description: \"Prefix definition, either a simple GS1 Company Prefix (as a string) or the result of a call to definePrefix. Only prefix types 0 (GS1 Company Prefix) and 1 (U.P.C. Company Prefix) are supported.\"\n },\n sparse: {\n name: \"sparse\",\n description: \"If true, value is mapped to a sparse sequence resistant to discovery. Default is false.\"\n },\n rcnItemReference: {\n name: \"itemReference\",\n description: \"Item reference.\"\n },\n rcnPriceOrWeight: {\n name: \"priceOrWeight\",\n description: \"Price or weight (whole number only).\"\n },\n serialComponent: {\n name: \"serialComponent\",\n description: \"Serial component.\"\n },\n reference: {\n name: \"reference\",\n description: \"Reference portion of identifier.\"\n }\n },\n Functions: {\n version: {\n name: \"version\",\n description: \"Get the version of the AIDC Toolkit.\"\n },\n vSpill: {\n name: \"vSpill\",\n description: \"Spill a horizontal array vertically to fit within a given maximum width and height.\"\n },\n hSpill: {\n name: \"hSpill\",\n description: \"Spill a vertical array horizontally to fit within a given maximum height and width.\"\n },\n forwardTransform: {\n name: \"forwardTransform\",\n description: \"Transform a value forward.\"\n },\n forwardTransformSequence: {\n name: \"forwardTransformSequence\",\n description: \"Transform a sequence of values forward.\"\n },\n reverseTransform: {\n name: \"reverseTransform\",\n description: \"Transform a value in reverse.\"\n },\n validateRegExp: {\n name: \"validateRegExp\",\n description: \"Validate a string against a regular expression.\"\n },\n isValidRegExp: {\n name: \"isValidRegExp\",\n description: \"Determine if a string is valid against a regular expression.\"\n },\n validateNumeric: {\n name: \"validateNumeric\",\n description: \"Validate a numeric string.\"\n },\n isValidNumeric: {\n name: \"isValidNumeric\",\n description: \"Determine if a string is numeric.\"\n },\n createNumeric: {\n name: \"createNumeric\",\n description: \"Create a numeric string.\"\n },\n createNumericSequence: {\n name: \"createNumericSequence\",\n description: \"Create a sequence of numeric strings.\"\n },\n valueForNumeric: {\n name: \"valueForNumeric\",\n description: \"Get the value for a numeric string.\"\n },\n validateHexadecimal: {\n name: \"validateHexadecimal\",\n description: \"Validate a hexadecimal string.\"\n },\n isValidHexadecimal: {\n name: \"isValidHexadecimal\",\n description: \"Determine if a string is hexadecimal.\"\n },\n createHexadecimal: {\n name: \"createHexadecimal\",\n description: \"Create a hexadecimal string.\"\n },\n createHexadecimalSequence: {\n name: \"createHexadecimalSequence\",\n description: \"Create a sequence of hexadecimal strings.\"\n },\n valueForHexadecimal: {\n name: \"valueForHexadecimal\",\n description: \"Get the value for a hexadecimal string.\"\n },\n validateAlphabetic: {\n name: \"validateAlphabetic\",\n description: \"Validate an alphabetic string.\"\n },\n isValidAlphabetic: {\n name: \"isValidAlphabetic\",\n description: \"Determine if a string is alphabetic.\"\n },\n createAlphabetic: {\n name: \"createAlphabetic\",\n description: \"Create an alphabetic string.\"\n },\n createAlphabeticSequence: {\n name: \"createAlphabeticSequence\",\n description: \"Create a sequence of alphabetic strings.\"\n },\n valueForAlphabetic: {\n name: \"valueForAlphabetic\",\n description: \"Get the value for an alphabetic string.\"\n },\n validateAlphanumeric: {\n name: \"validateAlphanumeric\",\n description: \"Validate an alphanumeric string.\"\n },\n isValidAlphanumeric: {\n name: \"isValidAlphanumeric\",\n description: \"Determine if a string is alphanumeric.\"\n },\n createAlphanumeric: {\n name: \"createAlphanumeric\",\n description: \"Create an alphanumeric string.\"\n },\n createAlphanumericSequence: {\n name: \"createAlphanumericSequence\",\n description: \"Create a sequence of alphanumeric strings.\"\n },\n valueForAlphanumeric: {\n name: \"valueForAlphanumeric\",\n description: \"Get the value for an alphanumeric string.\"\n },\n GS1: {\n validateAI82: {\n name: \"validateAI82\",\n description: \"Validate a GS1 AI 82 encodable character set string.\"\n },\n isValidAI82: {\n name: \"isValidAI82\",\n description: \"Determine if a string is GS1 AI 82 encodable character set.\"\n },\n createAI82: {\n name: \"createAI82\",\n description: \"Create a GS1 AI 82 encodable character set string.\"\n },\n createAI82Sequence: {\n name: \"createAI82Sequence\",\n description: \"Create a sequence of GS1 AI 82 encodable character set strings.\"\n },\n valueForAI82: {\n name: \"valueForAI82\",\n description: \"Get the value for a GS1 AI 82 encodable character set string.\"\n },\n validateAI39: {\n name: \"validateAI39\",\n description: \"Validate a GS1 AI 39 encodable character set string.\"\n },\n isValidAI39: {\n name: \"isValidAI39\",\n description: \"Determine if a string is GS1 AI 39 encodable character set.\"\n },\n createAI39: {\n name: \"createAI39\",\n description: \"Create a GS1 AI 39 encodable character set string.\"\n },\n createAI39Sequence: {\n name: \"createAI39Sequence\",\n description: \"Create a sequence of GS1 AI 39 encodable character set strings.\"\n },\n valueForAI39: {\n name: \"valueForAI39\",\n description: \"Get the value for a GS1 AI 39 encodable character set string.\"\n },\n checkDigit: {\n name: \"checkDigit\",\n description: \"Calculate the check digit for a numeric string.\"\n },\n hasValidCheckDigit: {\n name: \"hasValidCheckDigit\",\n description: \"Determine if a string has a valid check digit.\"\n },\n priceOrWeightCheckDigit: {\n name: \"priceOrWeightCheckDigit\",\n description: \"Calculate the check digit for a price or weight.\"\n },\n isValidPriceOrWeightCheckDigit: {\n name: \"isValidPriceOrWeightCheckDigit\",\n description: \"Determine if a price or weight check digit is valid.\"\n },\n checkCharacterPair: {\n name: \"checkCharacterPair\",\n description: \"Calculate the check character pair for a GS1 AI 82 encodable character set string.\"\n },\n hasValidCheckCharacterPair: {\n name: \"hasValidCheckCharacterPair\",\n description: \"Determine if a GS1 AI 82 encodable character set string has a valid check character pair.\"\n },\n validateGTIN13: {\n name: \"validateGTIN13\",\n description: \"Validate a GTIN-13.\"\n },\n validateGTIN12: {\n name: \"validateGTIN12\",\n description: \"Validate a GTIN-12.\"\n },\n validateGTIN8: {\n name: \"validateGTIN8\",\n description: \"Validate a GTIN-8.\"\n },\n zeroSuppressGTIN12: {\n name: \"zeroSuppressGTIN12\",\n description: \"Zero-suppress a GTIN-12.\"\n },\n zeroExpandGTIN12: {\n name: \"zeroExpandGTIN12\",\n description: \"Expand a zero-suppressed GTIN-12.\"\n },\n convertToGTIN14: {\n name: \"convertToGTIN14\",\n description: \"Convert a GTIN to GTIN-14.\"\n },\n normalizeGTIN: {\n name: \"normalizeGTIN\",\n description: \"Normalize a GTIN.\"\n },\n validateGTIN: {\n name: \"validateGTIN\",\n description: \"Validate any GTIN.\"\n },\n validateGTIN14: {\n name: \"validateGTIN14\",\n description: \"Validate a GTIN-14.\"\n },\n parseVariableMeasureRCN: {\n name: \"parseVariableMeasureRCN\",\n description: \"Parse a Restricted Circulation Number (RCN) using a variable measure trade item format.\"\n },\n validateGLN: {\n name: \"validateGLN\",\n description: \"Validate a GLN.\"\n },\n validateSSCC: {\n name: \"validateSSCC\",\n description: \"Validate an SSCC.\"\n },\n validateGRAI: {\n name: \"validateGRAI\",\n description: \"Validate a GRAI.\"\n },\n validateGIAI: {\n name: \"validateGIAI\",\n description: \"Validate a GIAI.\"\n },\n validateGSRN: {\n name: \"validateGSRN\",\n description: \"Validate a GSRN.\"\n },\n validateGDTI: {\n name: \"validateGDTI\",\n description: \"Validate a GDTI.\"\n },\n validateGINC: {\n name: \"validateGINC\",\n description: \"Validate a GINC.\"\n },\n validateGSIN: {\n name: \"validateGSIN\",\n description: \"Validate a GSIN.\"\n },\n validateGCN: {\n name: \"validateGCN\",\n description: \"Validate a GCN.\"\n },\n validateCPID: {\n name: \"validateCPID\",\n description: \"Validate a CPID.\"\n },\n validateGMN: {\n name: \"validateGMN\",\n description: \"Validate a GMN.\"\n },\n definePrefix: {\n name: \"definePrefix\",\n description: \"Define a prefix for use in GS1 identifier creation functions.\"\n },\n createGTIN: {\n name: \"createGTIN\",\n description: \"Create a GTIN.\"\n },\n createGTINSequence: {\n name: \"createGTINSequence\",\n description: \"Create a sequence of GTINs.\"\n },\n createAllGTIN: {\n name: \"createAllGTIN\",\n description: \"Create all GTINs for a prefix.\"\n },\n createGTIN14: {\n name: \"createGTIN14\",\n description: \"Create a GTIN-14.\"\n },\n createVariableMeasureRCN: {\n name: \"createVariableMeasureRCN\",\n description: \"Create a variable measure Restricted Circulation Number (RCN).\"\n },\n createGLN: {\n name: \"createGLN\",\n description: \"Create a GLN.\"\n },\n createGLNSequence: {\n name: \"createGLNSequence\",\n description: \"Create a sequence of GLNs.\"\n },\n createAllGLN: {\n name: \"createAllGLN\",\n description: \"Create all GLNs for a prefix.\"\n },\n createSSCC: {\n name: \"createSSCC\",\n description: \"Create an SSCC.\"\n },\n createSSCCSequence: {\n name: \"createSSCCSequence\",\n description: \"Create a sequence of SSCCs.\"\n },\n createAllSSCC: {\n name: \"createAllSSCC\",\n description: \"Create all SSCCs for a prefix.\"\n },\n createGRAI: {\n name: \"createGRAI\",\n description: \"Create a GRAI.\"\n },\n createGRAISequence: {\n name: \"createGRAISequence\",\n description: \"Create a sequence of GRAIs.\"\n },\n createAllGRAI: {\n name: \"createAllGRAI\",\n description: \"Create all GRAIs for a prefix.\"\n },\n createSerializedGRAI: {\n name: \"createSerializedGRAI\",\n description: \"Create a serialized GRAI.\"\n },\n concatenateGRAI: {\n name: \"concatenateGRAI\",\n description: \"Concatenate a base GRAI with a serial component.\"\n },\n createGIAI: {\n name: \"createGIAI\",\n description: \"Create a GIAI.\"\n },\n createGSRN: {\n name: \"createGSRN\",\n description: \"Create a GSRN.\"\n },\n createGSRNSequence: {\n name: \"createGSRNSequence\",\n description: \"Create a sequence of GSRNs.\"\n },\n createAllGSRN: {\n name: \"createAllGSRN\",\n description: \"Create all GSRNs for a prefix.\"\n },\n createGDTI: {\n name: \"createGDTI\",\n description: \"Create a GDTI.\"\n },\n createGDTISequence: {\n name: \"createGDTISequence\",\n description: \"Create a sequence of GDTIs.\"\n },\n createAllGDTI: {\n name: \"createAllGDTI\",\n description: \"Create all GDTIs for a prefix.\"\n },\n createSerializedGDTI: {\n name: \"createSerializedGDTI\",\n description: \"Create a serialized GDTI.\"\n },\n concatenateGDTI: {\n name: \"concatenateGDTI\",\n description: \"Concatenate a base GDTI with a serial component.\"\n },\n createGINC: {\n name: \"createGINC\",\n description: \"Create a GINC.\"\n },\n createGSIN: {\n name: \"createGSIN\",\n description: \"Create a GSIN.\"\n },\n createGSINSequence: {\n name: \"createGSINSequence\",\n description: \"Create a sequence of GSINs.\"\n },\n createAllGSIN: {\n name: \"createAllGSIN\",\n description: \"Create all GSINs for a prefix.\"\n },\n createGCN: {\n name: \"createGCN\",\n description: \"Create a GCN.\"\n },\n createGCNSequence: {\n name: \"createGCNSequence\",\n description: \"Create a sequence of GCNs.\"\n },\n createAllGCN: {\n name: \"createAllGCN\",\n description: \"Create all GCNs for a prefix.\"\n },\n createSerializedGCN: {\n name: \"createSerializedGCN\",\n description: \"Create a serialized GCN.\"\n },\n concatenateGCN: {\n name: \"concatenateGCN\",\n description: \"Concatenate a base GCN with a serial component.\"\n },\n createCPID: {\n name: \"createCPID\",\n description: \"Create a CPID.\"\n },\n createGMN: {\n name: \"createGMN\",\n description: \"Create a GMN.\"\n }\n }\n }\n};\n","export default {\n AppExtension: {\n sequenceCountMustBeLessThanOrEqualTo: \"Le nombre de séquences {{sequenceCount, number}} doit être inférieur ou égal à {{maximumSequenceCount, number}}\"\n },\n Proxy: {\n vSpillMustBeHorizontalArray: \"L'entrée doit être un tableau horizontal\",\n hSpillMustBeVerticalArray: \"L'entrée doit être un tableau vertical\",\n matrixMustBeArray: \"L'entrée doit être un tableau unidimensionnel\"\n },\n IdentifierCreatorProxy: {\n prefixDefinitionMustBeOneDimensional: \"La définition du préfixe doit être une matrice unidimensionnelle\",\n prefixDefinitionMustHaveMaximumThreeElements: \"La définition du préfixe doit comporter un maximum de 3 éléments\",\n prefixMustBeString: \"Le préfixe doit être une chaîne\",\n prefixTypeMustBeNumber: \"Le type de préfixe doit être un nombre compris entre 0 et {{maximumPrefixType, number}}\",\n tweakFactorMustBeNumber: \"Le facteur de réglage doit être un nombre\"\n },\n Parameters: {\n spillMatrix: {\n name: \"matrice\",\n description: \"Matrice unidimensionnelle à renverser.\"\n },\n spillMaximumWidth: {\n name: \"largeurMaximale\",\n description: \"Largeur maximale dans laquelle déverser la matrice. Si non fournie, la largeur restante est utilisée.\"\n },\n spillMaximumHeight: {\n name: \"hauteurMaximale\",\n description: \"Hauteur maximale dans laquelle déverser la matrice. Si non fournie, la hauteur restante est utilisée.\"\n },\n domain: {\n name: \"domaine\",\n description: \"Domaine de transformation. Les valeurs d'entrée valides vont de zéro au domaine-1.\"\n },\n value: {\n name: \"valeur\",\n description: \"Valeur à transformer.\"\n },\n startValue: {\n name: \"valeurInitiale\",\n description: \"Valeur de départ d'un domaine de valeurs à transformer.\"\n },\n count: {\n name: \"compte\",\n description: \"Nombre de valeurs à transformer. Si positive, les valeurs transformées vont de valeurInitiale ascendante à valeurInitiale+compte-1. Si négative, les valeurs transformées vont de valeurInitiale descendant à valeurInitiale+compte+1.\"\n },\n transformedValue: {\n name: \"valeurTransformee\",\n description: \"Valeur de sortie précédente d'une transformation.\"\n },\n tweak: {\n name: \"reglage\",\n description: \"Valeur par laquelle réglager la transformation. Si non fourni ou nul, la sortie est séquentielle. Sinon, la sortie est cryptée de manière à paraître aléatoire, masquant les valeurs utilisées comme entrées de la séquence.\"\n },\n regExp: {\n name: \"expReg\",\n description: \"Expression régulière par rapport à laquelle valider une chaîne.\"\n },\n validateS: {\n name: \"c\",\n description: \"Chaîne à valider.\"\n },\n valueForS: {\n name: \"c\",\n description: \"Chaîne pour laquelle déterminer la valeur.\"\n },\n errorMessage: {\n name: \"messageDErreur\",\n description: \"Message d'erreur personnalisé à utiliser si la validation échoue. S'il n'est pas fourni, un message d'erreur interne est utilisé.\"\n },\n exclusionNone: {\n name: \"exclusion\",\n description: \"Valeurs de chaîne à exclure. La seule valeur valide est 0 (aucune exclusion).\"\n },\n exclusionFirstZero: {\n name: \"exclusion\",\n description: \"Valeurs de chaîne à exclure. Les valeurs valides sont 0 (aucune exclusion) et 1 (chaînes commençant par 0 exclues).\"\n },\n exclusionAllNumeric: {\n name: \"exclusion\",\n description: \"Valeurs de chaîne à exclure. Les valeurs valides sont 0 (aucune exclusion) et 2 (chaînes entièrement numériques exclues).\"\n },\n exclusionAny: {\n name: \"exclusion\",\n description: \"Valeurs de chaîne à exclure. Les valeurs valides sont 0 (aucune exclusion), 1 (chaînes commençant par 0 exclues) et 2 (chaînes toutes numériques exclues).\"\n },\n length: {\n name: \"longueur\",\n description: \"Longueur de chaîne à créer.\"\n },\n numericS: {\n name: \"c\",\n description: \"Chaîne numérique.\"\n },\n numericSFourOrFiveDigits: {\n name: \"c\",\n description: \"Chaîne numérique à quatre ou cinq chiffres.\"\n },\n numericSWithCheckDigit: {\n name: \"c\",\n description: \"Chaîne numérique avec chiffre de contrôle.\"\n },\n checkDigit: {\n name: \"chiffreDeControle\",\n description: \"Chiffre de contrôle.\"\n },\n ai82S: {\n name: \"c\",\n description: \"Chaîne de caractères GS1 AI 82.\"\n },\n ai82SWithCheckCharacterPair: {\n name: \"c\",\n description: \"Chaîne de caractères GS1 AI 82 avec paire de caractères de contrôle.\"\n },\n validateIdentifier: {\n name: \"cleDIdentification\",\n description: \"Clé d'identification à valider.\"\n },\n zeroSuppressibleGTIN12: {\n name: \"gtin12\",\n description: \"GTIN-12 pour lequel supprimer les zéros.\"\n },\n zeroSuppressedGTIN12: {\n name: \"gtin12SupprimeAZero\",\n description: \"GTIN-12 supprimé à zéro pour s'étendre.\"\n },\n convertGTIN: {\n name: \"gtin\",\n description: \"GTIN à convertir en GTIN-14.\"\n },\n normalizeGTIN: {\n name: \"gtin\",\n description: \"GTIN à normaliser.\"\n },\n validateGTIN: {\n name: \"gtin\",\n description: \"GTIN à valider.\"\n },\n validateGTIN14: {\n name: \"gtin14\",\n description: \"GTIN-14 à valider.\"\n },\n baseIdentifier: {\n name: \"cleDIdentificationDeBase\",\n description: \"Clé d'identification de base.\"\n },\n indicatorDigit: {\n name: \"indicatorDigit\",\n description: \"Chiffre indicateur.\"\n },\n gtinLevel: {\n name: \"niveau\",\n description: \"Niveau auquel valider le GTIN. Les valeurs valides sont 0 (n'importe lequel), 1 (article commercial de consommation au détail) et 2 (autre que le niveau de l'article commercial de consommation au détail).\"\n },\n rcnFormat: {\n name: \"format\",\n description: \"Format de numéro de diffusion restreinte.\"\n },\n rcn: {\n name: \"rcn\",\n description: \"Numéro de diffusion restreint à analyser.\"\n },\n prefix: {\n name: \"prefixe\",\n description: \"Préfixe.\"\n },\n prefixType: {\n name: \"typeDePréfixe\",\n description: \"Type de préfixe. Les valeurs valides sont 0 (préfixe d'entreprise GS1), 1 (préfixe d'entreprise U.P.C.) et 2 (préfixe GS1).\"\n },\n tweakFactor: {\n name: \"facteurDeReglage\",\n description: \"Facteur de réglage, utilisé pour prendre en charge la création de clés d'identification éparses. Le facteur de réglage par défaut est basé sur le préfixe d'entreprise GS1 et est généralement suffisant pour l'obscurcissement. Cela permet un meilleur contrôle du cryptage lorsqu'une sécurité plus élevée est requise.\"\n },\n prefixDefinitionAny: {\n name: \"prefixeDefinition\",\n description: \"Définition de préfixe, soit un préfixe d'entreprise simple GS1 (sous forme de chaîne), soit le résultat d'un appel à definePrefix. Tout type de préfixe est pris en charge.\"\n },\n prefixDefinitionGS1UPC: {\n name: \"prefixeDefinition\",\n description: \"Définition de préfixe, soit un préfixe d'entreprise simple GS1 (sous forme de chaîne), soit le résultat d'un appel à definePrefix. Seuls les types de préfixes 0 (préfixe d'entreprise GS1) et 1 (préfixe d'entreprise U.P.C.) sont pris en charge.\"\n },\n sparse: {\n name: \"clairsemee\",\n description: \"Si cette valeur est vraie, la valeur est mappée sur une séquence clairsemée résistante à la découverte. La valeur par défaut est faux.\"\n },\n rcnItemReference: {\n name: \"referenceDArticle\",\n description: \"Référence d'article.\"\n },\n rcnPriceOrWeight: {\n name: \"prixOuPoids\",\n description: \"Prix ou poids (nombre entier uniquement).\"\n },\n serialComponent: {\n name: \"composanteSerie\",\n description: \"Composante série.\"\n },\n reference: {\n name: \"reference\",\n description: \"Partie de référence de la clé d'identification.\"\n }\n },\n Functions: {\n version: {\n name: \"version\",\n description: \"Obtener la version de la boîte à outils AIDC.\"\n },\n vSpill: {\n name: \"vDeverser\",\n description: \"Déverser un tableau horizontal verticalement pour l'adapter à une largeur et une hauteur maximales données.\"\n },\n hSpill: {\n name: \"hDeverser\",\n description: \"Déverser un tableau vertical horizontalement pour l'adapter à une hauteur et une largeur maximales données.\"\n },\n forwardTransform: {\n name: \"transformerAvant\",\n description: \"Transformer une valeur en avant.\"\n },\n forwardTransformSequence: {\n name: \"transformerSequenceAvant\",\n description: \"Transformer une séquence de valeurs en avant.\"\n },\n reverseTransform: {\n name: \"transformerArriere\",\n description: \"Transformer une valeur en arrière.\"\n },\n validateRegExp: {\n name: \"validerExpReg\",\n description: \"Valider une chaîne par rapport à une expression régulière.\"\n },\n isValidRegExp: {\n name: \"estValideExpReg\",\n description: \"Déterminer si une chaîne est valide par rapport à une expression régulière.\"\n },\n validateNumeric: {\n name: \"validerNumerique\",\n description: \"Valider une chaîne numérique.\"\n },\n isValidNumeric: {\n name: \"estValideNumerique\",\n description: \"Déterminer si une chaîne est numérique.\"\n },\n createNumeric: {\n name: \"creerNumerique\",\n description: \"Créer une chaîne numérique.\"\n },\n createNumericSequence: {\n name: \"creerSequenceNumerique\",\n description: \"Créer une séquence de chaînes numériques.\"\n },\n valueForNumeric: {\n name: \"valeurDeNumerique\",\n description: \"Obtenir la valeur d'une chaîne numérique.\"\n },\n validateHexadecimal: {\n name: \"validerHexadecimale\",\n description: \"Valider une chaîne hexadécimale.\"\n },\n isValidHexadecimal: {\n name: \"estValideHexadecimale\",\n description: \"Déterminer si une chaîne est hexadécimale.\"\n },\n createHexadecimal: {\n name: \"creerHexadecimale\",\n description: \"Créer une chaîne hexadécimale.\"\n },\n createHexadecimalSequence: {\n name: \"creerSequenceHexadecimale\",\n description: \"Créer une séquence de chaînes hexadécimales.\"\n },\n valueForHexadecimal: {\n name: \"valeurDeHexadecimale\",\n description: \"Obtenir la valeur d'une chaîne hexadécimale.\"\n },\n validateAlphabetic: {\n name: \"validerAlphabetique\",\n description: \"Valider une chaîne alphabétique.\"\n },\n isValidAlphabetic: {\n name: \"estValideAlphabetique\",\n description: \"Déterminer si une chaîne est alphabétique.\"\n },\n createAlphabetic: {\n name: \"creerAlphabetique\",\n description: \"Créer une chaîne alphabétique.\"\n },\n createAlphabeticSequence: {\n name: \"creerSequenceAlphabetique\",\n description: \"Créer une séquence de chaînes alphabétiques.\"\n },\n valueForAlphabetic: {\n name: \"valeurDeAlphabetique\",\n description: \"Obtenir la valeur d'une chaîne alphabétique.\"\n },\n validateAlphanumeric: {\n name: \"validerAlphanumerique\",\n description: \"Valider une chaîne alphanumérique.\"\n },\n isValidAlphanumeric: {\n name: \"estValideAlphanumerique\",\n description: \"Déterminer si une chaîne est alphanumérique.\"\n },\n createAlphanumeric: {\n name: \"creerAlphanumerique\",\n description: \"Créer une chaîne alphanumérique.\"\n },\n createAlphanumericSequence: {\n name: \"creerSequenceAlphanumerique\",\n description: \"Créer une séquence de chaînes alphanumériques.\"\n },\n valueForAlphanumeric: {\n name: \"valeurDeAlphanumerique\",\n description: \"Obtenir la valeur d'une chaîne alphanumérique.\"\n },\n GS1: {\n validateAI82: {\n name: \"validerAI82\",\n description: \"Valider une chaîne de caractères GS1 AI 82.\"\n },\n isValidAI82: {\n name: \"estValideAI82\",\n description: \"Déterminer si une chaîne est un jeu de caractères GS1 AI 82.\"\n },\n createAI82: {\n name: \"creerAI82\",\n description: \"Créer une chaîne de caractères GS1 AI 82.\"\n },\n createAI82Sequence: {\n name: \"creerSequenceAI82\",\n description: \"Créer une séquence de chaînes de caractères GS1 AI 82.\"\n },\n valueForAI82: {\n name: \"valeurDeAI82\",\n description: \"Obtenez la valeur d'une chaîne de caractères GS1 AI 82.\"\n },\n validateAI39: {\n name: \"validerAI39\",\n description: \"Valider une chaîne de caractères GS1 AI 39.\"\n },\n isValidAI39: {\n name: \"estValideAI39\",\n description: \"Déterminer si une chaîne est un jeu de caractères GS1 AI 39.\"\n },\n createAI39: {\n name: \"creerAI39\",\n description: \"Créer une chaîne de caractères GS1 AI 39.\"\n },\n createAI39Sequence: {\n name: \"creerSequenceAI39\",\n description: \"Créer une séquence de chaînes de caractères GS1 AI 39.\"\n },\n valueForAI39: {\n name: \"valeurDeAI39\",\n description: \"Obtenez la valeur d'une chaîne de caractères GS1 AI 39.\"\n },\n checkDigit: {\n name: \"chiffreDeControle\",\n description: \"Calculer le chiffre de contrôle pour une chaîne numérique.\"\n },\n hasValidCheckDigit: {\n name: \"aChiffreDeControleValide\",\n description: \"Déterminer si une chaîne a un chiffre de contrôle valide.\"\n },\n priceOrWeightCheckDigit: {\n name: \"chiffreDeControlePrixOuPoids\",\n description: \"Calculer le chiffre de contrôle pour un prix ou un poids.\"\n },\n isValidPriceOrWeightCheckDigit: {\n name: \"estChiffreDeControlePrixOuPoidsValide\",\n description: \"Déterminer si un chiffre de contrôle de prix ou de poids est valide.\"\n },\n checkCharacterPair: {\n name: \"paireDeCaracteresDeControle\",\n description: \"Calculer la paire de caractères de contrôle pour une chaîne de caractères.\"\n },\n hasValidCheckCharacterPair: {\n name: \"aPaireDeCaracteresDeControleValide\",\n description: \"Déterminez si une chaîne de caractères GS1 AI 82 a une paire de caractères de contrôle valide.\"\n },\n validateGTIN13: {\n name: \"validerGTIN13\",\n description: \"Valider un GTIN-13.\"\n },\n validateGTIN12: {\n name: \"validerGTIN12\",\n description: \"Valider un GTIN-12.\"\n },\n validateGTIN8: {\n name: \"validerGTIN8\",\n description: \"Valider un GTIN-8.\"\n },\n zeroSuppressGTIN12: {\n name: \"supprimerZeroGTIN12\",\n description: \"Supprimer les zéros d'un GTIN-12.\"\n },\n zeroExpandGTIN12: {\n name: \"etendrerZeroGTIN12\",\n description: \"Étendrer un GTIN-12 supprimé à zéro.\"\n },\n convertToGTIN14: {\n name: \"convertirEnGTIN14\",\n description: \"Convertir un GTIN en GTIN-14.\"\n },\n normalizeGTIN: {\n name: \"normalizeGTIN\",\n description: \"Normaliser un GTIN.\"\n },\n validateGTIN: {\n name: \"validerGTIN\",\n description: \"Validez n'importe quel GTIN.\"\n },\n validateGTIN14: {\n name: \"validerGTIN14\",\n description: \"Valider un GTIN-14.\"\n },\n parseVariableMeasureRCN: {\n name: \"parseVariableMeasureRCN\",\n description: \"Analyser un numéro de diffusion restreinte (RCN) à l'aide d'un format d'article commercial à mesure variable.\"\n },\n validateGLN: {\n name: \"validerGLN\",\n description: \"Valider un GLN.\"\n },\n validateSSCC: {\n name: \"validerSSCC\",\n description: \"Valider un SSCC.\"\n },\n validateGRAI: {\n name: \"validerGRAI\",\n description: \"Valider un GRAI.\"\n },\n validateGIAI: {\n name: \"validerGIAI\",\n description: \"Valider un GIAI.\"\n },\n validateGSRN: {\n name: \"validerGSRN\",\n description: \"Valider un GSRN.\"\n },\n validateGDTI: {\n name: \"validerGDTI\",\n description: \"Valider un GDTI.\"\n },\n validateGINC: {\n name: \"validerGINC\",\n description: \"Valider un GINC.\"\n },\n validateGSIN: {\n name: \"validerGSIN\",\n description: \"Valider un GSIN.\"\n },\n validateGCN: {\n name: \"validerGCN\",\n description: \"Valider un GCN.\"\n },\n validateCPID: {\n name: \"validerCPID\",\n description: \"Valider un CPID.\"\n },\n validateGMN: {\n name: \"validerGMN\",\n description: \"Valider un GMN.\"\n },\n definePrefix: {\n name: \"definisserPrefixe\",\n description: \"Définisser un préfixe à utiliser dans les fonctions de création de clé d'identification GS1.\"\n },\n createGTIN: {\n name: \"creerGTIN\",\n description: \"Créer un GTIN.\"\n },\n createGTINSequence: {\n name: \"creerSequenceGTIN\",\n description: \"Créer un séquence de GTIN.\"\n },\n createAllGTIN: {\n name: \"creerTousGTIN\",\n description: \"Créez tous les GTIN pour un préfixe.\"\n },\n createGTIN14: {\n name: \"creerGTIN14\",\n description: \"Créer un GTIN-14.\"\n },\n createVariableMeasureRCN: {\n name: \"creerMesureVariableRCN\",\n description: \"Créer un numéro de diffusion restreinte (RCN) à l'aide d'un format d'article commercial à mesure variable.\"\n },\n createGLN: {\n name: \"creerGLN\",\n description: \"Créer un GLN.\"\n },\n createGLNSequence: {\n name: \"creerSequenceGLN\",\n description: \"Créer un séquence de GLN.\"\n },\n createAllGLN: {\n name: \"creerTousGLN\",\n description: \"Créez tous les GLN pour un préfixe.\"\n },\n createSSCC: {\n name: \"creerSSCC\",\n description: \"Créer un SSCC.\"\n },\n createSSCCSequence: {\n name: \"creerSequenceSSCC\",\n description: \"Créer un séquence de SSCC.\"\n },\n createAllSSCC: {\n name: \"creerTousSSCC\",\n description: \"Créez tous les SSCC pour un préfixe.\"\n },\n createGRAI: {\n name: \"creerGRAI\",\n description: \"Créer un GRAI.\"\n },\n createGRAISequence: {\n name: \"creerSequenceGRAI\",\n description: \"Créer un séquence de GRAI.\"\n },\n createAllGRAI: {\n name: \"creerTousGRAI\",\n description: \"Créez tous les GRAI pour un préfixe.\"\n },\n createSerializedGRAI: {\n name: \"creerGRAISerialise\",\n description: \"Créer un GRAI sérialisé.\"\n },\n concatenateGRAI: {\n name: \"concatenerGRAI\",\n description: \"Concaténer une base GRAI avec un composant série.\"\n },\n createGIAI: {\n name: \"creerGIAI\",\n description: \"Créer un GIAI.\"\n },\n createGSRN: {\n name: \"creerGSRN\",\n description: \"Créer un GSRN.\"\n },\n createGSRNSequence: {\n name: \"creerSequenceGSRN\",\n description: \"Créer un séquence de GSRN.\"\n },\n createAllGSRN: {\n name: \"creerTousGSRN\",\n description: \"Créez tous les GSRN pour un préfixe.\"\n },\n createGDTI: {\n name: \"creerGDTI\",\n description: \"Créer un GDTI.\"\n },\n createGDTISequence: {\n name: \"creerSequenceGDTI\",\n description: \"Créer un séquence de GDTI.\"\n },\n createAllGDTI: {\n name: \"creerTousGDTI\",\n description: \"Créez tous les GDTI pour un préfixe.\"\n },\n createSerializedGDTI: {\n name: \"creerGDTISerialise\",\n description: \"Créer un GDTI sérialisé.\"\n },\n concatenateGDTI: {\n name: \"concatenerGDTI\",\n description: \"Concaténer une base GDTI avec un composant série.\"\n },\n createGINC: {\n name: \"creerGINC\",\n description: \"Créer un GINC.\"\n },\n createGSIN: {\n name: \"creerGSIN\",\n description: \"Créer un GSIN.\"\n },\n createGSINSequence: {\n name: \"creerSequenceGSIN\",\n description: \"Créer un séquence de GSIN.\"\n },\n createAllGSIN: {\n name: \"creerTousGSIN\",\n description: \"Créez tous les GSIN pour un préfixe.\"\n },\n createGCN: {\n name: \"creerGCN\",\n description: \"Créer un GCN.\"\n },\n createGCNSequence: {\n name: \"creerSequenceGCN\",\n description: \"Créer un séquence de GCN.\"\n },\n createAllGCN: {\n name: \"creerTousGCN\",\n description: \"Créez tous les GCN pour un préfixe.\"\n },\n createSerializedGCN: {\n name: \"creerGCNSerialise\",\n description: \"Créer un GCN sérialisé.\"\n },\n concatenateGCN: {\n name: \"concatenerGCN\",\n description: \"Concaténer une base GCN avec un composant série.\"\n },\n createCPID: {\n name: \"creerCPID\",\n description: \"Créer un CPID.\"\n },\n createGMN: {\n name: \"creerGMN\",\n description: \"Créer un GMN.\"\n }\n }\n }\n};\n","import type { TypedAsyncFunction, TypedFunction, TypedSyncFunction } from \"@aidc-toolkit/core\";\nimport { i18nextAppExtension } from \"./locale/i18n\";\nimport type { ErrorExtends, ResultError, SheetAddress, SheetRange } from \"./type\";\n\n/**\n * Application extension.\n *\n * @template TBigInt\n * Type to which big integer is mapped.\n *\n * @template ThrowError\n * If true, errors are reported through the throw/catch mechanism.\n *\n * @template TError\n * Error type.\n */\nexport abstract class AppExtension<ThrowError extends boolean, TError extends ErrorExtends<ThrowError>, TInvocationContext, TBigInt> {\n /**\n * Application version.\n */\n private readonly _version: string;\n\n /**\n * Maximum sequence count supported by application.\n */\n private readonly _maximumSequenceCount: number;\n\n /**\n * If true, errors are reported through the throw/catch mechanism.\n */\n private readonly _throwError: ThrowError;\n\n /**\n * Maximum width supported by application.\n */\n private _maximumWidth?: number;\n\n /**\n * Maximum height supported by application.\n */\n private _maximumHeight?: number;\n\n /**\n * Constructor.\n *\n * @param version\n * Application version.\n *\n * @param maximumSequenceCount\n * Maximum sequence count supported by application.\n *\n * @param throwError\n * If true, errors are reported through the throw/catch mechanism.\n */\n protected constructor(version: string, maximumSequenceCount: number, throwError: ThrowError) {\n this._version = version;\n this._maximumSequenceCount = maximumSequenceCount;\n this._throwError = throwError;\n }\n\n /**\n * Get the version.\n *\n * @returns\n * Version.\n */\n get version(): string {\n return this._version;\n }\n\n /**\n * Determine if errors are reported through the throw/catch mechanism.\n */\n get throwError(): ThrowError {\n return this._throwError;\n }\n\n /**\n * Get the maximum width supported by the application.\n *\n * @returns\n * Maximum width supported by the application.\n */\n async maximumWidth(): Promise<number> {\n this._maximumWidth ??= await this.getMaximumWidth();\n\n return this._maximumWidth;\n }\n\n /**\n * Get the maximum width supported by the application.\n *\n * @returns\n * Maximum width supported by the application.\n */\n protected abstract getMaximumWidth(): Promise<number>;\n\n /**\n * Get the maximum height supported by the application.\n *\n * @returns\n * Maximum height supported by the application.\n */\n async maximumHeight(): Promise<number> {\n this._maximumHeight ??= await this.getMaximumHeight();\n\n return this._maximumHeight;\n }\n\n /**\n * Get the maximum height supported by the application.\n *\n * @returns\n * Maximum height supported by the application.\n */\n protected abstract getMaximumHeight(): Promise<number>;\n\n /**\n * Get the sheet address from an invocation context.\n *\n * @param invocationContext\n * Invocation context.\n *\n * @returns\n * Sheet address.\n */\n abstract getSheetAddress(invocationContext: TInvocationContext): Promise<SheetAddress>;\n\n /**\n * Get a parameter range from an invocation context.\n *\n * @param invocationContext\n * Invocation context.\n *\n * @param parameterNumber\n * Parameter number.\n *\n * @returns\n * Sheet range or null if parameter is not a range.\n */\n abstract getParameterSheetRange(invocationContext: TInvocationContext, parameterNumber: number): Promise<SheetRange | null>;\n\n /**\n * Validate a sequence count against the maximum supported by application.\n *\n * @param sequenceCount\n * Sequence count.\n */\n validateSequenceCount(sequenceCount: number): void {\n const absoluteSequenceCount = Math.abs(sequenceCount);\n\n if (absoluteSequenceCount > this._maximumSequenceCount) {\n throw new RangeError(i18nextAppExtension.t(\"AppExtension.sequenceCountMustBeLessThanOrEqualTo\", {\n sequenceCount: absoluteSequenceCount,\n maximumSequenceCount: this._maximumSequenceCount\n }));\n }\n }\n\n /**\n * Map big integer to another type if necessary.\n *\n * @param value\n * Big integer value to map.\n *\n * @returns\n * Mapped big integer value.\n */\n abstract mapBigInt(value: bigint): ResultError<TBigInt, ThrowError, TError>;\n\n /**\n * Map a range error (thrown by the library) to an application-specific error. If errors are reported through the\n * throw/catch mechanism, the implementation may return the range error unmodified if that is supported.\n *\n * @param rangeError\n */\n abstract mapRangeError(rangeError: RangeError): TError;\n\n /**\n * Handle an error with a message; called when an exception occurs outside the control of the AIDC Toolkit library.\n * Implementation must not return, most likely by throwing the message wrapped in an error type.\n *\n * @param message\n * Message to include in the error.\n */\n abstract handleError(message: string): never;\n\n /**\n * Bind a synchronous method and wrap it in a try/catch for comprehensive error handling.\n *\n * @param thisArg\n * The value to be passed as the `this` parameter to the method.\n *\n * @param method\n * Method to call.\n *\n * @returns\n * Function wrapped around the method.\n */\n bindSync<TMethod extends TypedSyncFunction<TMethod>>(thisArg: ThisParameterType<TMethod>, method: TMethod): TypedFunction<TMethod> {\n const boundMethod = method.bind(thisArg);\n\n return (...args: Parameters<TMethod>): ReturnType<TMethod> => {\n try {\n return boundMethod(...args);\n } catch (e: unknown) {\n // eslint-disable-next-line no-console -- Necessary for diagnostics.\n console.error(e);\n\n this.handleError(e instanceof Error ? e.message : String(e));\n }\n };\n }\n\n /**\n * Bind an asynchronous method and wrap it in a try/catch for comprehensive error handling.\n *\n * @param thisArg\n * The value to be passed as the `this` parameter to the method.\n *\n * @param method\n * Method to call.\n *\n * @returns\n * Function wrapped around the method.\n */\n bindAsync<TMethod extends TypedAsyncFunction<TMethod>>(thisArg: ThisParameterType<TMethod>, method: TMethod): TypedAsyncFunction<TMethod> {\n const boundMethod = method.bind(thisArg);\n\n return async (...args: Parameters<TMethod>) => await boundMethod(...args).catch((e: unknown) => {\n // eslint-disable-next-line no-console -- Necessary for diagnostics.\n console.error(e);\n\n this.handleError(e instanceof Error ? e.message : String(e));\n });\n }\n}\n","import { mapIterable } from \"@aidc-toolkit/utility\";\nimport type { AppExtension } from \"./app-extension\";\nimport { i18nextAppExtension } from \"./locale/i18n\";\nimport type { ErrorExtends, Matrix, MatrixResultError, ResultError } from \"./type\";\n\n/**\n * Library proxy.\n *\n * @template TBigInt\n * Type to which big integer is mapped.\n *\n * @template ThrowError\n * If true, errors are reported through the throw/catch mechanism.\n *\n * @template TError\n * Error type.\n */\nexport abstract class LibProxy<ThrowError extends boolean, TError extends ErrorExtends<ThrowError>, TInvocationContext, TBigInt> {\n /**\n * Application extension.\n */\n private readonly _appExtension: AppExtension<ThrowError, TError, TInvocationContext, TBigInt>;\n\n /**\n * Constructor.\n *\n * @param appExtension\n * Application extension.\n */\n constructor(appExtension: AppExtension<ThrowError, TError, TInvocationContext, TBigInt>) {\n this._appExtension = appExtension;\n }\n\n /**\n * Get the application extension.\n */\n protected get appExtension(): AppExtension<ThrowError, TError, TInvocationContext, TBigInt> {\n return this._appExtension;\n }\n\n /**\n * Map big integer to another type if necessary.\n *\n * @param value\n * Big integer value to map.\n *\n * @returns\n * Mapped big integer value.\n */\n mapBigInt(value: bigint): ResultError<TBigInt, ThrowError, TError> {\n return this._appExtension.mapBigInt(value);\n }\n\n /**\n * Handle an error thrown by a function call.\n *\n * @param e\n * Error.\n *\n * @returns\n * Error if errors are not thrown.\n */\n private handleError<TResult>(e: unknown): ResultError<TResult, ThrowError, TError> {\n let result: ResultError<TResult, ThrowError, TError>;\n\n if (e instanceof RangeError) {\n const error = this._appExtension.mapRangeError(e);\n\n if (this._appExtension.throwError) {\n // eslint-disable-next-line @typescript-eslint/no-unsafe-type-assertion -- Type is determined by application mapping.\n throw error as Error;\n }\n\n // eslint-disable-next-line @typescript-eslint/no-unsafe-type-assertion -- Type determination is handled above.\n result = error as ResultError<TResult, ThrowError, TError>;\n } else {\n // Unknown error; pass up the stack.\n // eslint-disable-next-line @typescript-eslint/only-throw-error -- Error is being passed on from elsewhere.\n throw e;\n }\n\n return result;\n }\n\n /**\n * Do the callback for a simple return.\n *\n * @param value\n * Value.\n *\n * @param callback\n * Callback.\n *\n * @returns\n * Callback result or error if errors are not thrown.\n */\n private doCallback<TValue, TResult>(value: TValue, callback: (value: TValue) => TResult): ResultError<TResult, ThrowError, TError> {\n let result: ResultError<TResult, ThrowError, TError>;\n\n try {\n result = callback(value);\n } catch (e: unknown) {\n result = this.handleError(e);\n }\n\n return result;\n }\n\n /**\n * Map a matrix of values using a callback.\n *\n * @param matrixValues\n * Matrix of values.\n *\n * @param callback\n * Callback.\n *\n * @returns\n * Matrix of callback results and errors if errors are not thrown.\n */\n protected mapMatrix<TValue, TResult>(matrixValues: Matrix<TValue>, callback: (value: TValue) => TResult): MatrixResultError<TResult, ThrowError, TError> {\n return matrixValues.map(rowValues => rowValues.map(value => this.doCallback(value, callback)));\n }\n\n /**\n * Do the callback for an array return.\n *\n * @param value\n * Value.\n *\n * @param callback\n * Callback.\n *\n * @returns\n * Callback result or error as array if errors are not thrown.\n */\n private doArrayCallback<TValue, TResult>(value: TValue, callback: (value: TValue) => TResult[]): Array<ResultError<TResult, ThrowError, TError>> {\n const result = this.doCallback(value, callback);\n\n // eslint-disable-next-line @typescript-eslint/no-unsafe-type-assertion -- Type determination is handled.\n return result instanceof Array ? result : [result as ResultError<TResult, ThrowError, TError>];\n }\n\n /**\n * Map a one-dimensional matrix of values using a callback.\n *\n * @param matrixValues\n * Matrix of values.\n *\n * @param callback\n * Callback.\n *\n * @returns\n * Matrix of callback results and errors if errors are not thrown.\n */\n protected mapArray<TValue, TResult>(matrixValues: Matrix<TValue>, callback: (value: TValue) => TResult[]): MatrixResultError<TResult, ThrowError, TError> {\n let matrixResultError: MatrixResultError<TResult, ThrowError, TError>;\n\n if (matrixValues.length === 0) {\n // Special case; unlikely to occur.\n matrixResultError = [[]];\n } else if (matrixValues.length === 1) {\n matrixResultError = [];\n\n matrixValues[0].forEach((value, columnIndex) => {\n const arrayResultError = this.doArrayCallback(value, callback);\n\n arrayResultError.forEach((resultError, rowIndex) => {\n if (matrixResultError.length <= rowIndex) {\n matrixResultError.push([]);\n }\n\n // Assignment will automatically expand array.\n matrixResultError[rowIndex][columnIndex] = resultError;\n });\n });\n } else {\n matrixResultError = matrixValues.map((rowValue) => {\n let arrayResultError: Array<ResultError<TResult, ThrowError, TError>>;\n\n if (rowValue.length === 0) {\n // Special case; unlikely to occur.\n arrayResultError = [];\n } else if (rowValue.length === 1) {\n arrayResultError = this.doArrayCallback(rowValue[0], callback);\n } else {\n arrayResultError = [this.handleError(new RangeError(i18nextAppExtension.t(\"Proxy.matrixMustBeArray\")))];\n }\n\n return arrayResultError;\n });\n }\n\n return matrixResultError;\n }\n\n /**\n * Map a matrix of values to a matrix of strings via a callback that either returns or throws a range error. If the\n * callback returns, the result for that element is the empty string; otherwise, if it's a range error, the result\n * for that element is the error message.\n *\n * @param matrixValues\n * Matrix to map.\n *\n * @param callback\n * Callback that either returns or throws an exception.\n *\n * @returns\n * Matrix of strings.\n *\n * @template TValue\n * Value type.\n */\n protected static mapMatrixRangeError<TValue>(matrixValues: Matrix<TValue>, callback: (value: TValue) => void): Matrix<string> {\n return matrixValues.map(rowValues => rowValues.map((value) => {\n let result: string;\n\n try {\n callback(value);\n\n // No error; return empty string.\n result = \"\";\n } catch (e: unknown) {\n if (e instanceof RangeError) {\n // Library error; return error message.\n result = e.message;\n } else {\n // Unknown error; pass up the stack.\n throw e instanceof Error ?\n e :\n new Error(\"Unknown error\", {\n cause: e\n });\n }\n }\n\n return result;\n }));\n }\n\n /**\n * Convert an iterable result of a callback to a matrix result. Although the natural approach would be to map to a\n * single-element array containing an array of *N* results (i.e., [[r0, r1, r2, ..., r*N*]]), this is rendered\n * visually as a single row. The more readable approach is as a single column, so the mapping is to an *N*-element\n * array of single-element result arrays (i.e., [[r0], [r1], [r2], ..., [r*N*]]).\n *\n * @param iterableResult\n * Iterable result.\n *\n * @returns\n * Matrix of callback results.\n */\n protected static matrixResult<TResult>(iterableResult: Iterable<TResult>): Matrix<TResult> {\n return Array.from(mapIterable(iterableResult, result => [result]));\n }\n}\n","import type { TypedFunction } from \"@aidc-toolkit/core\";\nimport type { AppExtension } from \"./app-extension\";\nimport { LibProxy } from \"./lib-proxy\";\nimport type { ErrorExtends } from \"./type\";\n\n/**\n * Core descriptor.\n */\ninterface Descriptor {\n /**\n * Name.\n */\n readonly name: string;\n}\n\n/**\n * Types supported by proxy methods.\n */\nexport const Types = {\n /**\n * String.\n */\n String: 0,\n\n /**\n * Number or enumeration.\n */\n Number: 1,\n\n /**\n * Boolean.\n */\n Boolean: 2,\n\n /**\n * Any.\n */\n Any: 3\n} as const;\n\n/**\n * Type.\n */\nexport type Type = typeof Types[keyof typeof Types];\n\n/**\n * Type descriptor.\n */\ninterface TypeDescriptor extends Descriptor {\n /**\n * Type.\n */\n readonly type: Type;\n\n /**\n * True if type is a matrix (method accepts or returns a two-dimensional array).\n */\n readonly isMatrix: boolean;\n}\n\n/**\n * Base parameter descriptor; all attributes required.\n */\nexport interface BaseParameterDescriptor extends TypeDescriptor {\n /**\n * True if required.\n */\n readonly isRequired: boolean;\n}\n\n/**\n * Extends parameter descriptor; extends a parameter descriptor and overrides select attributes.\n */\nexport interface ExtendsParameterDescriptor extends Partial<BaseParameterDescriptor> {\n /**\n * Base parameter descriptor that this one extends.\n */\n readonly extendsDescriptor: ParameterDescriptor;\n\n /**\n * Sort order within base parameter descriptor if applicable.\n */\n readonly sortOrder?: number;\n}\n\n/**\n * Parameter descriptor, either base or extends.\n */\nexport type ParameterDescriptor = BaseParameterDescriptor | ExtendsParameterDescriptor;\n\n/**\n * Expand a parameter descriptor to its full form with all required attributes.\n *\n * @param parameterDescriptor\n * Parameter descriptor.\n *\n * @returns\n * Parameter descriptor in its full form.\n */\nexport function expandParameterDescriptor(parameterDescriptor: ParameterDescriptor): BaseParameterDescriptor {\n return !(\"extendsDescriptor\" in parameterDescriptor) ?\n parameterDescriptor :\n {\n ...expandParameterDescriptor(parameterDescriptor.extendsDescriptor),\n ...parameterDescriptor\n };\n}\n\n/**\n * Method descriptor.\n */\nexport interface MethodDescriptor extends TypeDescriptor {\n /**\n * If true, application-specific invocation context is required.\n */\n readonly requiresContext?: boolean;\n\n /**\n * If true, method infix is ignored.\n */\n readonly ignoreInfix?: boolean;\n\n /**\n * String before which method infix appears. If undefined, infix is appended to the method name. Ignored if\n * `ignoreInfix` is true.\n */\n readonly infixBefore?: string;\n\n /**\n * Parameter descriptors.\n */\n readonly parameterDescriptors: readonly ParameterDescriptor[];\n}\n\n/**\n * Class descriptor.\n */\nexport interface ClassDescriptor extends Descriptor {\n /**\n * Class namespace. If not provided, class is at the top level.\n */\n readonly namespace?: string;\n\n /**\n * Method infix. If undefined, method name is generated verbatim.\n */\n readonly methodInfix?: string;\n\n /**\n * Replace parameter descriptors for class hierarchies where enumeration parameter descriptors can change.\n */\n readonly replaceParameterDescriptors?: ReadonlyArray<{\n readonly name: string;\n readonly replacement: ParameterDescriptor;\n }>;\n\n /**\n * Method descriptors.\n */\n readonly methodDescriptors: readonly MethodDescriptor[];\n}\n\n/**\n * Proxy class type with fixed constructor.\n */\ntype ProxyClassType<ThrowError extends boolean, TError extends ErrorExtends<ThrowError>, TInvocationContext, TBigInt, T extends LibProxy<ThrowError, TError, TInvocationContext, TBigInt>> = (new(appExtension: AppExtension<ThrowError, TError, TInvocationContext, TBigInt>) => T) & typeof LibProxy;\n\n/**\n * Pending parameter descriptors, consumed and reset when method is described.\n */\nlet pendingParameterDescriptors: ParameterDescriptor[] = [];\n\n/**\n * Class method descriptors map, keyed on declaration class name and method name.\n */\nconst classMethodsDescriptorsMap = new Map<string, MethodDescriptor[]>();\n\n/**\n * Class descriptors map, keyed on declaration class name.\n */\nconst classDescriptorsMap = new Map<string, ClassDescriptor>();\n\n/**\n * Proxy parameter decorator.\n *\n * @param parameterDescriptor\n * Parameter descriptor.\n *\n * @returns\n * Function defining metadata for the parameter.\n */\nexport function ProxyParameter<ThrowError extends boolean, TError extends ErrorExtends<ThrowError>, TInvocationContext, TBigInt, T extends LibProxy<ThrowError, TError, TInvocationContext, TBigInt>>(parameterDescriptor: ParameterDescriptor): ((target: T, propertyKey: string, parameterIndex: number) => void) {\n return (_target: T, _propertyKey: string, parameterIndex: number) => {\n pendingParameterDescriptors[parameterIndex] = parameterDescriptor;\n };\n}\n\n/**\n * Proxy method decorator.\n *\n * @param methodDescriptor\n * Method descriptor.\n *\n * @returns\n * Function defining metadata for the method.\n */\nexport function ProxyMethod<ThrowError extends boolean, TError extends ErrorExtends<ThrowError>, TInvocationContext, TBigInt, T extends LibProxy<ThrowError, TError, TInvocationContext, TBigInt>>(methodDescriptor: Omit<MethodDescriptor, \"name\" | \"parameterDescriptors\">): ((target: T, propertyKey: string, propertyDescriptor: PropertyDescriptor) => void) {\n return (target: T, propertyKey: string, propertyDescriptor: PropertyDescriptor) => {\n const declarationClassName = target.constructor.name;\n\n // Validate that method descriptor is applied to a function.\n if (typeof propertyDescriptor.value !== \"function\") {\n throw new Error(`${declarationClassName}.${propertyKey} is not a method`);\n }\n\n // eslint-disable-next-line @typescript-eslint/no-unsafe-type-assertion -- Known to be a method.\n const parameterCount = (propertyDescriptor.value as TypedFunction<(...args: unknown[]) => unknown>).length - (!(methodDescriptor.requiresContext ?? false) ? 0 : 1);\n\n let anyOptional = false;\n\n // Validate that all parameters have descriptors.\n for (let index = 0; index < parameterCount; index++) {\n const parameterDescriptor = expandParameterDescriptor(pendingParameterDescriptors[index]);\n\n if (typeof parameterDescriptor === \"undefined\") {\n throw new Error(`Missing parameter descriptor at index ${index} of ${declarationClassName}.${propertyKey}`);\n }\n\n if (!parameterDescriptor.isRequired) {\n anyOptional = true;\n } else if (anyOptional) {\n throw new Error(`Parameter descriptor ${parameterDescriptor.name} at index ${index} of ${declarationClassName}.${propertyKey} is required but prior parameter descriptor ${pendingParameterDescriptors[index - 1].name} is optional`);\n }\n }\n\n let methodDescriptors = classMethodsDescriptorsMap.get(declarationClassName);\n if (methodDescriptors === undefined) {\n methodDescriptors = [];\n classMethodsDescriptorsMap.set(declarationClassName, methodDescriptors);\n }\n\n // Method descriptors array is constructed in reverse order so that final result is in the correct order.\n methodDescriptors.push({\n name: propertyKey,\n ...methodDescriptor,\n parameterDescriptors: pendingParameterDescriptors\n });\n\n pendingParameterDescriptors = [];\n };\n}\n\n/**\n * Proxy class decorator.\n *\n * @param classDescriptor\n * Class descriptor.\n *\n * @returns\n * Function defining metadata for the class.\n */\nexport function ProxyClass<ThrowError extends boolean, TError extends ErrorExtends<ThrowError>, TInvocationContext, TBigInt, T extends LibProxy<ThrowError, TError, TInvocationContext, TBigInt>>(classDescriptor: Omit<ClassDescriptor, \"name\" | \"methodDescriptors\"> = {}): ((classType: ProxyClassType<ThrowError, TError, TInvocationContext, TBigInt, T>) => void) {\n return (classType: ProxyClassType<ThrowError, TError, TInvocationContext, TBigInt, T>) => {\n const methodDescriptorsMap = new Map<string, MethodDescriptor>();\n\n /**\n * Build method descriptors map from every class in hierarchy until LibProxy class is reached.\n *\n * @param classType\n * Class type.\n */\n function buildMethodDescriptorsMap(classType: typeof LibProxy): void {\n // eslint-disable-next-line @typescript-eslint/no-unsafe-type-assertion -- Class hierarchy is known.\n const baseClassType = Object.getPrototypeOf(classType) as typeof LibProxy;\n\n // Start with class furthest up the hierarchy.\n if (baseClassType !== LibProxy) {\n buildMethodDescriptorsMap(baseClassType);\n }\n\n const classMethodDescriptors = classMethodsDescriptorsMap.get(classType.name);\n\n if (classMethodDescriptors !== undefined) {\n for (const classMethodDescriptor of classMethodDescriptors) {\n // If any class overrides a base class method, it will appear in the same position as the base class method.\n methodDescriptorsMap.set(classMethodDescriptor.name, classMethodDescriptor);\n }\n }\n }\n\n buildMethodDescriptorsMap(classType);\n\n let methodDescriptors: MethodDescriptor[];\n\n if (classDescriptor.replaceParameterDescriptors !== undefined) {\n const replacementParameterDescriptorsMap = new Map(classDescriptor.replaceParameterDescriptors.map(replaceParameterDescriptor => [replaceParameterDescriptor.name, replaceParameterDescriptor.replacement]));\n\n // Method descriptors for class have to be built as copies due to possible mutation of parameter descriptors.\n methodDescriptors = Array.from(methodDescriptorsMap.values()).map(methodDescriptor => ({\n ...methodDescriptor,\n parameterDescriptors: methodDescriptor.parameterDescriptors.map(parameterDescriptor => replacementParameterDescriptorsMap.get(expandParameterDescriptor(parameterDescriptor).name) ?? parameterDescriptor)\n }));\n } else {\n methodDescriptors = Array.from(methodDescriptorsMap.values());\n }\n\n classDescriptorsMap.set(classType.name, {\n name: classType.name,\n ...classDescriptor,\n methodDescriptors\n });\n };\n}\n\n/**\n * Get class descriptors map.\n *\n * @returns\n * Class descriptors map.\n */\nexport function getClassDescriptorsMap(): ReadonlyMap<string, ClassDescriptor> {\n return classDescriptorsMap;\n}\n","import { isNullish, type NonNullishable, type Nullishable } from \"@aidc-toolkit/core\";\nimport { type ParameterDescriptor, ProxyClass, ProxyMethod, ProxyParameter, Types } from \"./descriptor\";\nimport { LibProxy } from \"./lib-proxy\";\nimport { i18nextAppExtension } from \"./locale/i18n\";\nimport type { ErrorExtends, Matrix } from \"./type\";\n\nconst spillMatrix: ParameterDescriptor = {\n name: \"spillMatrix\",\n type: Types.Any,\n isMatrix: true,\n isRequired: true\n};\n\nconst spillMaximumParameterDescriptor: ParameterDescriptor = {\n name: \"spillMaximum\",\n type: Types.Number,\n isMatrix: false,\n isRequired: false\n};\n\nconst spillMaximumWidthParameterDescriptor: ParameterDescriptor = {\n extendsDescriptor: spillMaximumParameterDescriptor,\n sortOrder: 0,\n name: \"spillMaximumWidth\"\n};\n\nconst spillMaximumHeightParameterDescriptor: ParameterDescriptor = {\n extendsDescriptor: spillMaximumParameterDescriptor,\n sortOrder: 1,\n name: \"spillMaximumHeight\"\n};\n\n/**\n * Maximum dimensions.\n */\ninterface MaximumDimensions {\n /**\n * Optional maximum width.\n */\n width: Nullishable<number>;\n\n /**\n * Optional maximum height.\n */\n height: Nullishable<number>;\n}\n\n/**\n * Application utilities.\n */\n@ProxyClass()\nexport class AppUtilityProxy<ThrowError extends boolean, TError extends ErrorExtends<ThrowError>, TInvocationContext, TBigInt> extends LibProxy<ThrowError, TError, TInvocationContext, TBigInt> {\n /**\n * Get the version.\n *\n * @returns\n * Version.\n */\n @ProxyMethod({\n type: Types.String,\n isMatrix: false\n })\n version(): string {\n return this.appExtension.version;\n }\n\n /**\n * Provide default values for maximum width and height if required.\n *\n * @param maximumDimensions\n * Maximum dimensions provided to function.\n *\n * @param invocationContext\n * Invocation context.\n *\n * @returns\n * Array of maximum width and maximum height.\n */\n private async defaultMaximums(maximumDimensions: MaximumDimensions, invocationContext: Nullishable<TInvocationContext>): Promise<NonNullishable<MaximumDimensions>> {\n if (isNullish(invocationContext)) {\n // Application error; no localization necessary.\n throw new Error(\"Invocation context not provided by application\");\n }\n\n const maximumWidth = maximumDimensions.width;\n const maximumHeight = maximumDimensions.height;\n\n let definedMaximumWidth: number;\n let definedMaximumHeight: number;\n\n // Skip any extra work if both values are provided.\n if (isNullish(maximumWidth) || isNullish(maximumHeight)) {\n const sheetAddress = await this.appExtension.getSheetAddress(invocationContext);\n\n definedMaximumWidth = maximumWidth ?? await this.appExtension.maximumWidth() - sheetAddress.columnIndex;\n definedMaximumHeight = maximumHeight ?? await this.appExtension.maximumHeight() - sheetAddress.rowIndex;\n } else {\n definedMaximumWidth = maximumWidth;\n definedMaximumHeight = maximumHeight;\n }\n\n return {\n width: definedMaximumWidth,\n height: definedMaximumHeight\n };\n }\n\n /**\n * Spill a horizontal matrix vertically to fit within a maximum width and height.\n *\n * @param hMatrixValues\n * Horizontal matrix values. Matrix has length 1 and contains a single array with the values.\n *\n * @param maximumWidth\n * Maximum width.\n *\n * @param maximumHeight\n * Maximum height.\n *\n * @param invocationContext\n * Invocation context.\n *\n * @returns\n * Matrix spilled within maximum width and maximum height.\n */\n @ProxyMethod({\n requiresContext: true,\n type: Types.Any,\n isMatrix: true\n })\n async vSpill(\n @ProxyParameter(spillMatrix) hMatrixValues: Matrix<unknown>,\n @ProxyParameter(spillMaximumWidthParameterDescriptor) maximumWidth: Nullishable<number>,\n @ProxyParameter(spillMaximumHeightParameterDescriptor) maximumHeight: Nullishable<number>,\n invocationContext: Nullishable<TInvocationContext>\n ): Promise<Matrix<unknown>> {\n let result: Matrix<unknown>;\n\n if (hMatrixValues.length !== 1) {\n throw new RangeError(i18nextAppExtension.t(\"Proxy.vSpillMustBeHorizontalArray\"));\n }\n\n const maximumDimensions = await this.defaultMaximums({\n width: maximumWidth,\n height: maximumHeight\n }, invocationContext);\n\n const hArrayValues = hMatrixValues[0];\n const hLength = hArrayValues.length;\n const maximumArea = maximumDimensions.width * maximumDimensions.height;\n\n // Lengths 0 and 1 are valid and require no special processing.\n if (hLength > 1 && hLength <= maximumArea) {\n // Make spill as square as possible.\n let spillWidth = Math.min(Math.ceil(Math.sqrt(maximumArea)), maximumDimensions.width);\n\n // Array that has a length of a power of 10 is treated specially.\n if (Number.isInteger(Math.log10(hLength))) {\n // Try spill width that is a power of 10.\n const spillWidth10 = Math.pow(10, Math.floor(Math.log10(spillWidth)));\n\n // Keep default if not enough space for power of 10 matrix.\n if (hLength / spillWidth10 <= maximumDimensions.height) {\n spillWidth = spillWidth10;\n }\n }\n\n result = [];\n\n let hStartIndex = 0;\n\n do {\n const hEndIndex = hStartIndex + spillWidth;\n\n result.push(hArrayValues.slice(hStartIndex, hEndIndex));\n\n hStartIndex = hEndIndex;\n } while (hStartIndex < hLength);\n } else {\n // Return matrix unmodified and let application handle spill error if any.\n result = hMatrixValues;\n }\n\n return result;\n }\n\n /**\n * Spill a vertical matrix horizontally to fit within a maximum width and height.\n *\n * @param vMatrixValues\n * Vertical matrix values. Matrix contains arrays of length 1 with the values.\n *\n * @param maximumHeight\n * Maximum height.\n *\n * @param maximumWidth\n * Maximum width.\n *\n * @param invocationContext\n * Invocation context.\n *\n * @returns\n * Matrix spilled within maximum height and maximum width.\n */\n @ProxyMethod({\n requiresContext: true,\n type: Types.Any,\n isMatrix: true\n })\n async hSpill(\n @ProxyParameter(spillMatrix) vMatrixValues: Matrix<unknown>,\n @ProxyParameter(spillMaximumHeightParameterDescriptor) maximumHeight: Nullishable<number>,\n @ProxyParameter(spillMaximumWidthParameterDescriptor) maximumWidth: Nullishable<number>,\n invocationContext: Nullishable<TInvocationContext>\n ): Promise<Matrix<unknown>> {\n let result: Matrix<unknown>;\n\n for (const hArrayValues of vMatrixValues) {\n // This test should be necessary only once but account for zero-size matrix and misuse of method.\n if (hArrayValues.length !== 1) {\n throw new RangeError(i18nextAppExtension.t(\"Proxy.hSpillMustBeVerticalArray\"));\n }\n }\n\n const maximumDimensions = await this.defaultMaximums({\n width: maximumWidth,\n height: maximumHeight\n }, invocationContext);\n\n const vLength = vMatrixValues.length;\n const maximumArea = maximumDimensions.width * maximumDimensions.height;\n\n // Lengths 0 and 1 are valid and require no special processing.\n if (vLength > 1 && vLength <= maximumArea) {\n // Make spill as square as possible.\n let spillHeight = Math.min(Math.ceil(Math.sqrt(maximumArea)), maximumDimensions.height);\n\n // Array that has a length of a power of 10 is treated specially.\n if (Number.isInteger(Math.log10(vLength))) {\n // Try spill height that is a power of 10.\n const spillHeight10 = Math.pow(10, Math.floor(Math.log10(spillHeight)));\n\n // Keep default if not enough space for power of 10 matrix.\n if (vLength / spillHeight10 <= maximumDimensions.width) {\n spillHeight = spillHeight10;\n }\n }\n\n result = [];\n\n for (let rowIndex = 0; rowIndex < spillHeight; rowIndex++) {\n const row = new Array<unknown>();\n\n for (let cellIndex = rowIndex; cellIndex < vLength; cellIndex++) {\n row.push(vMatrixValues[cellIndex][0]);\n }\n\n result.push(row);\n }\n } else {\n // Return matrix unmodified and let application handle spill error if any.\n result = vMatrixValues;\n }\n\n return result;\n }\n}\n","import type { Nullishable } from \"@aidc-toolkit/core\";\nimport { mapIterable, Sequence, Transformer } from \"@aidc-toolkit/utility\";\nimport { type ParameterDescriptor, ProxyClass, ProxyMethod, ProxyParameter, Types } from \"../descriptor\";\nimport { LibProxy } from \"../lib-proxy\";\nimport type { ErrorExtends, Matrix, MatrixResultError, ResultError } from \"../type\";\nimport {\n countParameterDescriptor,\n startValueParameterDescriptor,\n tweakParameterDescriptor,\n valueParameterDescriptor\n} from \"./transformer-descriptor\";\n\nconst domainParameterDescriptor: ParameterDescriptor = {\n name: \"domain\",\n type: Types.Number,\n isMatrix: false,\n isRequired: true\n};\n\n// eslint-disable-next-line no-useless-assignment -- ESLint bug.\nconst transformedValueParameterDescriptor: ParameterDescriptor = {\n extendsDescriptor: valueParameterDescriptor,\n name: \"transformedValue\"\n};\n\n@ProxyClass({\n methodInfix: \"Transform\"\n})\nexport class TransformerProxy<ThrowError extends boolean, TError extends ErrorExtends<ThrowError>, TInvocationContext, TBigInt> extends LibProxy<ThrowError, TError, TInvocationContext, TBigInt> {\n @ProxyMethod({\n type: Types.Number,\n isMatrix: true\n })\n forward(\n @ProxyParameter(domainParameterDescriptor) domain: number | bigint,\n @ProxyParameter(valueParameterDescriptor) matrixValues: Matrix<number | bigint>,\n @ProxyParameter(tweakParameterDescriptor) tweak: Nullishable<number | bigint>\n ): MatrixResultError<ResultError<TBigInt, ThrowError, TError>, ThrowError, TError> {\n const transformer = Transformer.get(domain, tweak ?? undefined);\n\n return this.mapMatrix(matrixValues, value => this.mapBigInt(transformer.forward(value)));\n }\n\n @ProxyMethod({\n infixBefore: \"Sequence\",\n type: Types.Number,\n isMatrix: true\n })\n forwardSequence(\n @ProxyParameter(domainParameterDescriptor) domain: number | bigint,\n @ProxyParameter(startValueParameterDescriptor) startValue: number,\n @ProxyParameter(countParameterDescriptor) count: number,\n @ProxyParameter(tweakParameterDescriptor) tweak: Nullishable<number | bigint>\n ): Matrix<ResultError<TBigInt, ThrowError, TError>> {\n this.appExtension.validateSequenceCount(count);\n\n return LibProxy.matrixResult(mapIterable(Transformer.get(domain, tweak ?? undefined).forward(new Sequence(startValue, count)), value => this.mapBigInt(value)));\n }\n\n @ProxyMethod({\n type: Types.Number,\n isMatrix: true\n })\n reverse(\n @ProxyParameter(domainParameterDescriptor) domain: number | bigint,\n @ProxyParameter(transformedValueParameterDescriptor) matrixTransformedValues: Matrix<number | bigint>,\n @ProxyParameter(tweakParameterDescriptor) tweak: Nullishable<number | bigint>\n ): MatrixResultError<ResultError<TBigInt, ThrowError, TError>, ThrowError, TError> {\n const transformer = Transformer.get(domain, tweak ?? undefined);\n\n return this.mapMatrix(matrixTransformedValues, transformedValue => this.mapBigInt(transformer.reverse(transformedValue)));\n }\n}\n","import { type ParameterDescriptor, Types } from \"../descriptor\";\n\nexport const valueParameterDescriptor: ParameterDescriptor = {\n name: \"value\",\n type: Types.Number,\n isMatrix: true,\n isRequired: true\n};\n\nexport const startValueParameterDescriptor: ParameterDescriptor = {\n extendsDescriptor: valueParameterDescriptor,\n name: \"startValue\",\n isMatrix: false\n};\n\nexport const countParameterDescriptor: ParameterDescriptor = {\n extendsDescriptor: valueParameterDescriptor,\n name: \"count\",\n isMatrix: false\n};\n\nexport const tweakParameterDescriptor: ParameterDescriptor = {\n name: \"tweak\",\n type: Types.Number,\n isMatrix: false,\n isRequired: false\n};\n","import type { Nullishable } from \"@aidc-toolkit/core\";\nimport { RegExpValidator } from \"@aidc-toolkit/utility\";\nimport { type ParameterDescriptor, ProxyClass, ProxyMethod, ProxyParameter, Types } from \"../descriptor\";\nimport type { ErrorExtends, Matrix, MatrixResultError } from \"../type\";\nimport { validateSParameterDescriptor } from \"./string-descriptor\";\nimport { StringProxy } from \"./string-proxy\";\n\nconst regExpParameterDescriptor: ParameterDescriptor = {\n name: \"regExp\",\n type: Types.String,\n isMatrix: false,\n isRequired: true\n};\n\nconst errorMessageParameterDescriptor: ParameterDescriptor = {\n name: \"errorMessage\",\n type: Types.String,\n isMatrix: false,\n isRequired: false\n};\n\n@ProxyClass({\n methodInfix: \"RegExp\"\n})\nexport class RegExpProxy<ThrowError extends boolean, TError extends ErrorExtends<ThrowError>, TInvocationContext, TBigInt> extends StringProxy<ThrowError, TError, TInvocationContext, TBigInt> {\n @ProxyMethod({\n type: Types.String,\n isMatrix: true\n })\n validate(\n @ProxyParameter(regExpParameterDescriptor) regExp: string,\n @ProxyParameter(validateSParameterDescriptor) matrixSs: Matrix<string>,\n @ProxyParameter(errorMessageParameterDescriptor) errorMessage: Nullishable<string>\n ): MatrixResultError<string, ThrowError, TError> {\n return this.validateString(new class extends RegExpValidator {\n protected override createErrorMessage(s: string): string {\n return errorMessage ?? super.createErrorMessage(s);\n }\n }(new RegExp(regExp)), matrixSs);\n }\n\n @ProxyMethod({\n type: Types.Boolean,\n isMatrix: true\n })\n isValid(\n @ProxyParameter(regExpParameterDescriptor) regExp: string,\n @ProxyParameter(validateSParameterDescriptor) matrixSs: Matrix<string>\n ): MatrixResultError<boolean, ThrowError, TError> {\n return this.isValidString(this.validate(regExp, matrixSs, undefined));\n }\n}\n","import { type ParameterDescriptor, Types } from \"../descriptor\";\n\nexport const sParameterDescriptor: ParameterDescriptor = {\n name: \"s\",\n type: Types.String,\n isMatrix: true,\n isRequired: true\n};\n\nexport const validateSParameterDescriptor: ParameterDescriptor = {\n extendsDescriptor: sParameterDescriptor,\n name: \"validateS\"\n};\n","import type { StringValidation, StringValidator } from \"@aidc-toolkit/utility\";\nimport { LibProxy } from \"../lib-proxy\";\nimport type { ErrorExtends, Matrix, MatrixResultError } from \"../type\";\n\nexport abstract class StringProxy<ThrowError extends boolean, TError extends ErrorExtends<ThrowError>, TInvocationContext, TBigInt> extends LibProxy<ThrowError, TError, TInvocationContext, TBigInt> {\n protected validateString<TStringValidation extends StringValidation>(validator: StringValidator<TStringValidation>, matrixSs: Matrix<string>, validation?: TStringValidation): Matrix<string> {\n return LibProxy.mapMatrixRangeError(matrixSs, (s) => {\n validator.validate(s, validation);\n });\n }\n\n protected isValidString(matrixValidateResults: MatrixResultError<string, ThrowError, TError>): MatrixResultError<boolean, ThrowError, TError> {\n return this.mapMatrix(matrixValidateResults, validateResult => validateResult === \"\");\n }\n}\n","import type { Nullishable } from \"@aidc-toolkit/core\";\nimport {\n ALPHABETIC_CREATOR,\n ALPHANUMERIC_CREATOR,\n type CharacterSetCreator,\n type CharacterSetValidation,\n type Exclusion,\n HEXADECIMAL_CREATOR,\n NUMERIC_CREATOR,\n Sequence\n} from \"@aidc-toolkit/utility\";\nimport type { AppExtension } from \"../app-extension\";\nimport {\n expandParameterDescriptor,\n type ParameterDescriptor,\n ProxyClass,\n ProxyMethod,\n ProxyParameter,\n Types\n} from \"../descriptor\";\nimport { LibProxy } from \"../lib-proxy\";\nimport type { ErrorExtends, Matrix, MatrixResultError, ResultError } from \"../type\";\nimport {\n exclusionAnyParameterDescriptor,\n exclusionFirstZeroParameterDescriptor,\n exclusionNoneParameterDescriptor\n} from \"./character-set-descriptor\";\nimport { sParameterDescriptor, validateSParameterDescriptor } from \"./string-descriptor\";\nimport { StringProxy } from \"./string-proxy\";\nimport {\n countParameterDescriptor,\n startValueParameterDescriptor,\n tweakParameterDescriptor,\n valueParameterDescriptor\n} from \"./transformer-descriptor\";\n\nconst lengthParameterDescriptor: ParameterDescriptor = {\n name: \"length\",\n type: Types.Number,\n isMatrix: false,\n isRequired: true\n};\n\nconst valueForSParameterDescriptor: ParameterDescriptor = {\n extendsDescriptor: sParameterDescriptor,\n name: \"valueForS\"\n};\n\nexport abstract class CharacterSetProxy<ThrowError extends boolean, TError extends ErrorExtends<ThrowError>, TInvocationContext, TBigInt> extends StringProxy<ThrowError, TError, TInvocationContext, TBigInt> {\n private readonly _characterSetCreator: CharacterSetCreator;\n\n protected constructor(appExtension: AppExtension<ThrowError, TError, TInvocationContext, TBigInt>, characterSetCreator: CharacterSetCreator) {\n super(appExtension);\n\n this._characterSetCreator = characterSetCreator;\n }\n\n @ProxyMethod({\n type: Types.String,\n isMatrix: true\n })\n validate(\n @ProxyParameter(validateSParameterDescriptor) matrixSs: Matrix<string>,\n @ProxyParameter(exclusionNoneParameterDescriptor) exclusion: Nullishable<Exclusion>\n ): MatrixResultError<string, ThrowError, TError> {\n return this.validateString(this._characterSetCreator, matrixSs, {\n exclusion: exclusion ?? undefined\n } satisfies CharacterSetValidation);\n }\n\n @ProxyMethod({\n type: Types.Boolean,\n isMatrix: true\n })\n isValid(\n @ProxyParameter(validateSParameterDescriptor) matrixSs: Matrix<string>,\n @ProxyParameter(exclusionNoneParameterDescriptor) exclusion: Nullishable<Exclusion>\n ): MatrixResultError<boolean, ThrowError, TError> {\n return this.isValidString(this.validate(matrixSs, exclusion));\n }\n\n @ProxyMethod({\n type: Types.String,\n isMatrix: true\n })\n create(\n @ProxyParameter(lengthParameterDescriptor) length: number,\n @ProxyParameter(valueParameterDescriptor) matrixValues: Matrix<number | bigint>,\n @ProxyParameter(exclusionNoneParameterDescriptor) exclusion: Nullishable<Exclusion>,\n @ProxyParameter(tweakParameterDescriptor) tweak: Nullishable<number | bigint>\n ): MatrixResultError<string, ThrowError, TError> {\n const exclusionOrUndefined = exclusion ?? undefined;\n const tweakOrUndefined = tweak ?? undefined;\n\n return this.mapMatrix(matrixValues, value => this._characterSetCreator.create(length, value, exclusionOrUndefined, tweakOrUndefined));\n }\n\n @ProxyMethod({\n infixBefore: \"Sequence\",\n type: Types.String,\n isMatrix: true\n })\n createSequence(\n @ProxyParameter(lengthParameterDescriptor) length: number,\n @ProxyParameter(startValueParameterDescriptor) startValue: number,\n @ProxyParameter(countParameterDescriptor) count: number,\n @ProxyParameter(exclusionNoneParameterDescriptor) exclusion: Nullishable<Exclusion>,\n @ProxyParameter(tweakParameterDescriptor) tweak: Nullishable<number | bigint>\n ): Matrix<string> {\n this.appExtension.validateSequenceCount(count);\n\n const exclusionOrUndefined = exclusion ?? undefined;\n const tweakOrUndefined = tweak ?? undefined;\n\n return LibProxy.matrixResult(this._characterSetCreator.create(length, new Sequence(startValue, count), exclusionOrUndefined, tweakOrUndefined));\n }\n\n @ProxyMethod({\n type: Types.Number,\n isMatrix: true\n })\n valueFor(\n @ProxyParameter(valueForSParameterDescriptor) matrixSs: Matrix<string>,\n @ProxyParameter(exclusionNoneParameterDescriptor) exclusion: Nullishable<Exclusion>,\n @ProxyParameter(tweakParameterDescriptor) tweak: Nullishable<number | bigint>\n ): MatrixResultError<ResultError<TBigInt, ThrowError, TError>, ThrowError, TError> {\n const exclusionOrUndefined = exclusion ?? undefined;\n const tweakOrUndefined = tweak ?? undefined;\n\n return this.mapMatrix(matrixSs, s => this.mapBigInt(this._characterSetCreator.valueFor(s, exclusionOrUndefined, tweakOrUndefined)));\n }\n}\n\n@ProxyClass({\n methodInfix: \"Numeric\",\n replaceParameterDescriptors: [\n {\n name: expandParameterDescriptor(exclusionNoneParameterDescriptor).name,\n replacement: exclusionFirstZeroParameterDescriptor\n }\n ]\n})\nexport class NumericProxy<ThrowError extends boolean, TError extends ErrorExtends<ThrowError>, TInvocationContext, TBigInt> extends CharacterSetProxy<ThrowError, TError, TInvocationContext, TBigInt> {\n constructor(appExtension: AppExtension<ThrowError, TError, TInvocationContext, TBigInt>) {\n super(appExtension, NUMERIC_CREATOR);\n }\n}\n\n@ProxyClass({\n methodInfix: \"Hexadecimal\",\n replaceParameterDescriptors: [\n {\n name: expandParameterDescriptor(exclusionNoneParameterDescriptor).name,\n replacement: exclusionAnyParameterDescriptor\n }\n ]\n})\nexport class HexadecimalProxy<ThrowError extends boolean, TError extends ErrorExtends<ThrowError>, TInvocationContext, TBigInt> extends CharacterSetProxy<ThrowError, TError, TInvocationContext, TBigInt> {\n constructor(appExtension: AppExtension<ThrowError, TError, TInvocationContext, TBigInt>) {\n super(appExtension, HEXADECIMAL_CREATOR);\n }\n}\n\n@ProxyClass({\n methodInfix: \"Alphabetic\"\n})\nexport class AlphabeticProxy<ThrowError extends boolean, TError extends ErrorExtends<ThrowError>, TInvocationContext, TBigInt> extends CharacterSetProxy<ThrowError, TError, TInvocationContext, TBigInt> {\n constructor(appExtension: AppExtension<ThrowError, TError, TInvocationContext, TBigInt>) {\n super(appExtension, ALPHABETIC_CREATOR);\n }\n}\n\n@ProxyClass({\n methodInfix: \"Alphanumeric\",\n replaceParameterDescriptors: [\n {\n name: expandParameterDescriptor(exclusionNoneParameterDescriptor).name,\n replacement: exclusionAnyParameterDescriptor\n }\n ]\n})\nexport class AlphanumericProxy<ThrowError extends boolean, TError extends ErrorExtends<ThrowError>, TInvocationContext, TBigInt> extends CharacterSetProxy<ThrowError, TError, TInvocationContext, TBigInt> {\n constructor(appExtension: AppExtension<ThrowError, TError, TInvocationContext, TBigInt>) {\n super(appExtension, ALPHANUMERIC_CREATOR);\n }\n}\n","import { type ParameterDescriptor, Types } from \"../descriptor\";\n\nconst exclusionParameterDescriptor: ParameterDescriptor = {\n name: \"exclusion\",\n type: Types.Number,\n isMatrix: false,\n isRequired: false\n};\n\nexport const exclusionNoneParameterDescriptor: ParameterDescriptor = {\n extendsDescriptor: exclusionParameterDescriptor,\n sortOrder: 0,\n name: \"exclusionNone\"\n};\n\nexport const exclusionFirstZeroParameterDescriptor: ParameterDescriptor = {\n extendsDescriptor: exclusionParameterDescriptor,\n sortOrder: 1,\n name: \"exclusionFirstZero\"\n};\n\nexport const exclusionAllNumericParameterDescriptor: ParameterDescriptor = {\n extendsDescriptor: exclusionParameterDescriptor,\n sortOrder: 2,\n name: \"exclusionAllNumeric\"\n};\n\nexport const exclusionAnyParameterDescriptor: ParameterDescriptor = {\n extendsDescriptor: exclusionParameterDescriptor,\n sortOrder: 3,\n name: \"exclusionAny\"\n};\n","export * from \"./character-set-proxy\";\nexport * from \"./check-proxy\";\nexport * from \"./identifier-proxy\";\n","import { AI39_CREATOR, AI82_CREATOR } from \"@aidc-toolkit/gs1\";\nimport type { AppExtension } from \"../app-extension\";\nimport { expandParameterDescriptor, ProxyClass } from \"../descriptor\";\nimport type { ErrorExtends } from \"../type\";\nimport {\n exclusionAllNumericParameterDescriptor,\n exclusionNoneParameterDescriptor\n} from \"../utility/character-set-descriptor\";\nimport { CharacterSetProxy } from \"../utility\";\n\n@ProxyClass({\n namespace: \"GS1\",\n methodInfix: \"AI82\",\n replaceParameterDescriptors: [\n {\n name: expandParameterDescriptor(exclusionNoneParameterDescriptor).name,\n replacement: exclusionAllNumericParameterDescriptor\n }\n ]\n})\nexport class AI82Proxy<ThrowError extends boolean, TError extends ErrorExtends<ThrowError>, TInvocationContext, TBigInt> extends CharacterSetProxy<ThrowError, TError, TInvocationContext, TBigInt> {\n constructor(appExtension: AppExtension<ThrowError, TError, TInvocationContext, TBigInt>) {\n super(appExtension, AI82_CREATOR);\n }\n}\n\n@ProxyClass({\n namespace: \"GS1\",\n methodInfix: \"AI39\",\n replaceParameterDescriptors: [\n {\n name: expandParameterDescriptor(exclusionNoneParameterDescriptor).name,\n replacement: exclusionAllNumericParameterDescriptor\n }\n ]\n})\nexport class AI39Proxy<ThrowError extends boolean, TError extends ErrorExtends<ThrowError>, TInvocationContext, TBigInt> extends CharacterSetProxy<ThrowError, TError, TInvocationContext, TBigInt> {\n constructor(appExtension: AppExtension<ThrowError, TError, TInvocationContext, TBigInt>) {\n super(appExtension, AI39_CREATOR);\n }\n}\n","import {\n checkCharacterPair,\n checkDigit,\n hasValidCheckCharacterPair,\n hasValidCheckDigit,\n isValidPriceOrWeightCheckDigit,\n priceOrWeightCheckDigit\n} from \"@aidc-toolkit/gs1\";\nimport { type ParameterDescriptor, ProxyClass, ProxyMethod, ProxyParameter, Types } from \"../descriptor\";\nimport { LibProxy } from \"../lib-proxy\";\nimport type { ErrorExtends, Matrix, MatrixResultError, ResultError } from \"../type\";\n\nconst checkSParameterDescriptor: ParameterDescriptor = {\n name: \"checkS\",\n type: Types.String,\n isMatrix: true,\n isRequired: true\n};\n\nconst numericSParameterDescriptor: ParameterDescriptor = {\n extendsDescriptor: checkSParameterDescriptor,\n name: \"numericS\"\n};\n\nconst numericSFourOrFiveDigitsParameterDescriptor: ParameterDescriptor = {\n extendsDescriptor: numericSParameterDescriptor,\n sortOrder: 0,\n name: \"numericSFourOrFiveDigits\"\n};\n\nconst numericSWithCheckDigitParameterDescriptor: ParameterDescriptor = {\n extendsDescriptor: numericSParameterDescriptor,\n sortOrder: 1,\n name: \"numericSWithCheckDigit\"\n};\n\nconst checkDigitParameterDescriptor: ParameterDescriptor = {\n extendsDescriptor: numericSParameterDescriptor,\n sortOrder: 2,\n name: \"checkDigit\",\n isMatrix: false\n};\n\nconst ai82SParameterDescriptor: ParameterDescriptor = {\n extendsDescriptor: checkSParameterDescriptor,\n name: \"ai82S\"\n};\n\n// eslint-disable-next-line no-useless-assignment -- ESLint bug.\nconst ai82SWithCheckCharacterPairParameterDescriptor: ParameterDescriptor = {\n extendsDescriptor: ai82SParameterDescriptor,\n name: \"ai82SWithCheckCharacterPair\"\n};\n\n@ProxyClass({\n namespace: \"GS1\"\n})\nexport class CheckProxy<ThrowError extends boolean, TError extends ErrorExtends<ThrowError>, TInvocationContext, TBigInt> extends LibProxy<ThrowError, TError, TInvocationContext, TBigInt> {\n @ProxyMethod({\n type: Types.String,\n isMatrix: true\n })\n checkDigit(\n @ProxyParameter(numericSParameterDescriptor) matrixSs: Matrix<string>\n ): MatrixResultError<string, ThrowError, TError> {\n return this.mapMatrix(matrixSs, s => checkDigit(s));\n }\n\n @ProxyMethod({\n type: Types.String,\n isMatrix: true\n })\n hasValidCheckDigit(\n @ProxyParameter(numericSWithCheckDigitParameterDescriptor) matrixSs: Matrix<string>\n ): MatrixResultError<boolean, ThrowError, TError> {\n return this.mapMatrix(matrixSs, s => hasValidCheckDigit(s));\n }\n\n @ProxyMethod({\n type: Types.String,\n isMatrix: true\n })\n priceOrWeightCheckDigit(\n @ProxyParameter(numericSFourOrFiveDigitsParameterDescriptor) matrixSs: Matrix<string>\n ): MatrixResultError<string, ThrowError, TError> {\n return this.mapMatrix(matrixSs, s => priceOrWeightCheckDigit(s));\n }\n\n @ProxyMethod({\n type: Types.String,\n isMatrix: false\n })\n isValidPriceOrWeightCheckDigit(\n @ProxyParameter({\n ...numericSFourOrFiveDigitsParameterDescriptor,\n isMatrix: false\n }) s: string,\n @ProxyParameter(checkDigitParameterDescriptor) checkDigit: string\n ): ResultError<boolean, ThrowError, TError> {\n return isValidPriceOrWeightCheckDigit(s, checkDigit);\n }\n\n @ProxyMethod({\n type: Types.String,\n isMatrix: true\n })\n checkCharacterPair(\n @ProxyParameter(ai82SParameterDescriptor) matrixSs: Matrix<string>\n ): MatrixResultError<string, ThrowError, TError> {\n return this.mapMatrix(matrixSs, s => checkCharacterPair(s));\n }\n\n @ProxyMethod({\n type: Types.String,\n isMatrix: true\n })\n hasValidCheckCharacterPair(\n @ProxyParameter(ai82SWithCheckCharacterPairParameterDescriptor) matrixSs: Matrix<string>\n ): MatrixResultError<boolean, ThrowError, TError> {\n return this.mapMatrix(matrixSs, s => hasValidCheckCharacterPair(s));\n }\n}\n","import { isNullish, type Nullishable } from \"@aidc-toolkit/core\";\nimport {\n CPID_VALIDATOR,\n GCN_VALIDATOR,\n GDTI_VALIDATOR,\n GIAI_VALIDATOR,\n GINC_VALIDATOR,\n GLN_VALIDATOR,\n GMN_VALIDATOR,\n GRAI_VALIDATOR,\n GSIN_VALIDATOR,\n GSRN_VALIDATOR,\n GTIN12_VALIDATOR,\n GTIN13_VALIDATOR,\n GTIN8_VALIDATOR,\n GTINCreator,\n type GTINLevel,\n GTINValidator,\n type IdentifierCreator,\n type IdentifierValidation,\n type IdentifierValidator,\n type NonGTINNumericIdentifierCreator,\n type NonGTINNumericIdentifierValidator,\n type NonNumericIdentifierCreator,\n type NonNumericIdentifierValidation,\n type NonNumericIdentifierValidator,\n type NumericIdentifierCreator,\n type NumericIdentifierValidator,\n PrefixManager,\n type PrefixType,\n PrefixTypes,\n PrefixValidator,\n type SerializableNumericIdentifierCreator,\n type SerializableNumericIdentifierValidator,\n SSCC_VALIDATOR\n} from \"@aidc-toolkit/gs1\";\nimport { Sequence } from \"@aidc-toolkit/utility\";\nimport type { AppExtension } from \"../app-extension\";\nimport {\n expandParameterDescriptor,\n type ParameterDescriptor,\n ProxyClass,\n ProxyMethod,\n ProxyParameter,\n Types\n} from \"../descriptor\";\nimport { LibProxy } from \"../lib-proxy\";\nimport { i18nextAppExtension } from \"../locale/i18n\";\nimport type { ErrorExtends, Matrix, MatrixResultError } from \"../type\";\nimport { exclusionAllNumericParameterDescriptor } from \"../utility/character-set-descriptor\";\nimport { StringProxy } from \"../utility/string-proxy\";\nimport {\n countParameterDescriptor,\n startValueParameterDescriptor,\n valueParameterDescriptor\n} from \"../utility/transformer-descriptor\";\n\nconst identifierParameterDescriptor: ParameterDescriptor = {\n name: \"identifier\",\n type: Types.String,\n isMatrix: true,\n isRequired: true\n};\n\nconst validateIdentifierParameterDescriptor: ParameterDescriptor = {\n extendsDescriptor: identifierParameterDescriptor,\n sortOrder: 0,\n name: \"validateIdentifier\"\n};\n\nabstract class IdentifierValidatorProxy<ThrowError extends boolean, TError extends ErrorExtends<ThrowError>, TInvocationContext, TBigInt, TIdentifierValidation extends IdentifierValidation, TIdentifierValidator extends IdentifierValidator<TIdentifierValidation>> extends StringProxy<ThrowError, TError, TInvocationContext, TBigInt> {\n private readonly _validator: TIdentifierValidator;\n\n protected constructor(appExtension: AppExtension<ThrowError, TError, TInvocationContext, TBigInt>, validator: TIdentifierValidator) {\n super(appExtension);\n\n this._validator = validator;\n }\n\n protected get validator(): TIdentifierValidator {\n return this._validator;\n }\n}\n\nabstract class NumericIdentifierValidatorProxy<ThrowError extends boolean, TError extends ErrorExtends<ThrowError>, TInvocationContext, TBigInt, TNumericIdentifierValidator extends NumericIdentifierValidator> extends IdentifierValidatorProxy<ThrowError, TError, TInvocationContext, TBigInt, IdentifierValidation, TNumericIdentifierValidator> {\n @ProxyMethod({\n type: Types.String,\n isMatrix: true\n })\n validate(\n @ProxyParameter(validateIdentifierParameterDescriptor) matrixIdentifiers: Matrix<string>\n ): MatrixResultError<string, ThrowError, TError> {\n return this.validateString(this.validator, matrixIdentifiers);\n }\n}\n\nabstract class GTINValidatorProxy<ThrowError extends boolean, TError extends ErrorExtends<ThrowError>, TInvocationContext, TBigInt> extends NumericIdentifierValidatorProxy<ThrowError, TError, TInvocationContext, TBigInt, GTINValidator> {\n}\n\nabstract class NonGTINNumericIdentifierValidatorProxy<ThrowError extends boolean, TError extends ErrorExtends<ThrowError>, TInvocationContext, TBigInt, TNonGTINNumericIdentifierValidator extends NonGTINNumericIdentifierValidator> extends NumericIdentifierValidatorProxy<ThrowError, TError, TInvocationContext, TBigInt, TNonGTINNumericIdentifierValidator> {\n}\n\nabstract class SerializableNumericIdentifierValidatorProxy<ThrowError extends boolean, TError extends ErrorExtends<ThrowError>, TInvocationContext, TBigInt> extends NonGTINNumericIdentifierValidatorProxy<ThrowError, TError, TInvocationContext, TBigInt, SerializableNumericIdentifierValidator> {\n}\n\nabstract class NonNumericIdentifierValidatorProxy<ThrowError extends boolean, TError extends ErrorExtends<ThrowError>, TInvocationContext, TBigInt> extends IdentifierValidatorProxy<ThrowError, TError, TInvocationContext, TBigInt, NonNumericIdentifierValidation, NonNumericIdentifierValidator> {\n @ProxyMethod({\n type: Types.String,\n isMatrix: true\n })\n validate(\n @ProxyParameter(validateIdentifierParameterDescriptor) matrixIdentifiers: Matrix<string>,\n @ProxyParameter(exclusionAllNumericParameterDescriptor) exclusion: Nullishable<NonNumericIdentifierValidation[\"exclusion\"]>\n ): MatrixResultError<string, ThrowError, TError> {\n return this.validateString(this.validator, matrixIdentifiers, {\n exclusion: exclusion ?? undefined\n } satisfies NonNumericIdentifierValidation);\n }\n}\n\n@ProxyClass({\n namespace: \"GS1\",\n methodInfix: \"GTIN13\"\n})\nexport class GTIN13ValidatorProxy<ThrowError extends boolean, TError extends ErrorExtends<ThrowError>, TInvocationContext, TBigInt> extends GTINValidatorProxy<ThrowError, TError, TInvocationContext, TBigInt> {\n constructor(appExtension: AppExtension<ThrowError, TError, TInvocationContext, TBigInt>) {\n super(appExtension, GTIN13_VALIDATOR);\n }\n}\n\n@ProxyClass({\n namespace: \"GS1\",\n methodInfix: \"GTIN12\"\n})\nexport class GTIN12ValidatorProxy<ThrowError extends boolean, TError extends ErrorExtends<ThrowError>, TInvocationContext, TBigInt> extends GTINValidatorProxy<ThrowError, TError, TInvocationContext, TBigInt> {\n constructor(appExtension: AppExtension<ThrowError, TError, TInvocationContext, TBigInt>) {\n super(appExtension, GTIN12_VALIDATOR);\n }\n}\n\n@ProxyClass({\n namespace: \"GS1\",\n methodInfix: \"GTIN8\"\n})\nexport class GTIN8ValidatorProxy<ThrowError extends boolean, TError extends ErrorExtends<ThrowError>, TInvocationContext, TBigInt> extends GTINValidatorProxy<ThrowError, TError, TInvocationContext, TBigInt> {\n constructor(appExtension: AppExtension<ThrowError, TError, TInvocationContext, TBigInt>) {\n super(appExtension, GTIN8_VALIDATOR);\n }\n}\n\nconst zeroSuppressibleGTIN12ParameterDescriptor: ParameterDescriptor = {\n extendsDescriptor: identifierParameterDescriptor,\n name: \"zeroSuppressibleGTIN12\"\n};\n\nconst zeroSuppressedGTIN12ParameterDescriptor: ParameterDescriptor = {\n extendsDescriptor: identifierParameterDescriptor,\n name: \"zeroSuppressedGTIN12\"\n};\n\nconst indicatorDigitParameterDescriptor: ParameterDescriptor = {\n name: \"indicatorDigit\",\n type: Types.String,\n isMatrix: false,\n isRequired: true\n};\n\nconst convertGTINParameterDescriptor: ParameterDescriptor = {\n extendsDescriptor: identifierParameterDescriptor,\n name: \"convertGTIN\"\n};\n\nconst normalizeGTINParameterDescriptor: ParameterDescriptor = {\n extendsDescriptor: identifierParameterDescriptor,\n name: \"normalizeGTIN\"\n};\n\nconst validateGTINParameterDescriptor: ParameterDescriptor = {\n extendsDescriptor: identifierParameterDescriptor,\n name: \"validateGTIN\"\n};\n\nconst gtinLevelParameterDescriptor: ParameterDescriptor = {\n name: \"gtinLevel\",\n type: Types.Number,\n isMatrix: false,\n isRequired: false\n};\n\nconst validateGTIN14ParameterDescriptor: ParameterDescriptor = {\n extendsDescriptor: identifierParameterDescriptor,\n name: \"validateGTIN14\"\n};\n\nconst rcnFormatParameterDescriptor: ParameterDescriptor = {\n name: \"rcnFormat\",\n type: Types.String,\n isMatrix: false,\n isRequired: true\n};\n\nconst rcnParameterDescriptor: ParameterDescriptor = {\n name: \"rcn\",\n type: Types.String,\n isMatrix: true,\n isRequired: true\n};\n\nconst rcnItemReferenceParameterDescriptor: ParameterDescriptor = {\n name: \"rcnItemReference\",\n type: Types.Number,\n isMatrix: false,\n isRequired: true\n};\n\nconst rcnPriceOrWeightParameterDescriptor: ParameterDescriptor = {\n name: \"rcnPriceOrWeight\",\n type: Types.Number,\n isMatrix: true,\n isRequired: true\n};\n\n@ProxyClass({\n namespace: \"GS1\"\n})\nexport class GTINValidatorStaticProxy<ThrowError extends boolean, TError extends ErrorExtends<ThrowError>, TInvocationContext, TBigInt> extends LibProxy<ThrowError, TError, TInvocationContext, TBigInt> {\n @ProxyMethod({\n type: Types.String,\n isMatrix: true\n })\n zeroSuppressGTIN12(\n @ProxyParameter(zeroSuppressibleGTIN12ParameterDescriptor) matrixGTIN12s: Matrix<string>\n ): MatrixResultError<string, ThrowError, TError> {\n return this.mapMatrix(matrixGTIN12s, gtin12 => GTINValidator.zeroSuppress(gtin12));\n }\n\n @ProxyMethod({\n type: Types.String,\n isMatrix: true\n })\n zeroExpandGTIN12(\n @ProxyParameter(zeroSuppressedGTIN12ParameterDescriptor) matrixZeroSuppressedGTIN12s: Matrix<string>\n ): MatrixResultError<string, ThrowError, TError> {\n return this.mapMatrix(matrixZeroSuppressedGTIN12s, zeroSuppressedGTIN12 => GTINValidator.zeroExpand(zeroSuppressedGTIN12));\n }\n\n @ProxyMethod({\n type: Types.String,\n isMatrix: true\n })\n convertToGTIN14(\n @ProxyParameter(indicatorDigitParameterDescriptor) indicatorDigit: string,\n @ProxyParameter(convertGTINParameterDescriptor) matrixGTINs: Matrix<string>\n ): MatrixResultError<string, ThrowError, TError> {\n return this.mapMatrix(matrixGTINs, gtin => GTINValidator.convertToGTIN14(indicatorDigit, gtin));\n }\n\n @ProxyMethod({\n type: Types.String,\n isMatrix: true\n })\n normalizeGTIN(\n @ProxyParameter(normalizeGTINParameterDescriptor) matrixGTINs: Matrix<string>\n ): MatrixResultError<string, ThrowError, TError> {\n return this.mapMatrix(matrixGTINs, gtin => GTINValidator.normalize(gtin));\n }\n\n @ProxyMethod({\n type: Types.String,\n isMatrix: true\n })\n validateGTIN(\n @ProxyParameter(validateGTINParameterDescriptor) matrixGTINs: Matrix<string>,\n @ProxyParameter(gtinLevelParameterDescriptor) gtinLevel: Nullishable<GTINLevel>\n ): Matrix<string> {\n const gtinLevelOrUndefined = gtinLevel ?? undefined;\n\n return LibProxy.mapMatrixRangeError(matrixGTINs, (gtin) => {\n GTINValidator.validateAny(gtin, gtinLevelOrUndefined);\n });\n }\n\n @ProxyMethod({\n type: Types.String,\n isMatrix: true\n })\n validateGTIN14(\n @ProxyParameter(validateGTIN14ParameterDescriptor) matrixGTIN14s: Matrix<string>\n ): Matrix<string> {\n return LibProxy.mapMatrixRangeError(matrixGTIN14s, (gtin14) => {\n GTINValidator.validateGTIN14(gtin14);\n });\n }\n\n @ProxyMethod({\n type: Types.Number,\n isMatrix: true\n })\n parseVariableMeasureRCN(\n @ProxyParameter(rcnFormatParameterDescriptor) format: string,\n @ProxyParameter(rcnParameterDescriptor) matrixRCNs: Matrix<string>\n ): MatrixResultError<number, ThrowError, TError> {\n return this.mapArray(matrixRCNs, (rcn) => {\n const rcnReference = GTINValidator.parseVariableMeasureRCN(format, rcn);\n\n return [rcnReference.itemReference, rcnReference.priceOrWeight];\n });\n }\n}\n\n@ProxyClass({\n namespace: \"GS1\",\n methodInfix: \"GLN\"\n})\nexport class GLNValidatorProxy<ThrowError extends boolean, TError extends ErrorExtends<ThrowError>, TInvocationContext, TBigInt> extends NonGTINNumericIdentifierValidatorProxy<ThrowError, TError, TInvocationContext, TBigInt, NonGTINNumericIdentifierValidator> {\n constructor(appExtension: AppExtension<ThrowError, TError, TInvocationContext, TBigInt>) {\n super(appExtension, GLN_VALIDATOR);\n }\n}\n\n@ProxyClass({\n namespace: \"GS1\",\n methodInfix: \"SSCC\"\n})\nexport class SSCCValidatorProxy<ThrowError extends boolean, TError extends ErrorExtends<ThrowError>, TInvocationContext, TBigInt> extends NonGTINNumericIdentifierValidatorProxy<ThrowError, TError, TInvocationContext, TBigInt, NonGTINNumericIdentifierValidator> {\n constructor(appExtension: AppExtension<ThrowError, TError, TInvocationContext, TBigInt>) {\n super(appExtension, SSCC_VALIDATOR);\n }\n}\n\n@ProxyClass({\n namespace: \"GS1\",\n methodInfix: \"GRAI\"\n})\nexport class GRAIValidatorProxy<ThrowError extends boolean, TError extends ErrorExtends<ThrowError>, TInvocationContext, TBigInt> extends SerializableNumericIdentifierValidatorProxy<ThrowError, TError, TInvocationContext, TBigInt> {\n constructor(appExtension: AppExtension<ThrowError, TError, TInvocationContext, TBigInt>) {\n super(appExtension, GRAI_VALIDATOR);\n }\n}\n\n@ProxyClass({\n namespace: \"GS1\",\n methodInfix: \"GIAI\"\n})\nexport class GIAIValidatorProxy<ThrowError extends boolean, TError extends ErrorExtends<ThrowError>, TInvocationContext, TBigInt> extends NonNumericIdentifierValidatorProxy<ThrowError, TError, TInvocationContext, TBigInt> {\n constructor(appExtension: AppExtension<ThrowError, TError, TInvocationContext, TBigInt>) {\n super(appExtension, GIAI_VALIDATOR);\n }\n}\n\n@ProxyClass({\n namespace: \"GS1\",\n methodInfix: \"GSRN\"\n})\nexport class GSRNValidatorProxy<ThrowError extends boolean, TError extends ErrorExtends<ThrowError>, TInvocationContext, TBigInt> extends NonGTINNumericIdentifierValidatorProxy<ThrowError, TError, TInvocationContext, TBigInt, NonGTINNumericIdentifierValidator> {\n constructor(appExtension: AppExtension<ThrowError, TError, TInvocationContext, TBigInt>) {\n super(appExtension, GSRN_VALIDATOR);\n }\n}\n\n@ProxyClass({\n namespace: \"GS1\",\n methodInfix: \"GDTI\"\n})\nexport class GDTIValidatorProxy<ThrowError extends boolean, TError extends ErrorExtends<ThrowError>, TInvocationContext, TBigInt> extends SerializableNumericIdentifierValidatorProxy<ThrowError, TError, TInvocationContext, TBigInt> {\n constructor(appExtension: AppExtension<ThrowError, TError, TInvocationContext, TBigInt>) {\n super(appExtension, GDTI_VALIDATOR);\n }\n}\n\n@ProxyClass({\n namespace: \"GS1\",\n methodInfix: \"GINC\"\n})\nexport class GINCValidatorProxy<ThrowError extends boolean, TError extends ErrorExtends<ThrowError>, TInvocationContext, TBigInt> extends NonNumericIdentifierValidatorProxy<ThrowError, TError, TInvocationContext, TBigInt> {\n constructor(appExtension: AppExtension<ThrowError, TError, TInvocationContext, TBigInt>) {\n super(appExtension, GINC_VALIDATOR);\n }\n}\n\n@ProxyClass({\n namespace: \"GS1\",\n methodInfix: \"GSIN\"\n})\nexport class GSINValidatorProxy<ThrowError extends boolean, TError extends ErrorExtends<ThrowError>, TInvocationContext, TBigInt> extends NonGTINNumericIdentifierValidatorProxy<ThrowError, TError, TInvocationContext, TBigInt, NonGTINNumericIdentifierValidator> {\n constructor(appExtension: AppExtension<ThrowError, TError, TInvocationContext, TBigInt>) {\n super(appExtension, GSIN_VALIDATOR);\n }\n}\n\n@ProxyClass({\n namespace: \"GS1\",\n methodInfix: \"GCN\"\n})\nexport class GCNValidatorProxy<ThrowError extends boolean, TError extends ErrorExtends<ThrowError>, TInvocationContext, TBigInt> extends SerializableNumericIdentifierValidatorProxy<ThrowError, TError, TInvocationContext, TBigInt> {\n constructor(appExtension: AppExtension<ThrowError, TError, TInvocationContext, TBigInt>) {\n super(appExtension, GCN_VALIDATOR);\n }\n}\n\n@ProxyClass({\n namespace: \"GS1\",\n methodInfix: \"CPID\"\n})\nexport class CPIDValidatorProxy<ThrowError extends boolean, TError extends ErrorExtends<ThrowError>, TInvocationContext, TBigInt> extends NonNumericIdentifierValidatorProxy<ThrowError, TError, TInvocationContext, TBigInt> {\n constructor(appExtension: AppExtension<ThrowError, TError, TInvocationContext, TBigInt>) {\n super(appExtension, CPID_VALIDATOR);\n }\n}\n\n@ProxyClass({\n namespace: \"GS1\",\n methodInfix: \"GMN\"\n})\nexport class GMNValidatorProxy<ThrowError extends boolean, TError extends ErrorExtends<ThrowError>, TInvocationContext, TBigInt> extends NonNumericIdentifierValidatorProxy<ThrowError, TError, TInvocationContext, TBigInt> {\n constructor(appExtension: AppExtension<ThrowError, TError, TInvocationContext, TBigInt>) {\n super(appExtension, GMN_VALIDATOR);\n }\n}\n\nconst prefixParameterDescriptor: ParameterDescriptor = {\n name: \"prefix\",\n type: Types.String,\n isMatrix: false,\n isRequired: true\n};\n\nconst prefixTypeParameterDescriptor: ParameterDescriptor = {\n name: \"prefixType\",\n type: Types.Number,\n isMatrix: false,\n isRequired: false\n};\n\nconst tweakFactorParameterDescriptor: ParameterDescriptor = {\n name: \"tweakFactor\",\n type: Types.Number,\n isMatrix: false,\n isRequired: false\n};\n\nconst prefixDefinitionParameterDescriptor: ParameterDescriptor = {\n name: \"prefixDefinition\",\n type: Types.Any,\n isMatrix: true,\n isRequired: true\n};\n\nconst prefixDefinitionGS1UPCParameterDescriptor: ParameterDescriptor = {\n extendsDescriptor: prefixDefinitionParameterDescriptor,\n name: \"prefixDefinitionGS1UPC\"\n};\n\nconst prefixDefinitionAnyParameterDescriptor: ParameterDescriptor = {\n extendsDescriptor: prefixDefinitionParameterDescriptor,\n name: \"prefixDefinitionAny\"\n};\n\n@ProxyClass({\n namespace: \"GS1\"\n})\nexport class PrefixManagerProxy<ThrowError extends boolean, TError extends ErrorExtends<ThrowError>, TInvocationContext, TBigInt> extends LibProxy<ThrowError, TError, TInvocationContext, TBigInt> {\n @ProxyMethod({\n type: Types.Any,\n isMatrix: true\n })\n definePrefix(\n @ProxyParameter(prefixParameterDescriptor) prefix: string,\n @ProxyParameter(prefixTypeParameterDescriptor) prefixType: Nullishable<PrefixType>,\n @ProxyParameter(tweakFactorParameterDescriptor) tweakFactor: Nullishable<number>\n ): Matrix<unknown> {\n // Parameters will be validated by IdentifierCreatorProxy.getCreator().\n return [[prefix, prefixType, tweakFactor]];\n }\n}\n\nabstract class IdentifierCreatorProxy<ThrowError extends boolean, TError extends ErrorExtends<ThrowError>, TInvocationContext, TBigInt, TIdentifierCreator extends IdentifierCreator> extends LibProxy<ThrowError, TError, TInvocationContext, TBigInt> {\n private static readonly PREFIX_TYPES: PrefixType[] = [PrefixTypes.GS1CompanyPrefix, PrefixTypes.UPCCompanyPrefix, PrefixTypes.GS18Prefix];\n\n private readonly _getCreator: (prefixManager: PrefixManager) => TIdentifierCreator;\n\n protected constructor(appExtension: AppExtension<ThrowError, TError, TInvocationContext, TBigInt>, getCreator: (prefixManager: PrefixManager) => TIdentifierCreator) {\n super(appExtension);\n\n this._getCreator = getCreator;\n }\n\n protected getCreator(prefixDefinition: Matrix<unknown>): TIdentifierCreator {\n const reducedPrefixDefinition = prefixDefinition.length === 1 ?\n // Prefix definition is horizontal.\n prefixDefinition[0] :\n // Prefix definition is vertical.\n prefixDefinition.map((prefixDefinitionRow) => {\n if (prefixDefinitionRow.length !== 1) {\n throw new RangeError(i18nextAppExtension.t(\"IdentifierCreatorProxy.prefixDefinitionMustBeOneDimensional\"));\n }\n\n return prefixDefinitionRow[0];\n });\n\n if (reducedPrefixDefinition.length > 3) {\n throw new RangeError(i18nextAppExtension.t(\"IdentifierCreatorProxy.prefixDefinitionMustHaveMaximumThreeElements\"));\n }\n const prefix = reducedPrefixDefinition[0];\n \n if (typeof prefix !== \"string\") {\n throw new RangeError(i18nextAppExtension.t(\"IdentifierCreatorProxy.prefixMustBeString\"));\n }\n\n const prefixTypeIndex = reducedPrefixDefinition[1] ?? 0;\n\n if (typeof prefixTypeIndex !== \"number\" || prefixTypeIndex < 0 || prefixTypeIndex >= IdentifierCreatorProxy.PREFIX_TYPES.length) {\n throw new RangeError(i18nextAppExtension.t(\"IdentifierCreatorProxy.prefixTypeMustBeNumber\", {\n maximumPrefixType: IdentifierCreatorProxy.PREFIX_TYPES.length - 1\n }));\n }\n\n const prefixManager = PrefixManager.get(IdentifierCreatorProxy.PREFIX_TYPES[prefixTypeIndex], prefix);\n\n const tweakFactor = reducedPrefixDefinition[2];\n \n if (!isNullish(tweakFactor)) {\n if (typeof tweakFactor !== \"number\") {\n throw new RangeError(i18nextAppExtension.t(\"IdentifierCreatorProxy.tweakFactorMustBeNumber\"));\n }\n\n prefixManager.tweakFactor = tweakFactor;\n } else {\n prefixManager.resetTweakFactor();\n }\n \n return this._getCreator(prefixManager);\n }\n}\n\nconst sparseParameterDescriptor: ParameterDescriptor = {\n name: \"sparse\",\n type: Types.Boolean,\n isMatrix: false,\n isRequired: false\n};\n\nabstract class NumericIdentifierCreatorProxy<ThrowError extends boolean, TError extends ErrorExtends<ThrowError>, TInvocationContext, TBigInt, TNumericIdentifierCreator extends NumericIdentifierCreator> extends IdentifierCreatorProxy<ThrowError, TError, TInvocationContext, TBigInt, TNumericIdentifierCreator> {\n @ProxyMethod({\n type: Types.String,\n isMatrix: true\n })\n create(\n @ProxyParameter(prefixDefinitionGS1UPCParameterDescriptor) prefixDefinition: Matrix<unknown>,\n @ProxyParameter(valueParameterDescriptor) matrixValues: Matrix<number | bigint>,\n @ProxyParameter(sparseParameterDescriptor) sparse: Nullishable<boolean>\n ): MatrixResultError<string, ThrowError, TError> {\n const creator = this.getCreator(prefixDefinition);\n\n const sparseOrUndefined = sparse ?? undefined;\n\n return this.mapMatrix(matrixValues, value => creator.create(value, sparseOrUndefined));\n }\n\n @ProxyMethod({\n infixBefore: \"Sequence\",\n type: Types.String,\n isMatrix: true\n })\n createSequence(\n @ProxyParameter(prefixDefinitionGS1UPCParameterDescriptor) prefixDefinition: Matrix<unknown>,\n @ProxyParameter(startValueParameterDescriptor) startValue: number,\n @ProxyParameter(countParameterDescriptor) count: number,\n @ProxyParameter(sparseParameterDescriptor) sparse: Nullishable<boolean>\n ): Matrix<string> {\n this.appExtension.validateSequenceCount(count);\n\n return LibProxy.matrixResult(this.getCreator(prefixDefinition).create(new Sequence(startValue, count), sparse ?? undefined));\n }\n\n @ProxyMethod({\n type: Types.String,\n isMatrix: true\n })\n createAll(\n @ProxyParameter(prefixDefinitionGS1UPCParameterDescriptor) prefixDefinition: Matrix<unknown>\n ): Matrix<string> {\n const creator = this.getCreator(prefixDefinition);\n\n this.appExtension.validateSequenceCount(creator.capacity);\n\n return LibProxy.matrixResult(creator.createAll());\n }\n}\n\nabstract class NonGTINNumericIdentifierCreatorProxy<ThrowError extends boolean, TError extends ErrorExtends<ThrowError>, TInvocationContext, TBigInt, TNonGTINNumericIdentifierCreator extends NonGTINNumericIdentifierCreator> extends NumericIdentifierCreatorProxy<ThrowError, TError, TInvocationContext, TBigInt, TNonGTINNumericIdentifierCreator> {\n}\n\nconst singleValueParameterDescriptor: ParameterDescriptor = {\n extendsDescriptor: valueParameterDescriptor,\n isMatrix: false\n};\n\nconst baseIdentifierParameterDescriptor: ParameterDescriptor = {\n extendsDescriptor: identifierParameterDescriptor,\n name: \"baseIdentifier\",\n isMatrix: false\n};\n\nconst serialComponentParameterDescriptor: ParameterDescriptor = {\n name: \"serialComponent\",\n type: Types.String,\n isMatrix: true,\n isRequired: true\n};\n\nabstract class SerializableNumericIdentifierCreatorProxy<ThrowError extends boolean, TError extends ErrorExtends<ThrowError>, TInvocationContext, TBigInt> extends NonGTINNumericIdentifierCreatorProxy<ThrowError, TError, TInvocationContext, TBigInt, SerializableNumericIdentifierCreator> {\n @ProxyMethod({\n type: Types.String,\n isMatrix: true\n })\n createSerialized(\n @ProxyParameter(prefixDefinitionGS1UPCParameterDescriptor) prefixDefinition: Matrix<unknown>,\n @ProxyParameter(singleValueParameterDescriptor) value: number,\n @ProxyParameter(serialComponentParameterDescriptor) matrixSerialComponents: Matrix<string>,\n @ProxyParameter(sparseParameterDescriptor) sparse: Nullishable<boolean>\n ): MatrixResultError<string, ThrowError, TError> {\n const creator = this.getCreator(prefixDefinition);\n\n const sparseOrUndefined = sparse ?? undefined;\n\n return this.mapMatrix(matrixSerialComponents, serialComponent => creator.createSerialized(value, serialComponent, sparseOrUndefined));\n }\n\n @ProxyMethod({\n type: Types.String,\n isMatrix: true\n })\n concatenate(\n @ProxyParameter(baseIdentifierParameterDescriptor) baseIdentifier: string,\n @ProxyParameter(serialComponentParameterDescriptor) matrixSerialComponents: Matrix<string>\n ): MatrixResultError<string, ThrowError, TError> {\n const creator = this.getCreator([[baseIdentifier.substring(0, !baseIdentifier.startsWith(\"0\") ? PrefixValidator.GS1_COMPANY_PREFIX_MINIMUM_LENGTH : PrefixValidator.UPC_COMPANY_PREFIX_MINIMUM_LENGTH + 1), PrefixTypes.GS1CompanyPrefix]]);\n\n return this.mapMatrix(matrixSerialComponents, serialComponent => creator.concatenate(baseIdentifier, serialComponent));\n }\n}\n\nconst referenceParameterDescriptor: ParameterDescriptor = {\n name: \"reference\",\n type: Types.String,\n isMatrix: true,\n isRequired: true\n};\n\nabstract class NonNumericIdentifierCreatorProxy<ThrowError extends boolean, TError extends ErrorExtends<ThrowError>, TInvocationContext, TBigInt> extends IdentifierCreatorProxy<ThrowError, TError, TInvocationContext, TBigInt, NonNumericIdentifierCreator> {\n @ProxyMethod({\n type: Types.String,\n isMatrix: true\n })\n create(\n @ProxyParameter(prefixDefinitionGS1UPCParameterDescriptor) prefixDefinition: Matrix<unknown>,\n @ProxyParameter(referenceParameterDescriptor) matrixReferences: Matrix<string>\n ): MatrixResultError<string, ThrowError, TError> {\n const creator = this.getCreator(prefixDefinition);\n\n return this.mapMatrix(matrixReferences, reference => creator.create(reference));\n }\n}\n\n@ProxyClass({\n namespace: \"GS1\",\n methodInfix: \"GTIN\",\n replaceParameterDescriptors: [\n {\n name: expandParameterDescriptor(prefixDefinitionGS1UPCParameterDescriptor).name,\n replacement: prefixDefinitionAnyParameterDescriptor\n }\n ]\n})\nexport class GTINCreatorProxy<ThrowError extends boolean, TError extends ErrorExtends<ThrowError>, TInvocationContext, TBigInt> extends NumericIdentifierCreatorProxy<ThrowError, TError, TInvocationContext, TBigInt, GTINCreator> {\n constructor(appExtension: AppExtension<ThrowError, TError, TInvocationContext, TBigInt>) {\n super(appExtension, prefixManager => prefixManager.gtinCreator);\n }\n\n @ProxyMethod({\n type: Types.String,\n isMatrix: true,\n ignoreInfix: true\n })\n createGTIN14(\n @ProxyParameter(indicatorDigitParameterDescriptor) indicatorDigit: string,\n @ProxyParameter(prefixDefinitionAnyParameterDescriptor) prefixDefinition: Matrix<unknown>,\n @ProxyParameter(valueParameterDescriptor) matrixValues: Matrix<number | bigint>,\n @ProxyParameter(sparseParameterDescriptor) sparse: Nullishable<boolean>\n ): MatrixResultError<string, ThrowError, TError> {\n const creator = this.getCreator(prefixDefinition);\n\n const sparseOrUndefined = sparse ?? undefined;\n\n return this.mapMatrix(matrixValues, value => creator.createGTIN14(indicatorDigit, value, sparseOrUndefined));\n }\n\n @ProxyMethod({\n type: Types.String,\n isMatrix: true,\n ignoreInfix: true\n })\n createVariableMeasureRCN(\n @ProxyParameter(rcnFormatParameterDescriptor) format: string,\n @ProxyParameter(rcnItemReferenceParameterDescriptor) itemReference: number,\n @ProxyParameter(rcnPriceOrWeightParameterDescriptor) matrixPricesOrWeights: Matrix<number>\n ): MatrixResultError<string, ThrowError, TError> {\n return this.mapMatrix(matrixPricesOrWeights, priceOrWeight => GTINCreator.createVariableMeasureRCN(format, itemReference, priceOrWeight));\n }\n}\n\n@ProxyClass({\n namespace: \"GS1\",\n methodInfix: \"GLN\"\n})\nexport class GLNCreatorProxy<ThrowError extends boolean, TError extends ErrorExtends<ThrowError>, TInvocationContext, TBigInt> extends NonGTINNumericIdentifierCreatorProxy<ThrowError, TError, TInvocationContext, TBigInt, NonGTINNumericIdentifierCreator> {\n constructor(appExtension: AppExtension<ThrowError, TError, TInvocationContext, TBigInt>) {\n super(appExtension, prefixManager => prefixManager.glnCreator);\n }\n}\n\n@ProxyClass({\n namespace: \"GS1\",\n methodInfix: \"SSCC\"\n})\nexport class SSCCCreatorProxy<ThrowError extends boolean, TError extends ErrorExtends<ThrowError>, TInvocationContext, TBigInt> extends NonGTINNumericIdentifierCreatorProxy<ThrowError, TError, TInvocationContext, TBigInt, NonGTINNumericIdentifierCreator> {\n constructor(appExtension: AppExtension<ThrowError, TError, TInvocationContext, TBigInt>) {\n super(appExtension, prefixManager => prefixManager.ssccCreator);\n }\n}\n\n@ProxyClass({\n namespace: \"GS1\",\n methodInfix: \"GRAI\"\n})\nexport class GRAICreatorProxy<ThrowError extends boolean, TError extends ErrorExtends<ThrowError>, TInvocationContext, TBigInt> extends SerializableNumericIdentifierCreatorProxy<ThrowError, TError, TInvocationContext, TBigInt> {\n constructor(appExtension: AppExtension<ThrowError, TError, TInvocationContext, TBigInt>) {\n super(appExtension, prefixManager => prefixManager.graiCreator);\n }\n}\n\n@ProxyClass({\n namespace: \"GS1\",\n methodInfix: \"GIAI\"\n})\nexport class GIAICreatorProxy<ThrowError extends boolean, TError extends ErrorExtends<ThrowError>, TInvocationContext, TBigInt> extends NonNumericIdentifierCreatorProxy<ThrowError, TError, TInvocationContext, TBigInt> {\n constructor(appExtension: AppExtension<ThrowError, TError, TInvocationContext, TBigInt>) {\n super(appExtension, prefixManager => prefixManager.giaiCreator);\n }\n}\n\n@ProxyClass({\n namespace: \"GS1\",\n methodInfix: \"GSRN\"\n})\nexport class GSRNCreatorProxy<ThrowError extends boolean, TError extends ErrorExtends<ThrowError>, TInvocationContext, TBigInt> extends NonGTINNumericIdentifierCreatorProxy<ThrowError, TError, TInvocationContext, TBigInt, NonGTINNumericIdentifierCreator> {\n constructor(appExtension: AppExtension<ThrowError, TError, TInvocationContext, TBigInt>) {\n super(appExtension, prefixManager => prefixManager.gsrnCreator);\n }\n}\n\n@ProxyClass({\n namespace: \"GS1\",\n methodInfix: \"GDTI\"\n})\nexport class GDTICreatorProxy<ThrowError extends boolean, TError extends ErrorExtends<ThrowError>, TInvocationContext, TBigInt> extends SerializableNumericIdentifierCreatorProxy<ThrowError, TError, TInvocationContext, TBigInt> {\n constructor(appExtension: AppExtension<ThrowError, TError, TInvocationContext, TBigInt>) {\n super(appExtension, prefixManager => prefixManager.gdtiCreator);\n }\n}\n\n@ProxyClass({\n namespace: \"GS1\",\n methodInfix: \"GINC\"\n})\nexport class GINCCreatorProxy<ThrowError extends boolean, TError extends ErrorExtends<ThrowError>, TInvocationContext, TBigInt> extends NonNumericIdentifierCreatorProxy<ThrowError, TError, TInvocationContext, TBigInt> {\n constructor(appExtension: AppExtension<ThrowError, TError, TInvocationContext, TBigInt>) {\n super(appExtension, prefixManager => prefixManager.gincCreator);\n }\n}\n\n@ProxyClass({\n namespace: \"GS1\",\n methodInfix: \"GSIN\"\n})\nexport class GSINCreatorProxy<ThrowError extends boolean, TError extends ErrorExtends<ThrowError>, TInvocationContext, TBigInt> extends NonGTINNumericIdentifierCreatorProxy<ThrowError, TError, TInvocationContext, TBigInt, NonGTINNumericIdentifierCreator> {\n constructor(appExtension: AppExtension<ThrowError, TError, TInvocationContext, TBigInt>) {\n super(appExtension, prefixManager => prefixManager.gsinCreator);\n }\n}\n\n@ProxyClass({\n namespace: \"GS1\",\n methodInfix: \"GCN\"\n})\nexport class GCNCreatorProxy<ThrowError extends boolean, TError extends ErrorExtends<ThrowError>, TInvocationContext, TBigInt> extends SerializableNumericIdentifierCreatorProxy<ThrowError, TError, TInvocationContext, TBigInt> {\n constructor(appExtension: AppExtension<ThrowError, TError, TInvocationContext, TBigInt>) {\n super(appExtension, prefixManager => prefixManager.gcnCreator);\n }\n}\n\n@ProxyClass({\n namespace: \"GS1\",\n methodInfix: \"CPID\"\n})\nexport class CPIDCreatorProxy<ThrowError extends boolean, TError extends ErrorExtends<ThrowError>, TInvocationContext, TBigInt> extends NonNumericIdentifierCreatorProxy<ThrowError, TError, TInvocationContext, TBigInt> {\n constructor(appExtension: AppExtension<ThrowError, TError, TInvocationContext, TBigInt>) {\n super(appExtension, prefixManager => prefixManager.cpidCreator);\n }\n}\n\n@ProxyClass({\n namespace: \"GS1\",\n methodInfix: \"GMN\"\n})\nexport class GMNCreatorProxy<ThrowError extends boolean, TError extends ErrorExtends<ThrowError>, TInvocationContext, TBigInt> extends NonNumericIdentifierCreatorProxy<ThrowError, TError, TInvocationContext, TBigInt> {\n constructor(appExtension: AppExtension<ThrowError, TError, TInvocationContext, TBigInt>) {\n super(appExtension, prefixManager => prefixManager.gmnCreator);\n }\n}\n","import { I18nEnvironments } from \"@aidc-toolkit/core\";\nimport type { ParseKeys } from \"i18next\";\nimport { expandParameterDescriptor, getClassDescriptorsMap } from \"../descriptor\";\nimport { appExtensionResources, i18nAppExtensionInit, i18nextAppExtension } from \"../locale/i18n\";\nimport type {\n FunctionLocalization,\n Localization,\n ParameterLocalization,\n ProxyFunctionDescriptor,\n ProxyObjectDescriptor\n} from \"./descriptor\";\n\n/**\n * Abstract generator.\n */\nexport abstract class Generator {\n /**\n * Documentation base URL.\n */\n private static readonly DOCUMENTATION_BASE_URL = \"https://aidc-toolkit.com/\";\n\n /**\n * Documentation path, optionally preceded by locale.\n */\n private static readonly DOCUMENTATION_PATH = \"app-extension/\";\n\n /**\n * Locales.\n */\n private readonly _locales: readonly string[];\n\n /**\n * Default locale.\n */\n private readonly _defaultLocale: string;\n\n /**\n * Map of function localizations maps by namespace function name.\n */\n private readonly _functionLocalizationsMapsMap = new Map<string, ReadonlyMap<string, FunctionLocalization>>();\n\n /**\n * Map of parameter localizations maps by namespace function parameter name.\n */\n private readonly _parameterLocalizationsMapsMap = new Map<string, ReadonlyMap<string, ParameterLocalization>>();\n\n /**\n *\n */\n\n /**\n * Constructor.\n *\n * @param includeLocalizations\n * Include localizations if true.\n */\n constructor(includeLocalizations = true) {\n this._locales = includeLocalizations ? Object.keys(appExtensionResources) : [];\n this._defaultLocale = this._locales[0] ?? \"\";\n }\n\n /**\n * Get the locales.\n */\n protected get locales(): readonly string[] {\n return this._locales;\n }\n\n /**\n * Get the default locale.\n */\n protected get defaultLocale(): string {\n return this._defaultLocale;\n }\n\n /**\n * Get function localization.\n *\n * @param namespaceFunctionName\n * Namespace function name.\n *\n * @param locale\n * Locale.\n *\n * @returns\n * Function localization.\n */\n protected getFunctionLocalization(namespaceFunctionName: string, locale: string): FunctionLocalization {\n const functionLocalization = this._functionLocalizationsMapsMap.get(namespaceFunctionName)?.get(locale);\n\n if (functionLocalization === undefined) {\n throw new Error(`Localization for function \"${namespaceFunctionName}\", locale \"${locale}\" not found`);\n }\n\n return functionLocalization;\n }\n\n /**\n * Get parameter localization.\n *\n * @param namespaceFunctionName\n * Namespace function name.\n *\n * @param parameterName\n * Parameter name.\n *\n * @param locale\n * Locale.\n *\n * @returns\n * Function localization.\n */\n protected getParameterLocalization(namespaceFunctionName: string, parameterName: string, locale: string): ParameterLocalization {\n const parameterLocalization = this._parameterLocalizationsMapsMap.get(`${namespaceFunctionName}.${parameterName}`)?.get(locale);\n\n if (parameterLocalization === undefined) {\n throw new Error(`Localization for function \"${namespaceFunctionName}\", parameter \"${parameterName}\", locale \"${locale}\" not found`);\n }\n\n return parameterLocalization;\n }\n\n /**\n * Initialize the generation of the output.\n */\n protected abstract initialize(): void;\n\n /**\n * Create a proxy object.\n *\n * @param proxyObjectDescriptor\n * Proxy object descriptor.\n */\n protected abstract createProxyObject(proxyObjectDescriptor: ProxyObjectDescriptor): void;\n\n /**\n * Create a proxy function.\n *\n * @param proxyFunctionDescriptor\n * Proxy function descriptor.\n */\n protected abstract createProxyFunction(proxyFunctionDescriptor: ProxyFunctionDescriptor): void;\n\n /**\n * Finalize the generation of the output.\n *\n * @param success\n * True if successful.\n */\n protected abstract finalize(success: boolean): void | Promise<void>;\n\n /**\n * Generate localizations map.\n *\n * @param localizedKeyPrefix\n * Localized key prefix.\n *\n * @param localizationCallback\n * Callback to finalize localization.\n *\n * @returns\n * Localization map.\n */\n private generateLocalizationsMap<T extends Localization>(localizedKeyPrefix: string, localizationCallback: (locale: string, localization: Localization) => T): ReadonlyMap<string, T> {\n return new Map(this._locales.map((locale) => {\n const lngOption = {\n lng: locale\n };\n\n return [locale, localizationCallback(locale, {\n // eslint-disable-next-line @typescript-eslint/no-unsafe-type-assertion -- Localized key exists.\n name: i18nextAppExtension.t(`${localizedKeyPrefix}name` as ParseKeys, lngOption),\n // eslint-disable-next-line @typescript-eslint/no-unsafe-type-assertion -- Localized key exists.\n description: i18nextAppExtension.t(`${localizedKeyPrefix}description` as ParseKeys, lngOption)\n })];\n }));\n }\n\n /**\n * Generate by processing individual imports.\n */\n async generate(): Promise<void> {\n let success = false;\n\n await i18nAppExtensionInit(I18nEnvironments.CLI);\n\n this.initialize();\n\n try {\n for (const classDescriptor of getClassDescriptorsMap().values()) {\n const namespace = classDescriptor.namespace;\n const namespacePrefix = namespace === undefined ? \"\" : `${namespace}.`;\n const className = classDescriptor.name;\n const methodInfix = classDescriptor.methodInfix;\n\n // Namespace-qualified class name is used to construct object name.\n const namespaceClassName = `${namespacePrefix}${className}`;\n\n // First capture group is:\n // - one or more uppercase letters followed by zero or more numbers; or\n // - single uppercase letter followed by zero or more characters except uppercase letters or period.\n // Second capture group is:\n // - single uppercase letter followed by zero or more characters except period; or\n // - zero characters (empty string).\n // Third capture group, separated by optional period, is:\n // - single uppercase letter followed by zero or more characters (remainder of string); or\n // - zero characters (empty string).\n const classNameMatch = /^([A-Z]+[0-9]*|[A-Z][^A-Z.]*)([A-Z][^.]*|)\\.?([A-Z].*|)$/.exec(namespaceClassName);\n\n if (classNameMatch === null) {\n throw new Error(`${namespaceClassName} is not a valid namespace-qualified class name`);\n }\n\n const proxyObjectDescriptor: ProxyObjectDescriptor = {\n namespace,\n className,\n namespaceClassName,\n classDescriptor,\n objectName: `${classNameMatch[1].toLowerCase()}${classNameMatch[2]}${classNameMatch[3]}`\n };\n\n this.createProxyObject(proxyObjectDescriptor);\n\n for (const methodDescriptor of classDescriptor.methodDescriptors) {\n const methodName = methodDescriptor.name;\n const infixBefore = methodDescriptor.infixBefore;\n\n let functionName: string;\n\n if (methodInfix === undefined || methodDescriptor.ignoreInfix === true) {\n // No other classes in the hierarchy or no infix required.\n functionName = methodName;\n } else if (infixBefore === undefined) {\n // Other classes in the hierarchy and infix is postfix.\n functionName = `${methodName}${methodInfix}`;\n } else {\n const insertIndex = methodName.indexOf(infixBefore);\n\n if (insertIndex === -1) {\n throw new Error(`Cannot find \"${infixBefore}\" in method name ${methodName}`);\n }\n\n // Other classes in the hierarchy and infix is in the middle of the string.\n functionName = `${methodName.substring(0, insertIndex)}${methodInfix}${methodName.substring(insertIndex)}`;\n }\n\n const namespaceFunctionName = `${namespacePrefix}${functionName}`;\n\n const functionLocalizationsMap = this.generateLocalizationsMap<FunctionLocalization>(`Functions.${namespaceFunctionName}.`, (locale, localization) => ({\n ...localization,\n documentationURL: `${Generator.DOCUMENTATION_BASE_URL}${locale === this.defaultLocale ? \"\" : `${locale}/`}${Generator.DOCUMENTATION_PATH}${namespace === undefined ? \"\" : `${namespace}/`}${localization.name}.html`\n }));\n\n this._functionLocalizationsMapsMap.set(namespaceFunctionName, functionLocalizationsMap);\n\n this.createProxyFunction({\n ...proxyObjectDescriptor,\n functionName,\n namespaceFunctionName,\n localizationsMap: functionLocalizationsMap,\n proxyParameterDescriptors: methodDescriptor.parameterDescriptors.map((parameterDescriptor) => {\n const expandedParameterDescriptor = expandParameterDescriptor(parameterDescriptor);\n\n const parameterName = expandedParameterDescriptor.name;\n\n const parameterLocalizationsMap = this.generateLocalizationsMap(`Parameters.${parameterName}.`, (_locale, localization) => localization);\n\n this._parameterLocalizationsMapsMap.set(`${namespaceFunctionName}.${parameterName}`, parameterLocalizationsMap);\n\n return {\n namespace,\n parameterName,\n localizationsMap: parameterLocalizationsMap,\n parameterDescriptor: expandedParameterDescriptor\n };\n }),\n methodDescriptor\n });\n }\n }\n\n success = true;\n } finally {\n await this.finalize(success);\n }\n }\n}\n"],"mappings":"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","names":["locale_resources_default","locale_resources_default","classType","mapIterable","mapIterable","Sequence","Sequence","checkDigit","isNullish","Sequence","isNullish","Sequence"]}
1
+ {"version":3,"sources":["../src/locale/i18n.ts","../src/locale/en/locale-resources.ts","../src/locale/fr/locale-resources.ts","../src/app-extension.ts","../src/lib-proxy.ts","../src/descriptor.ts","../src/app-utility-proxy.ts","../src/utility/index.ts","../src/utility/transformer-proxy.ts","../src/utility/transformer-descriptor.ts","../src/utility/reg-exp-proxy.ts","../src/utility/string-descriptor.ts","../src/utility/string-proxy.ts","../src/utility/character-set-proxy.ts","../src/utility/character-set-descriptor.ts","../src/gs1/index.ts","../src/gs1/character-set-proxy.ts","../src/gs1/check-proxy.ts","../src/gs1/identifier-proxy.ts","../src/generator/generator.ts"],"sourcesContent":["import { i18nCoreInit, type I18nEnvironment } from \"@aidc-toolkit/core\";\nimport { gs1Resources, i18nGS1Init } from \"@aidc-toolkit/gs1\";\nimport { i18nUtilityInit, utilityResources } from \"@aidc-toolkit/utility\";\nimport i18next, { type i18n, type Resource } from \"i18next\";\nimport enLocaleResources from \"./en/locale-resources.js\";\nimport frLocaleResources from \"./fr/locale-resources.js\";\n\nexport const appExtensionNS = \"aidct_app_extension\";\n\n/**\n * Locale resources type is extracted from the English locale resources object.\n */\nexport type AppExtensionLocaleResources = typeof enLocaleResources;\n\n/**\n * App extension resources.\n */\nexport const appExtensionResources: Resource = {\n en: {\n aidct_app_extension: enLocaleResources\n },\n fr: {\n aidct_app_extension: frLocaleResources\n }\n};\n\n// Explicit type is necessary because type can't be inferred without additional references.\nexport const i18nextAppExtension: i18n = i18next.createInstance();\n\n/**\n * Initialize internationalization.\n *\n * @param environment\n * Environment in which the application is running.\n *\n * @param debug\n * Debug setting.\n *\n * @returns\n * Void promise.\n */\nexport async function i18nAppExtensionInit(environment: I18nEnvironment, debug = false): Promise<void> {\n await i18nUtilityInit(environment, debug);\n await i18nGS1Init(environment, debug);\n await i18nCoreInit(i18nextAppExtension, environment, debug, appExtensionNS, utilityResources, gs1Resources, appExtensionResources);\n}\n","export default {\n AppExtension: {\n sequenceCountMustBeLessThanOrEqualTo: \"Sequence count {{sequenceCount, number}} must be less than or equal to {{maximumSequenceCount, number}}\"\n },\n Proxy: {\n vSpillMustBeHorizontalArray: \"Input must be a horizontal array\",\n hSpillMustBeVerticalArray: \"Input must be a vertical array\",\n matrixMustBeArray: \"Input must be a one-dimensional array\"\n },\n IdentifierCreatorProxy: {\n prefixDefinitionMustBeOneDimensional: \"Prefix definition must be a one-dimensional matrix\",\n prefixDefinitionMustHaveMaximumThreeElements: \"Prefix definition must have a maximum of 3 elements\",\n prefixMustBeString: \"Prefix must be a string\",\n prefixTypeMustBeNumber: \"Prefix type must be a number in the range of 0 to {{maximumPrefixType, number}}\",\n invalidPrefixType: \"Invalid prefix type\",\n tweakFactorMustBeNumber: \"Tweak factor must be a number\"\n },\n Parameters: {\n spillMatrix: {\n name: \"matrix\",\n description: \"One-dimensional matrix to spill.\"\n },\n spillMaximumWidth: {\n name: \"maximumWidth\",\n description: \"Maximum width into which to spill the matrix. If not provided, the remaining width is used.\"\n },\n spillMaximumHeight: {\n name: \"maximumHeight\",\n description: \"Maximum height into which to spill the matrix. If not provided, the remaining height is used.\"\n },\n domain: {\n name: \"domain\",\n description: \"Transformation domain. Valid input values are from zero to domain-1.\"\n },\n value: {\n name: \"value\",\n description: \"Value to transform.\"\n },\n startValue: {\n name: \"startValue\",\n description: \"Start value of a domain of values to transform.\"\n },\n count: {\n name: \"count\",\n description: \"Count of values to transform. If positive, values transformed are startValue to startValue+count-1. If negative, values transformed are startValue down to startValue+count+1.\"\n },\n transformedValue: {\n name: \"transformedValue\",\n description: \"Previous output value of a transformation.\"\n },\n tweak: {\n name: \"tweak\",\n description: \"Value by which to tweak the transformation. If not provided or zero, the output is sequential. Otherwise, the output is encrypted in such a way as to appear random, masking the values used as inputs to the sequence.\"\n },\n regExp: {\n name: \"regExp\",\n description: \"Regular expression against which to validate a string.\"\n },\n validateS: {\n name: \"s\",\n description: \"String to validate.\"\n },\n valueForS: {\n name: \"s\",\n description: \"String for which to determine the value.\"\n },\n errorMessage: {\n name: \"errorMessage\",\n description: \"Custom error message to use if validation fails. If not provided, an internal error message is used.\"\n },\n exclusionNone: {\n name: \"exclusion\",\n description: \"String values to exclude. The only valid value is 0 (no exclusions).\"\n },\n exclusionFirstZero: {\n name: \"exclusion\",\n description: \"String values to exclude. Valid values are 0 (no exclusions) and 1 (strings starting with 0 excluded).\"\n },\n exclusionAllNumeric: {\n name: \"exclusion\",\n description: \"String values to exclude. Valid values are 0 (no exclusions) and 2 (strings that are all numeric excluded).\"\n },\n exclusionAny: {\n name: \"exclusion\",\n description: \"String values to exclude. Valid values are 0 (no exclusions), 1 (strings starting with 0 excluded), and 2 (strings that are all numeric excluded).\"\n },\n length: {\n name: \"length\",\n description: \"Length of string to create.\"\n },\n numericS: {\n name: \"s\",\n description: \"Numeric string.\"\n },\n numericSFourOrFiveDigits: {\n name: \"s\",\n description: \"Four- or five-digit numeric string.\"\n },\n numericSWithCheckDigit: {\n name: \"s\",\n description: \"Numeric string with check digit.\"\n },\n checkDigit: {\n name: \"checkDigit\",\n description: \"Check digit.\"\n },\n ai82S: {\n name: \"s\",\n description: \"GS1 AI encodable character set 82 string.\"\n },\n ai82SWithCheckCharacterPair: {\n name: \"s\",\n description: \"GS1 AI encodable character set 82 string with check character pair.\"\n },\n validateIdentifier: {\n name: \"identifier\",\n description: \"Identifier to validate.\"\n },\n zeroSuppressibleGTIN12: {\n name: \"gtin12\",\n description: \"GTIN-12 for which to suppress zeros.\"\n },\n zeroSuppressedGTIN12: {\n name: \"zeroSuppressedGTIN12\",\n description: \"Zero-suppressed GTIN-12 to expand.\"\n },\n convertGTIN: {\n name: \"gtin\",\n description: \"GTIN to convert to GTIN-14.\"\n },\n normalizeGTIN: {\n name: \"gtin\",\n description: \"GTIN to normalize.\"\n },\n validateGTIN: {\n name: \"gtin\",\n description: \"GTIN to validate.\"\n },\n validateGTIN14: {\n name: \"gtin14\",\n description: \"GTIN-14 to validate.\"\n },\n baseIdentifier: {\n name: \"baseIdentifier\",\n description: \"Base identifier.\"\n },\n indicatorDigit: {\n name: \"indicatorDigit\",\n description: \"Indicator digit.\"\n },\n gtinLevel: {\n name: \"level\",\n description: \"Level at which to validate the GTIN. Valid values are 0 (any), 1 (retail consumer trade item), and 2 (other than retail consumer trade item level).\"\n },\n rcnFormat: {\n name: \"format\",\n description: \"Restricted Circulation Number format.\"\n },\n rcn: {\n name: \"rcn\",\n description: \"Restricted Circulation Number to parse.\"\n },\n prefix: {\n name: \"prefix\",\n description: \"Prefix.\"\n },\n prefixType: {\n name: \"prefixType\",\n description: \"Prefix type. Valid values are 0 (GS1 Company Prefix), 1 (U.P.C. Company Prefix), and 2 (GS1 Prefix).\"\n },\n tweakFactor: {\n name: \"tweakFactor\",\n description: \"Tweak factor, used to support the creation of sparse identifiers. The default tweak factor is based on the GS1 Company Prefix, and is usually sufficient for obfuscation. This allows more control over the encryption when higher security is required.\"\n },\n prefixDefinitionAny: {\n name: \"prefixDefinition\",\n description: \"Prefix definition, either a simple GS1 Company Prefix (as a string) or the result of a call to definePrefix. Any prefix type is supported.\"\n },\n prefixDefinitionGS1UPC: {\n name: \"prefixDefinition\",\n description: \"Prefix definition, either a simple GS1 Company Prefix (as a string) or the result of a call to definePrefix. Only prefix types 0 (GS1 Company Prefix) and 1 (U.P.C. Company Prefix) are supported.\"\n },\n sparse: {\n name: \"sparse\",\n description: \"If true, value is mapped to a sparse sequence resistant to discovery. Default is false.\"\n },\n rcnItemReference: {\n name: \"itemReference\",\n description: \"Item reference.\"\n },\n rcnPriceOrWeight: {\n name: \"priceOrWeight\",\n description: \"Price or weight (whole number only).\"\n },\n serialComponent: {\n name: \"serialComponent\",\n description: \"Serial component.\"\n },\n reference: {\n name: \"reference\",\n description: \"Reference portion of identifier.\"\n }\n },\n Functions: {\n version: {\n name: \"version\",\n description: \"Get the version of the AIDC Toolkit.\"\n },\n vSpill: {\n name: \"vSpill\",\n description: \"Spill a horizontal array vertically to fit within a given maximum width and height.\"\n },\n hSpill: {\n name: \"hSpill\",\n description: \"Spill a vertical array horizontally to fit within a given maximum height and width.\"\n },\n forwardTransform: {\n name: \"forwardTransform\",\n description: \"Transform a value forward.\"\n },\n forwardTransformSequence: {\n name: \"forwardTransformSequence\",\n description: \"Transform a sequence of values forward.\"\n },\n reverseTransform: {\n name: \"reverseTransform\",\n description: \"Transform a value in reverse.\"\n },\n validateRegExp: {\n name: \"validateRegExp\",\n description: \"Validate a string against a regular expression.\"\n },\n isValidRegExp: {\n name: \"isValidRegExp\",\n description: \"Determine if a string is valid against a regular expression.\"\n },\n validateNumeric: {\n name: \"validateNumeric\",\n description: \"Validate a numeric string.\"\n },\n isValidNumeric: {\n name: \"isValidNumeric\",\n description: \"Determine if a string is numeric.\"\n },\n createNumeric: {\n name: \"createNumeric\",\n description: \"Create a numeric string.\"\n },\n createNumericSequence: {\n name: \"createNumericSequence\",\n description: \"Create a sequence of numeric strings.\"\n },\n valueForNumeric: {\n name: \"valueForNumeric\",\n description: \"Get the value for a numeric string.\"\n },\n validateHexadecimal: {\n name: \"validateHexadecimal\",\n description: \"Validate a hexadecimal string.\"\n },\n isValidHexadecimal: {\n name: \"isValidHexadecimal\",\n description: \"Determine if a string is hexadecimal.\"\n },\n createHexadecimal: {\n name: \"createHexadecimal\",\n description: \"Create a hexadecimal string.\"\n },\n createHexadecimalSequence: {\n name: \"createHexadecimalSequence\",\n description: \"Create a sequence of hexadecimal strings.\"\n },\n valueForHexadecimal: {\n name: \"valueForHexadecimal\",\n description: \"Get the value for a hexadecimal string.\"\n },\n validateAlphabetic: {\n name: \"validateAlphabetic\",\n description: \"Validate an alphabetic string.\"\n },\n isValidAlphabetic: {\n name: \"isValidAlphabetic\",\n description: \"Determine if a string is alphabetic.\"\n },\n createAlphabetic: {\n name: \"createAlphabetic\",\n description: \"Create an alphabetic string.\"\n },\n createAlphabeticSequence: {\n name: \"createAlphabeticSequence\",\n description: \"Create a sequence of alphabetic strings.\"\n },\n valueForAlphabetic: {\n name: \"valueForAlphabetic\",\n description: \"Get the value for an alphabetic string.\"\n },\n validateAlphanumeric: {\n name: \"validateAlphanumeric\",\n description: \"Validate an alphanumeric string.\"\n },\n isValidAlphanumeric: {\n name: \"isValidAlphanumeric\",\n description: \"Determine if a string is alphanumeric.\"\n },\n createAlphanumeric: {\n name: \"createAlphanumeric\",\n description: \"Create an alphanumeric string.\"\n },\n createAlphanumericSequence: {\n name: \"createAlphanumericSequence\",\n description: \"Create a sequence of alphanumeric strings.\"\n },\n valueForAlphanumeric: {\n name: \"valueForAlphanumeric\",\n description: \"Get the value for an alphanumeric string.\"\n },\n GS1: {\n validateAI82: {\n name: \"validateAI82\",\n description: \"Validate a GS1 AI 82 encodable character set string.\"\n },\n isValidAI82: {\n name: \"isValidAI82\",\n description: \"Determine if a string is GS1 AI 82 encodable character set.\"\n },\n createAI82: {\n name: \"createAI82\",\n description: \"Create a GS1 AI 82 encodable character set string.\"\n },\n createAI82Sequence: {\n name: \"createAI82Sequence\",\n description: \"Create a sequence of GS1 AI 82 encodable character set strings.\"\n },\n valueForAI82: {\n name: \"valueForAI82\",\n description: \"Get the value for a GS1 AI 82 encodable character set string.\"\n },\n validateAI39: {\n name: \"validateAI39\",\n description: \"Validate a GS1 AI 39 encodable character set string.\"\n },\n isValidAI39: {\n name: \"isValidAI39\",\n description: \"Determine if a string is GS1 AI 39 encodable character set.\"\n },\n createAI39: {\n name: \"createAI39\",\n description: \"Create a GS1 AI 39 encodable character set string.\"\n },\n createAI39Sequence: {\n name: \"createAI39Sequence\",\n description: \"Create a sequence of GS1 AI 39 encodable character set strings.\"\n },\n valueForAI39: {\n name: \"valueForAI39\",\n description: \"Get the value for a GS1 AI 39 encodable character set string.\"\n },\n validateAI64: {\n name: \"validateAI64\",\n description: \"Validate a GS1 AI 64 encodable character set string.\"\n },\n isValidAI64: {\n name: \"isValidAI64\",\n description: \"Determine if a string is GS1 AI 64 encodable character set.\"\n },\n checkDigit: {\n name: \"checkDigit\",\n description: \"Calculate the check digit for a numeric string.\"\n },\n hasValidCheckDigit: {\n name: \"hasValidCheckDigit\",\n description: \"Determine if a string has a valid check digit.\"\n },\n priceOrWeightCheckDigit: {\n name: \"priceOrWeightCheckDigit\",\n description: \"Calculate the check digit for a price or weight.\"\n },\n isValidPriceOrWeightCheckDigit: {\n name: \"isValidPriceOrWeightCheckDigit\",\n description: \"Determine if a price or weight check digit is valid.\"\n },\n checkCharacterPair: {\n name: \"checkCharacterPair\",\n description: \"Calculate the check character pair for a GS1 AI 82 encodable character set string.\"\n },\n hasValidCheckCharacterPair: {\n name: \"hasValidCheckCharacterPair\",\n description: \"Determine if a GS1 AI 82 encodable character set string has a valid check character pair.\"\n },\n validateGTIN13: {\n name: \"validateGTIN13\",\n description: \"Validate a GTIN-13.\"\n },\n validateGTIN12: {\n name: \"validateGTIN12\",\n description: \"Validate a GTIN-12.\"\n },\n validateGTIN8: {\n name: \"validateGTIN8\",\n description: \"Validate a GTIN-8.\"\n },\n zeroSuppressGTIN12: {\n name: \"zeroSuppressGTIN12\",\n description: \"Zero-suppress a GTIN-12.\"\n },\n zeroExpandGTIN12: {\n name: \"zeroExpandGTIN12\",\n description: \"Expand a zero-suppressed GTIN-12.\"\n },\n convertToGTIN14: {\n name: \"convertToGTIN14\",\n description: \"Convert a GTIN to GTIN-14.\"\n },\n normalizeGTIN: {\n name: \"normalizeGTIN\",\n description: \"Normalize a GTIN.\"\n },\n validateGTIN: {\n name: \"validateGTIN\",\n description: \"Validate any GTIN.\"\n },\n validateGTIN14: {\n name: \"validateGTIN14\",\n description: \"Validate a GTIN-14.\"\n },\n parseVariableMeasureRCN: {\n name: \"parseVariableMeasureRCN\",\n description: \"Parse a Restricted Circulation Number (RCN) using a variable measure trade item format.\"\n },\n validateGLN: {\n name: \"validateGLN\",\n description: \"Validate a GLN.\"\n },\n validateSSCC: {\n name: \"validateSSCC\",\n description: \"Validate an SSCC.\"\n },\n validateGRAI: {\n name: \"validateGRAI\",\n description: \"Validate a GRAI.\"\n },\n validateGIAI: {\n name: \"validateGIAI\",\n description: \"Validate a GIAI.\"\n },\n validateGSRN: {\n name: \"validateGSRN\",\n description: \"Validate a GSRN.\"\n },\n validateGDTI: {\n name: \"validateGDTI\",\n description: \"Validate a GDTI.\"\n },\n validateGINC: {\n name: \"validateGINC\",\n description: \"Validate a GINC.\"\n },\n validateGSIN: {\n name: \"validateGSIN\",\n description: \"Validate a GSIN.\"\n },\n validateGCN: {\n name: \"validateGCN\",\n description: \"Validate a GCN.\"\n },\n validateCPID: {\n name: \"validateCPID\",\n description: \"Validate a CPID.\"\n },\n validateGMN: {\n name: \"validateGMN\",\n description: \"Validate a GMN.\"\n },\n definePrefix: {\n name: \"definePrefix\",\n description: \"Define a prefix for use in GS1 identifier creation functions.\"\n },\n createGTIN: {\n name: \"createGTIN\",\n description: \"Create a GTIN.\"\n },\n createGTINSequence: {\n name: \"createGTINSequence\",\n description: \"Create a sequence of GTINs.\"\n },\n createAllGTIN: {\n name: \"createAllGTIN\",\n description: \"Create all GTINs for a prefix.\"\n },\n createGTIN14: {\n name: \"createGTIN14\",\n description: \"Create a GTIN-14.\"\n },\n createVariableMeasureRCN: {\n name: \"createVariableMeasureRCN\",\n description: \"Create a variable measure Restricted Circulation Number (RCN).\"\n },\n createGLN: {\n name: \"createGLN\",\n description: \"Create a GLN.\"\n },\n createGLNSequence: {\n name: \"createGLNSequence\",\n description: \"Create a sequence of GLNs.\"\n },\n createAllGLN: {\n name: \"createAllGLN\",\n description: \"Create all GLNs for a prefix.\"\n },\n createSSCC: {\n name: \"createSSCC\",\n description: \"Create an SSCC.\"\n },\n createSSCCSequence: {\n name: \"createSSCCSequence\",\n description: \"Create a sequence of SSCCs.\"\n },\n createAllSSCC: {\n name: \"createAllSSCC\",\n description: \"Create all SSCCs for a prefix.\"\n },\n createGRAI: {\n name: \"createGRAI\",\n description: \"Create a GRAI.\"\n },\n createGRAISequence: {\n name: \"createGRAISequence\",\n description: \"Create a sequence of GRAIs.\"\n },\n createAllGRAI: {\n name: \"createAllGRAI\",\n description: \"Create all GRAIs for a prefix.\"\n },\n createSerializedGRAI: {\n name: \"createSerializedGRAI\",\n description: \"Create a serialized GRAI.\"\n },\n concatenateGRAI: {\n name: \"concatenateGRAI\",\n description: \"Concatenate a base GRAI with a serial component.\"\n },\n createGIAI: {\n name: \"createGIAI\",\n description: \"Create a GIAI.\"\n },\n createGSRN: {\n name: \"createGSRN\",\n description: \"Create a GSRN.\"\n },\n createGSRNSequence: {\n name: \"createGSRNSequence\",\n description: \"Create a sequence of GSRNs.\"\n },\n createAllGSRN: {\n name: \"createAllGSRN\",\n description: \"Create all GSRNs for a prefix.\"\n },\n createGDTI: {\n name: \"createGDTI\",\n description: \"Create a GDTI.\"\n },\n createGDTISequence: {\n name: \"createGDTISequence\",\n description: \"Create a sequence of GDTIs.\"\n },\n createAllGDTI: {\n name: \"createAllGDTI\",\n description: \"Create all GDTIs for a prefix.\"\n },\n createSerializedGDTI: {\n name: \"createSerializedGDTI\",\n description: \"Create a serialized GDTI.\"\n },\n concatenateGDTI: {\n name: \"concatenateGDTI\",\n description: \"Concatenate a base GDTI with a serial component.\"\n },\n createGINC: {\n name: \"createGINC\",\n description: \"Create a GINC.\"\n },\n createGSIN: {\n name: \"createGSIN\",\n description: \"Create a GSIN.\"\n },\n createGSINSequence: {\n name: \"createGSINSequence\",\n description: \"Create a sequence of GSINs.\"\n },\n createAllGSIN: {\n name: \"createAllGSIN\",\n description: \"Create all GSINs for a prefix.\"\n },\n createGCN: {\n name: \"createGCN\",\n description: \"Create a GCN.\"\n },\n createGCNSequence: {\n name: \"createGCNSequence\",\n description: \"Create a sequence of GCNs.\"\n },\n createAllGCN: {\n name: \"createAllGCN\",\n description: \"Create all GCNs for a prefix.\"\n },\n createSerializedGCN: {\n name: \"createSerializedGCN\",\n description: \"Create a serialized GCN.\"\n },\n concatenateGCN: {\n name: \"concatenateGCN\",\n description: \"Concatenate a base GCN with a serial component.\"\n },\n createCPID: {\n name: \"createCPID\",\n description: \"Create a CPID.\"\n },\n createGMN: {\n name: \"createGMN\",\n description: \"Create a GMN.\"\n }\n }\n }\n};\n","export default {\n AppExtension: {\n sequenceCountMustBeLessThanOrEqualTo: \"Le nombre de séquences {{sequenceCount, number}} doit être inférieur ou égal à {{maximumSequenceCount, number}}\"\n },\n Proxy: {\n vSpillMustBeHorizontalArray: \"L'entrée doit être un tableau horizontal\",\n hSpillMustBeVerticalArray: \"L'entrée doit être un tableau vertical\",\n matrixMustBeArray: \"L'entrée doit être un tableau unidimensionnel\"\n },\n IdentifierCreatorProxy: {\n prefixDefinitionMustBeOneDimensional: \"La définition du préfixe doit être une matrice unidimensionnelle\",\n prefixDefinitionMustHaveMaximumThreeElements: \"La définition du préfixe doit comporter un maximum de 3 éléments\",\n prefixMustBeString: \"Le préfixe doit être une chaîne\",\n prefixTypeMustBeNumber: \"Le type de préfixe doit être un nombre compris entre 0 et {{maximumPrefixType, number}}\",\n invalidPrefixType: \"Type de préfixe invalide\",\n tweakFactorMustBeNumber: \"Le facteur de réglage doit être un nombre\"\n },\n Parameters: {\n spillMatrix: {\n name: \"matrice\",\n description: \"Matrice unidimensionnelle à renverser.\"\n },\n spillMaximumWidth: {\n name: \"largeurMaximale\",\n description: \"Largeur maximale dans laquelle déverser la matrice. Si non fournie, la largeur restante est utilisée.\"\n },\n spillMaximumHeight: {\n name: \"hauteurMaximale\",\n description: \"Hauteur maximale dans laquelle déverser la matrice. Si non fournie, la hauteur restante est utilisée.\"\n },\n domain: {\n name: \"domaine\",\n description: \"Domaine de transformation. Les valeurs d'entrée valides vont de zéro au domaine-1.\"\n },\n value: {\n name: \"valeur\",\n description: \"Valeur à transformer.\"\n },\n startValue: {\n name: \"valeurInitiale\",\n description: \"Valeur de départ d'un domaine de valeurs à transformer.\"\n },\n count: {\n name: \"compte\",\n description: \"Nombre de valeurs à transformer. Si positive, les valeurs transformées vont de valeurInitiale ascendante à valeurInitiale+compte-1. Si négative, les valeurs transformées vont de valeurInitiale descendant à valeurInitiale+compte+1.\"\n },\n transformedValue: {\n name: \"valeurTransformee\",\n description: \"Valeur de sortie précédente d'une transformation.\"\n },\n tweak: {\n name: \"reglage\",\n description: \"Valeur par laquelle réglager la transformation. Si non fourni ou nul, la sortie est séquentielle. Sinon, la sortie est cryptée de manière à paraître aléatoire, masquant les valeurs utilisées comme entrées de la séquence.\"\n },\n regExp: {\n name: \"expReg\",\n description: \"Expression régulière par rapport à laquelle valider une chaîne.\"\n },\n validateS: {\n name: \"c\",\n description: \"Chaîne à valider.\"\n },\n valueForS: {\n name: \"c\",\n description: \"Chaîne pour laquelle déterminer la valeur.\"\n },\n errorMessage: {\n name: \"messageDErreur\",\n description: \"Message d'erreur personnalisé à utiliser si la validation échoue. S'il n'est pas fourni, un message d'erreur interne est utilisé.\"\n },\n exclusionNone: {\n name: \"exclusion\",\n description: \"Valeurs de chaîne à exclure. La seule valeur valide est 0 (aucune exclusion).\"\n },\n exclusionFirstZero: {\n name: \"exclusion\",\n description: \"Valeurs de chaîne à exclure. Les valeurs valides sont 0 (aucune exclusion) et 1 (chaînes commençant par 0 exclues).\"\n },\n exclusionAllNumeric: {\n name: \"exclusion\",\n description: \"Valeurs de chaîne à exclure. Les valeurs valides sont 0 (aucune exclusion) et 2 (chaînes entièrement numériques exclues).\"\n },\n exclusionAny: {\n name: \"exclusion\",\n description: \"Valeurs de chaîne à exclure. Les valeurs valides sont 0 (aucune exclusion), 1 (chaînes commençant par 0 exclues) et 2 (chaînes toutes numériques exclues).\"\n },\n length: {\n name: \"longueur\",\n description: \"Longueur de chaîne à créer.\"\n },\n numericS: {\n name: \"c\",\n description: \"Chaîne numérique.\"\n },\n numericSFourOrFiveDigits: {\n name: \"c\",\n description: \"Chaîne numérique à quatre ou cinq chiffres.\"\n },\n numericSWithCheckDigit: {\n name: \"c\",\n description: \"Chaîne numérique avec chiffre de contrôle.\"\n },\n checkDigit: {\n name: \"chiffreDeControle\",\n description: \"Chiffre de contrôle.\"\n },\n ai82S: {\n name: \"c\",\n description: \"Chaîne de caractères GS1 AI 82.\"\n },\n ai82SWithCheckCharacterPair: {\n name: \"c\",\n description: \"Chaîne de caractères GS1 AI 82 avec paire de caractères de contrôle.\"\n },\n validateIdentifier: {\n name: \"cleDIdentification\",\n description: \"Clé d'identification à valider.\"\n },\n zeroSuppressibleGTIN12: {\n name: \"gtin12\",\n description: \"GTIN-12 pour lequel supprimer les zéros.\"\n },\n zeroSuppressedGTIN12: {\n name: \"gtin12SupprimeAZero\",\n description: \"GTIN-12 supprimé à zéro pour s'étendre.\"\n },\n convertGTIN: {\n name: \"gtin\",\n description: \"GTIN à convertir en GTIN-14.\"\n },\n normalizeGTIN: {\n name: \"gtin\",\n description: \"GTIN à normaliser.\"\n },\n validateGTIN: {\n name: \"gtin\",\n description: \"GTIN à valider.\"\n },\n validateGTIN14: {\n name: \"gtin14\",\n description: \"GTIN-14 à valider.\"\n },\n baseIdentifier: {\n name: \"cleDIdentificationDeBase\",\n description: \"Clé d'identification de base.\"\n },\n indicatorDigit: {\n name: \"indicatorDigit\",\n description: \"Chiffre indicateur.\"\n },\n gtinLevel: {\n name: \"niveau\",\n description: \"Niveau auquel valider le GTIN. Les valeurs valides sont 0 (n'importe lequel), 1 (article commercial de consommation au détail) et 2 (autre que le niveau de l'article commercial de consommation au détail).\"\n },\n rcnFormat: {\n name: \"format\",\n description: \"Format de numéro de diffusion restreinte.\"\n },\n rcn: {\n name: \"rcn\",\n description: \"Numéro de diffusion restreint à analyser.\"\n },\n prefix: {\n name: \"prefixe\",\n description: \"Préfixe.\"\n },\n prefixType: {\n name: \"typeDePréfixe\",\n description: \"Type de préfixe. Les valeurs valides sont 0 (préfixe d'entreprise GS1), 1 (préfixe d'entreprise U.P.C.) et 2 (préfixe GS1).\"\n },\n tweakFactor: {\n name: \"facteurDeReglage\",\n description: \"Facteur de réglage, utilisé pour prendre en charge la création de clés d'identification éparses. Le facteur de réglage par défaut est basé sur le préfixe d'entreprise GS1 et est généralement suffisant pour l'obscurcissement. Cela permet un meilleur contrôle du cryptage lorsqu'une sécurité plus élevée est requise.\"\n },\n prefixDefinitionAny: {\n name: \"prefixeDefinition\",\n description: \"Définition de préfixe, soit un préfixe d'entreprise simple GS1 (sous forme de chaîne), soit le résultat d'un appel à definePrefix. Tout type de préfixe est pris en charge.\"\n },\n prefixDefinitionGS1UPC: {\n name: \"prefixeDefinition\",\n description: \"Définition de préfixe, soit un préfixe d'entreprise simple GS1 (sous forme de chaîne), soit le résultat d'un appel à definePrefix. Seuls les types de préfixes 0 (préfixe d'entreprise GS1) et 1 (préfixe d'entreprise U.P.C.) sont pris en charge.\"\n },\n sparse: {\n name: \"clairsemee\",\n description: \"Si cette valeur est vraie, la valeur est mappée sur une séquence clairsemée résistante à la découverte. La valeur par défaut est faux.\"\n },\n rcnItemReference: {\n name: \"referenceDArticle\",\n description: \"Référence d'article.\"\n },\n rcnPriceOrWeight: {\n name: \"prixOuPoids\",\n description: \"Prix ou poids (nombre entier uniquement).\"\n },\n serialComponent: {\n name: \"composanteSerie\",\n description: \"Composante série.\"\n },\n reference: {\n name: \"reference\",\n description: \"Partie de référence de la clé d'identification.\"\n }\n },\n Functions: {\n version: {\n name: \"version\",\n description: \"Obtener la version de la boîte à outils AIDC.\"\n },\n vSpill: {\n name: \"vDeverser\",\n description: \"Déverser un tableau horizontal verticalement pour l'adapter à une largeur et une hauteur maximales données.\"\n },\n hSpill: {\n name: \"hDeverser\",\n description: \"Déverser un tableau vertical horizontalement pour l'adapter à une hauteur et une largeur maximales données.\"\n },\n forwardTransform: {\n name: \"transformerAvant\",\n description: \"Transformer une valeur en avant.\"\n },\n forwardTransformSequence: {\n name: \"transformerSequenceAvant\",\n description: \"Transformer une séquence de valeurs en avant.\"\n },\n reverseTransform: {\n name: \"transformerArriere\",\n description: \"Transformer une valeur en arrière.\"\n },\n validateRegExp: {\n name: \"validerExpReg\",\n description: \"Valider une chaîne par rapport à une expression régulière.\"\n },\n isValidRegExp: {\n name: \"estValideExpReg\",\n description: \"Déterminer si une chaîne est valide par rapport à une expression régulière.\"\n },\n validateNumeric: {\n name: \"validerNumerique\",\n description: \"Valider une chaîne numérique.\"\n },\n isValidNumeric: {\n name: \"estValideNumerique\",\n description: \"Déterminer si une chaîne est numérique.\"\n },\n createNumeric: {\n name: \"creerNumerique\",\n description: \"Créer une chaîne numérique.\"\n },\n createNumericSequence: {\n name: \"creerSequenceNumerique\",\n description: \"Créer une séquence de chaînes numériques.\"\n },\n valueForNumeric: {\n name: \"valeurDeNumerique\",\n description: \"Obtenir la valeur d'une chaîne numérique.\"\n },\n validateHexadecimal: {\n name: \"validerHexadecimale\",\n description: \"Valider une chaîne hexadécimale.\"\n },\n isValidHexadecimal: {\n name: \"estValideHexadecimale\",\n description: \"Déterminer si une chaîne est hexadécimale.\"\n },\n createHexadecimal: {\n name: \"creerHexadecimale\",\n description: \"Créer une chaîne hexadécimale.\"\n },\n createHexadecimalSequence: {\n name: \"creerSequenceHexadecimale\",\n description: \"Créer une séquence de chaînes hexadécimales.\"\n },\n valueForHexadecimal: {\n name: \"valeurDeHexadecimale\",\n description: \"Obtenir la valeur d'une chaîne hexadécimale.\"\n },\n validateAlphabetic: {\n name: \"validerAlphabetique\",\n description: \"Valider une chaîne alphabétique.\"\n },\n isValidAlphabetic: {\n name: \"estValideAlphabetique\",\n description: \"Déterminer si une chaîne est alphabétique.\"\n },\n createAlphabetic: {\n name: \"creerAlphabetique\",\n description: \"Créer une chaîne alphabétique.\"\n },\n createAlphabeticSequence: {\n name: \"creerSequenceAlphabetique\",\n description: \"Créer une séquence de chaînes alphabétiques.\"\n },\n valueForAlphabetic: {\n name: \"valeurDeAlphabetique\",\n description: \"Obtenir la valeur d'une chaîne alphabétique.\"\n },\n validateAlphanumeric: {\n name: \"validerAlphanumerique\",\n description: \"Valider une chaîne alphanumérique.\"\n },\n isValidAlphanumeric: {\n name: \"estValideAlphanumerique\",\n description: \"Déterminer si une chaîne est alphanumérique.\"\n },\n createAlphanumeric: {\n name: \"creerAlphanumerique\",\n description: \"Créer une chaîne alphanumérique.\"\n },\n createAlphanumericSequence: {\n name: \"creerSequenceAlphanumerique\",\n description: \"Créer une séquence de chaînes alphanumériques.\"\n },\n valueForAlphanumeric: {\n name: \"valeurDeAlphanumerique\",\n description: \"Obtenir la valeur d'une chaîne alphanumérique.\"\n },\n GS1: {\n validateAI82: {\n name: \"validerAI82\",\n description: \"Valider une chaîne de caractères GS1 AI 82.\"\n },\n isValidAI82: {\n name: \"estValideAI82\",\n description: \"Déterminer si une chaîne est un jeu de caractères GS1 AI 82.\"\n },\n createAI82: {\n name: \"creerAI82\",\n description: \"Créer une chaîne de caractères GS1 AI 82.\"\n },\n createAI82Sequence: {\n name: \"creerSequenceAI82\",\n description: \"Créer une séquence de chaînes de caractères GS1 AI 82.\"\n },\n valueForAI82: {\n name: \"valeurDeAI82\",\n description: \"Obtenez la valeur d'une chaîne de caractères GS1 AI 82.\"\n },\n validateAI39: {\n name: \"validerAI39\",\n description: \"Valider une chaîne de caractères GS1 AI 39.\"\n },\n isValidAI39: {\n name: \"estValideAI39\",\n description: \"Déterminer si une chaîne est un jeu de caractères GS1 AI 39.\"\n },\n createAI39: {\n name: \"creerAI39\",\n description: \"Créer une chaîne de caractères GS1 AI 39.\"\n },\n createAI39Sequence: {\n name: \"creerSequenceAI39\",\n description: \"Créer une séquence de chaînes de caractères GS1 AI 39.\"\n },\n valueForAI39: {\n name: \"valeurDeAI39\",\n description: \"Obtenez la valeur d'une chaîne de caractères GS1 AI 39.\"\n },\n validateAI64: {\n name: \"validerAI64\",\n description: \"Valider une chaîne de caractères GS1 AI 64.\"\n },\n isValidAI64: {\n name: \"estValideAI64\",\n description: \"Déterminer si une chaîne est un jeu de caractères GS1 AI 64.\"\n },\n checkDigit: {\n name: \"chiffreDeControle\",\n description: \"Calculer le chiffre de contrôle pour une chaîne numérique.\"\n },\n hasValidCheckDigit: {\n name: \"aChiffreDeControleValide\",\n description: \"Déterminer si une chaîne a un chiffre de contrôle valide.\"\n },\n priceOrWeightCheckDigit: {\n name: \"chiffreDeControlePrixOuPoids\",\n description: \"Calculer le chiffre de contrôle pour un prix ou un poids.\"\n },\n isValidPriceOrWeightCheckDigit: {\n name: \"estChiffreDeControlePrixOuPoidsValide\",\n description: \"Déterminer si un chiffre de contrôle de prix ou de poids est valide.\"\n },\n checkCharacterPair: {\n name: \"paireDeCaracteresDeControle\",\n description: \"Calculer la paire de caractères de contrôle pour une chaîne de caractères.\"\n },\n hasValidCheckCharacterPair: {\n name: \"aPaireDeCaracteresDeControleValide\",\n description: \"Déterminez si une chaîne de caractères GS1 AI 82 a une paire de caractères de contrôle valide.\"\n },\n validateGTIN13: {\n name: \"validerGTIN13\",\n description: \"Valider un GTIN-13.\"\n },\n validateGTIN12: {\n name: \"validerGTIN12\",\n description: \"Valider un GTIN-12.\"\n },\n validateGTIN8: {\n name: \"validerGTIN8\",\n description: \"Valider un GTIN-8.\"\n },\n zeroSuppressGTIN12: {\n name: \"supprimerZeroGTIN12\",\n description: \"Supprimer les zéros d'un GTIN-12.\"\n },\n zeroExpandGTIN12: {\n name: \"etendrerZeroGTIN12\",\n description: \"Étendrer un GTIN-12 supprimé à zéro.\"\n },\n convertToGTIN14: {\n name: \"convertirEnGTIN14\",\n description: \"Convertir un GTIN en GTIN-14.\"\n },\n normalizeGTIN: {\n name: \"normalizeGTIN\",\n description: \"Normaliser un GTIN.\"\n },\n validateGTIN: {\n name: \"validerGTIN\",\n description: \"Validez n'importe quel GTIN.\"\n },\n validateGTIN14: {\n name: \"validerGTIN14\",\n description: \"Valider un GTIN-14.\"\n },\n parseVariableMeasureRCN: {\n name: \"parseVariableMeasureRCN\",\n description: \"Analyser un numéro de diffusion restreinte (RCN) à l'aide d'un format d'article commercial à mesure variable.\"\n },\n validateGLN: {\n name: \"validerGLN\",\n description: \"Valider un GLN.\"\n },\n validateSSCC: {\n name: \"validerSSCC\",\n description: \"Valider un SSCC.\"\n },\n validateGRAI: {\n name: \"validerGRAI\",\n description: \"Valider un GRAI.\"\n },\n validateGIAI: {\n name: \"validerGIAI\",\n description: \"Valider un GIAI.\"\n },\n validateGSRN: {\n name: \"validerGSRN\",\n description: \"Valider un GSRN.\"\n },\n validateGDTI: {\n name: \"validerGDTI\",\n description: \"Valider un GDTI.\"\n },\n validateGINC: {\n name: \"validerGINC\",\n description: \"Valider un GINC.\"\n },\n validateGSIN: {\n name: \"validerGSIN\",\n description: \"Valider un GSIN.\"\n },\n validateGCN: {\n name: \"validerGCN\",\n description: \"Valider un GCN.\"\n },\n validateCPID: {\n name: \"validerCPID\",\n description: \"Valider un CPID.\"\n },\n validateGMN: {\n name: \"validerGMN\",\n description: \"Valider un GMN.\"\n },\n definePrefix: {\n name: \"definisserPrefixe\",\n description: \"Définisser un préfixe à utiliser dans les fonctions de création de clé d'identification GS1.\"\n },\n createGTIN: {\n name: \"creerGTIN\",\n description: \"Créer un GTIN.\"\n },\n createGTINSequence: {\n name: \"creerSequenceGTIN\",\n description: \"Créer un séquence de GTIN.\"\n },\n createAllGTIN: {\n name: \"creerTousGTIN\",\n description: \"Créez tous les GTIN pour un préfixe.\"\n },\n createGTIN14: {\n name: \"creerGTIN14\",\n description: \"Créer un GTIN-14.\"\n },\n createVariableMeasureRCN: {\n name: \"creerMesureVariableRCN\",\n description: \"Créer un numéro de diffusion restreinte (RCN) à l'aide d'un format d'article commercial à mesure variable.\"\n },\n createGLN: {\n name: \"creerGLN\",\n description: \"Créer un GLN.\"\n },\n createGLNSequence: {\n name: \"creerSequenceGLN\",\n description: \"Créer un séquence de GLN.\"\n },\n createAllGLN: {\n name: \"creerTousGLN\",\n description: \"Créez tous les GLN pour un préfixe.\"\n },\n createSSCC: {\n name: \"creerSSCC\",\n description: \"Créer un SSCC.\"\n },\n createSSCCSequence: {\n name: \"creerSequenceSSCC\",\n description: \"Créer un séquence de SSCC.\"\n },\n createAllSSCC: {\n name: \"creerTousSSCC\",\n description: \"Créez tous les SSCC pour un préfixe.\"\n },\n createGRAI: {\n name: \"creerGRAI\",\n description: \"Créer un GRAI.\"\n },\n createGRAISequence: {\n name: \"creerSequenceGRAI\",\n description: \"Créer un séquence de GRAI.\"\n },\n createAllGRAI: {\n name: \"creerTousGRAI\",\n description: \"Créez tous les GRAI pour un préfixe.\"\n },\n createSerializedGRAI: {\n name: \"creerGRAISerialise\",\n description: \"Créer un GRAI sérialisé.\"\n },\n concatenateGRAI: {\n name: \"concatenerGRAI\",\n description: \"Concaténer une base GRAI avec un composant série.\"\n },\n createGIAI: {\n name: \"creerGIAI\",\n description: \"Créer un GIAI.\"\n },\n createGSRN: {\n name: \"creerGSRN\",\n description: \"Créer un GSRN.\"\n },\n createGSRNSequence: {\n name: \"creerSequenceGSRN\",\n description: \"Créer un séquence de GSRN.\"\n },\n createAllGSRN: {\n name: \"creerTousGSRN\",\n description: \"Créez tous les GSRN pour un préfixe.\"\n },\n createGDTI: {\n name: \"creerGDTI\",\n description: \"Créer un GDTI.\"\n },\n createGDTISequence: {\n name: \"creerSequenceGDTI\",\n description: \"Créer un séquence de GDTI.\"\n },\n createAllGDTI: {\n name: \"creerTousGDTI\",\n description: \"Créez tous les GDTI pour un préfixe.\"\n },\n createSerializedGDTI: {\n name: \"creerGDTISerialise\",\n description: \"Créer un GDTI sérialisé.\"\n },\n concatenateGDTI: {\n name: \"concatenerGDTI\",\n description: \"Concaténer une base GDTI avec un composant série.\"\n },\n createGINC: {\n name: \"creerGINC\",\n description: \"Créer un GINC.\"\n },\n createGSIN: {\n name: \"creerGSIN\",\n description: \"Créer un GSIN.\"\n },\n createGSINSequence: {\n name: \"creerSequenceGSIN\",\n description: \"Créer un séquence de GSIN.\"\n },\n createAllGSIN: {\n name: \"creerTousGSIN\",\n description: \"Créez tous les GSIN pour un préfixe.\"\n },\n createGCN: {\n name: \"creerGCN\",\n description: \"Créer un GCN.\"\n },\n createGCNSequence: {\n name: \"creerSequenceGCN\",\n description: \"Créer un séquence de GCN.\"\n },\n createAllGCN: {\n name: \"creerTousGCN\",\n description: \"Créez tous les GCN pour un préfixe.\"\n },\n createSerializedGCN: {\n name: \"creerGCNSerialise\",\n description: \"Créer un GCN sérialisé.\"\n },\n concatenateGCN: {\n name: \"concatenerGCN\",\n description: \"Concaténer une base GCN avec un composant série.\"\n },\n createCPID: {\n name: \"creerCPID\",\n description: \"Créer un CPID.\"\n },\n createGMN: {\n name: \"creerGMN\",\n description: \"Créer un GMN.\"\n }\n }\n }\n};\n","import type { TypedAsyncFunction, TypedFunction, TypedSyncFunction } from \"@aidc-toolkit/core\";\nimport { i18nextAppExtension } from \"./locale/i18n.js\";\nimport type { ErrorExtends, ResultError, SheetAddress, SheetRange } from \"./type.js\";\n\n/**\n * Application extension.\n *\n * @template TBigInt\n * Type to which big integer is mapped.\n *\n * @template ThrowError\n * If true, errors are reported through the throw/catch mechanism.\n *\n * @template TError\n * Error type.\n */\nexport abstract class AppExtension<ThrowError extends boolean, TError extends ErrorExtends<ThrowError>, TInvocationContext, TBigInt> {\n /**\n * Application version.\n */\n private readonly _version: string;\n\n /**\n * Maximum sequence count supported by application.\n */\n private readonly _maximumSequenceCount: number;\n\n /**\n * If true, errors are reported through the throw/catch mechanism.\n */\n private readonly _throwError: ThrowError;\n\n /**\n * Maximum width supported by application.\n */\n private _maximumWidth?: number;\n\n /**\n * Maximum height supported by application.\n */\n private _maximumHeight?: number;\n\n /**\n * Constructor.\n *\n * @param version\n * Application version.\n *\n * @param maximumSequenceCount\n * Maximum sequence count supported by application.\n *\n * @param throwError\n * If true, errors are reported through the throw/catch mechanism.\n */\n protected constructor(version: string, maximumSequenceCount: number, throwError: ThrowError) {\n this._version = version;\n this._maximumSequenceCount = maximumSequenceCount;\n this._throwError = throwError;\n }\n\n /**\n * Get the version.\n *\n * @returns\n * Version.\n */\n get version(): string {\n return this._version;\n }\n\n /**\n * Determine if errors are reported through the throw/catch mechanism.\n */\n get throwError(): ThrowError {\n return this._throwError;\n }\n\n /**\n * Get the maximum width supported by the application.\n *\n * @returns\n * Maximum width supported by the application.\n */\n async maximumWidth(): Promise<number> {\n this._maximumWidth ??= await this.getMaximumWidth();\n\n return this._maximumWidth;\n }\n\n /**\n * Get the maximum width supported by the application.\n *\n * @returns\n * Maximum width supported by the application.\n */\n protected abstract getMaximumWidth(): Promise<number>;\n\n /**\n * Get the maximum height supported by the application.\n *\n * @returns\n * Maximum height supported by the application.\n */\n async maximumHeight(): Promise<number> {\n this._maximumHeight ??= await this.getMaximumHeight();\n\n return this._maximumHeight;\n }\n\n /**\n * Get the maximum height supported by the application.\n *\n * @returns\n * Maximum height supported by the application.\n */\n protected abstract getMaximumHeight(): Promise<number>;\n\n /**\n * Get the sheet address from an invocation context.\n *\n * @param invocationContext\n * Invocation context.\n *\n * @returns\n * Sheet address.\n */\n abstract getSheetAddress(invocationContext: TInvocationContext): Promise<SheetAddress>;\n\n /**\n * Get a parameter range from an invocation context.\n *\n * @param invocationContext\n * Invocation context.\n *\n * @param parameterNumber\n * Parameter number.\n *\n * @returns\n * Sheet range or null if parameter is not a range.\n */\n abstract getParameterSheetRange(invocationContext: TInvocationContext, parameterNumber: number): Promise<SheetRange | null>;\n\n /**\n * Validate a sequence count against the maximum supported by application.\n *\n * @param sequenceCount\n * Sequence count.\n */\n validateSequenceCount(sequenceCount: number): void {\n const absoluteSequenceCount = Math.abs(sequenceCount);\n\n if (absoluteSequenceCount > this._maximumSequenceCount) {\n throw new RangeError(i18nextAppExtension.t(\"AppExtension.sequenceCountMustBeLessThanOrEqualTo\", {\n sequenceCount: absoluteSequenceCount,\n maximumSequenceCount: this._maximumSequenceCount\n }));\n }\n }\n\n /**\n * Map big integer to another type if necessary.\n *\n * @param value\n * Big integer value to map.\n *\n * @returns\n * Mapped big integer value.\n */\n abstract mapBigInt(value: bigint): ResultError<TBigInt, ThrowError, TError>;\n\n /**\n * Map a range error (thrown by the library) to an application-specific error. If errors are reported through the\n * throw/catch mechanism, the implementation may return the range error unmodified if that is supported.\n *\n * @param rangeError\n */\n abstract mapRangeError(rangeError: RangeError): TError;\n\n /**\n * Handle an error with a message; called when an exception occurs outside the control of the AIDC Toolkit library.\n * Implementation must not return, most likely by throwing the message wrapped in an error type.\n *\n * @param message\n * Message to include in the error.\n */\n abstract handleError(message: string): never;\n\n /**\n * Bind a synchronous method and wrap it in a try/catch for comprehensive error handling.\n *\n * @param thisArg\n * The value to be passed as the `this` parameter to the method.\n *\n * @param method\n * Method to call.\n *\n * @returns\n * Function wrapped around the method.\n */\n bindSync<TMethod extends TypedSyncFunction<TMethod>>(thisArg: ThisParameterType<TMethod>, method: TMethod): TypedFunction<TMethod> {\n const boundMethod = method.bind(thisArg);\n\n return (...args: Parameters<TMethod>): ReturnType<TMethod> => {\n try {\n return boundMethod(...args);\n } catch (e: unknown) {\n // eslint-disable-next-line no-console -- Necessary for diagnostics.\n console.error(e);\n\n this.handleError(e instanceof Error ? e.message : String(e));\n }\n };\n }\n\n /**\n * Bind an asynchronous method and wrap it in a try/catch for comprehensive error handling.\n *\n * @param thisArg\n * The value to be passed as the `this` parameter to the method.\n *\n * @param method\n * Method to call.\n *\n * @returns\n * Function wrapped around the method.\n */\n bindAsync<TMethod extends TypedAsyncFunction<TMethod>>(thisArg: ThisParameterType<TMethod>, method: TMethod): TypedAsyncFunction<TMethod> {\n const boundMethod = method.bind(thisArg);\n\n return async (...args: Parameters<TMethod>) => await boundMethod(...args).catch((e: unknown) => {\n // eslint-disable-next-line no-console -- Necessary for diagnostics.\n console.error(e);\n\n this.handleError(e instanceof Error ? e.message : String(e));\n });\n }\n}\n","import { mapIterable } from \"@aidc-toolkit/utility\";\nimport type { AppExtension } from \"./app-extension.js\";\nimport { i18nextAppExtension } from \"./locale/i18n.js\";\nimport type { ErrorExtends, Matrix, MatrixResultError, ResultError } from \"./type.js\";\n\n/**\n * Library proxy.\n *\n * @template TBigInt\n * Type to which big integer is mapped.\n *\n * @template ThrowError\n * If true, errors are reported through the throw/catch mechanism.\n *\n * @template TError\n * Error type.\n */\nexport abstract class LibProxy<ThrowError extends boolean, TError extends ErrorExtends<ThrowError>, TInvocationContext, TBigInt> {\n /**\n * Application extension.\n */\n private readonly _appExtension: AppExtension<ThrowError, TError, TInvocationContext, TBigInt>;\n\n /**\n * Constructor.\n *\n * @param appExtension\n * Application extension.\n */\n constructor(appExtension: AppExtension<ThrowError, TError, TInvocationContext, TBigInt>) {\n this._appExtension = appExtension;\n }\n\n /**\n * Get the application extension.\n */\n protected get appExtension(): AppExtension<ThrowError, TError, TInvocationContext, TBigInt> {\n return this._appExtension;\n }\n\n /**\n * Map big integer to another type if necessary.\n *\n * @param value\n * Big integer value to map.\n *\n * @returns\n * Mapped big integer value.\n */\n mapBigInt(value: bigint): ResultError<TBigInt, ThrowError, TError> {\n return this._appExtension.mapBigInt(value);\n }\n\n /**\n * Handle an error thrown by a function call.\n *\n * @param e\n * Error.\n *\n * @returns\n * Error if errors are not thrown.\n */\n private handleError<TResult>(e: unknown): ResultError<TResult, ThrowError, TError> {\n let result: ResultError<TResult, ThrowError, TError>;\n\n if (e instanceof RangeError) {\n const error = this._appExtension.mapRangeError(e);\n\n if (this._appExtension.throwError) {\n // eslint-disable-next-line @typescript-eslint/no-unsafe-type-assertion -- Type is determined by application mapping.\n throw error as Error;\n }\n\n // eslint-disable-next-line @typescript-eslint/no-unsafe-type-assertion -- Type determination is handled above.\n result = error as ResultError<TResult, ThrowError, TError>;\n } else {\n // Unknown error; pass up the stack.\n // eslint-disable-next-line @typescript-eslint/only-throw-error -- Error is being passed on from elsewhere.\n throw e;\n }\n\n return result;\n }\n\n /**\n * Do the callback for a simple return.\n *\n * @param value\n * Value.\n *\n * @param callback\n * Callback.\n *\n * @returns\n * Callback result or error if errors are not thrown.\n */\n private doCallback<TValue, TResult>(value: TValue, callback: (value: TValue) => TResult): ResultError<TResult, ThrowError, TError> {\n let result: ResultError<TResult, ThrowError, TError>;\n\n try {\n result = callback(value);\n } catch (e: unknown) {\n result = this.handleError(e);\n }\n\n return result;\n }\n\n /**\n * Map a matrix of values using a callback.\n *\n * @param matrixValues\n * Matrix of values.\n *\n * @param callback\n * Callback.\n *\n * @returns\n * Matrix of callback results and errors if errors are not thrown.\n */\n protected mapMatrix<TValue, TResult>(matrixValues: Matrix<TValue>, callback: (value: TValue) => TResult): MatrixResultError<TResult, ThrowError, TError> {\n return matrixValues.map(rowValues => rowValues.map(value => this.doCallback(value, callback)));\n }\n\n /**\n * Do the callback for an array return.\n *\n * @param value\n * Value.\n *\n * @param callback\n * Callback.\n *\n * @returns\n * Callback result or error as array if errors are not thrown.\n */\n private doArrayCallback<TValue, TResult>(value: TValue, callback: (value: TValue) => TResult[]): Array<ResultError<TResult, ThrowError, TError>> {\n const result = this.doCallback(value, callback);\n\n // eslint-disable-next-line @typescript-eslint/no-unsafe-type-assertion -- Type determination is handled.\n return result instanceof Array ? result : [result as ResultError<TResult, ThrowError, TError>];\n }\n\n /**\n * Map a one-dimensional matrix of values using a callback.\n *\n * @param matrixValues\n * Matrix of values.\n *\n * @param callback\n * Callback.\n *\n * @returns\n * Matrix of callback results and errors if errors are not thrown.\n */\n protected mapArray<TValue, TResult>(matrixValues: Matrix<TValue>, callback: (value: TValue) => TResult[]): MatrixResultError<TResult, ThrowError, TError> {\n let matrixResultError: MatrixResultError<TResult, ThrowError, TError>;\n\n if (matrixValues.length === 0) {\n // Special case; unlikely to occur.\n matrixResultError = [[]];\n } else if (matrixValues.length === 1) {\n matrixResultError = [];\n\n matrixValues[0].forEach((value, columnIndex) => {\n const arrayResultError = this.doArrayCallback(value, callback);\n\n arrayResultError.forEach((resultError, rowIndex) => {\n if (matrixResultError.length <= rowIndex) {\n matrixResultError.push([]);\n }\n\n // Assignment will automatically expand array.\n matrixResultError[rowIndex][columnIndex] = resultError;\n });\n });\n } else {\n matrixResultError = matrixValues.map((rowValue) => {\n let arrayResultError: Array<ResultError<TResult, ThrowError, TError>>;\n\n if (rowValue.length === 0) {\n // Special case; unlikely to occur.\n arrayResultError = [];\n } else if (rowValue.length === 1) {\n arrayResultError = this.doArrayCallback(rowValue[0], callback);\n } else {\n arrayResultError = [this.handleError(new RangeError(i18nextAppExtension.t(\"Proxy.matrixMustBeArray\")))];\n }\n\n return arrayResultError;\n });\n }\n\n return matrixResultError;\n }\n\n /**\n * Map a matrix of values to a matrix of strings via a callback that either returns or throws a range error. If the\n * callback returns, the result for that element is the empty string; otherwise, if it's a range error, the result\n * for that element is the error message.\n *\n * @param matrixValues\n * Matrix to map.\n *\n * @param callback\n * Callback that either returns or throws an exception.\n *\n * @returns\n * Matrix of strings.\n *\n * @template TValue\n * Value type.\n */\n protected static mapMatrixRangeError<TValue>(matrixValues: Matrix<TValue>, callback: (value: TValue) => void): Matrix<string> {\n return matrixValues.map(rowValues => rowValues.map((value) => {\n let result: string;\n\n try {\n callback(value);\n\n // No error; return empty string.\n result = \"\";\n } catch (e: unknown) {\n if (e instanceof RangeError) {\n // Library error; return error message.\n result = e.message;\n } else {\n // Unknown error; pass up the stack.\n throw e instanceof Error ?\n e :\n new Error(\"Unknown error\", {\n cause: e\n });\n }\n }\n\n return result;\n }));\n }\n\n /**\n * Convert an iterable result of a callback to a matrix result. Although the natural approach would be to map to a\n * single-element array containing an array of *N* results (i.e., [[r0, r1, r2, ..., r*N*]]), this is rendered\n * visually as a single row. The more readable approach is as a single column, so the mapping is to an *N*-element\n * array of single-element result arrays (i.e., [[r0], [r1], [r2], ..., [r*N*]]).\n *\n * @param iterableResult\n * Iterable result.\n *\n * @returns\n * Matrix of callback results.\n */\n protected static matrixResult<TResult>(iterableResult: Iterable<TResult>): Matrix<TResult> {\n return Array.from(mapIterable(iterableResult, result => [result]));\n }\n}\n","import type { TypedFunction } from \"@aidc-toolkit/core\";\nimport type { AppExtension } from \"./app-extension.js\";\nimport { LibProxy } from \"./lib-proxy.js\";\nimport type { ErrorExtends } from \"./type.js\";\n\n/**\n * Core descriptor.\n */\ninterface Descriptor {\n /**\n * Name.\n */\n readonly name: string;\n}\n\n/**\n * Types supported by proxy methods.\n */\nexport const Types = {\n /**\n * String.\n */\n String: 0,\n\n /**\n * Number or enumeration.\n */\n Number: 1,\n\n /**\n * Boolean.\n */\n Boolean: 2,\n\n /**\n * Any.\n */\n Any: 3\n} as const;\n\n/**\n * Type key.\n */\nexport type TypeKey = keyof typeof Types;\n\n/**\n * Type.\n */\nexport type Type = typeof Types[TypeKey];\n\n/**\n * Type descriptor.\n */\ninterface TypeDescriptor extends Descriptor {\n /**\n * Type.\n */\n readonly type: Type;\n\n /**\n * True if type is a matrix (method accepts or returns a two-dimensional array).\n */\n readonly isMatrix: boolean;\n}\n\n/**\n * Base parameter descriptor; all attributes required.\n */\nexport interface BaseParameterDescriptor extends TypeDescriptor {\n /**\n * True if required.\n */\n readonly isRequired: boolean;\n}\n\n/**\n * Extends parameter descriptor; extends a parameter descriptor and overrides select attributes.\n */\nexport interface ExtendsParameterDescriptor extends Partial<BaseParameterDescriptor> {\n /**\n * Base parameter descriptor that this one extends.\n */\n readonly extendsDescriptor: ParameterDescriptor;\n\n /**\n * Sort order within base parameter descriptor if applicable.\n */\n readonly sortOrder?: number;\n}\n\n/**\n * Parameter descriptor, either base or extends.\n */\nexport type ParameterDescriptor = BaseParameterDescriptor | ExtendsParameterDescriptor;\n\n/**\n * Expand a parameter descriptor to its full form with all required attributes.\n *\n * @param parameterDescriptor\n * Parameter descriptor.\n *\n * @returns\n * Parameter descriptor in its full form.\n */\nexport function expandParameterDescriptor(parameterDescriptor: ParameterDescriptor): BaseParameterDescriptor {\n return !(\"extendsDescriptor\" in parameterDescriptor) ?\n parameterDescriptor :\n {\n ...expandParameterDescriptor(parameterDescriptor.extendsDescriptor),\n ...parameterDescriptor\n };\n}\n\n/**\n * Method descriptor.\n */\nexport interface MethodDescriptor extends TypeDescriptor {\n /**\n * If true, application-specific invocation context is required.\n */\n readonly requiresContext?: boolean;\n\n /**\n * If true, method infix is ignored.\n */\n readonly ignoreInfix?: boolean;\n\n /**\n * String before which method infix appears. If undefined, infix is appended to the method name. Ignored if\n * `ignoreInfix` is true.\n */\n readonly infixBefore?: string;\n\n /**\n * Parameter descriptors.\n */\n readonly parameterDescriptors: readonly ParameterDescriptor[];\n}\n\n/**\n * Class descriptor.\n */\nexport interface ClassDescriptor extends Descriptor {\n /**\n * Class namespace. If not provided, class is at the top level.\n */\n readonly namespace?: string;\n\n /**\n * Method infix. If undefined, method name is generated verbatim.\n */\n readonly methodInfix?: string;\n\n /**\n * Replace parameter descriptors for class hierarchies where enumeration parameter descriptors can change.\n */\n readonly replaceParameterDescriptors?: ReadonlyArray<{\n readonly name: string;\n readonly replacement: ParameterDescriptor;\n }>;\n\n /**\n * Method descriptors.\n */\n readonly methodDescriptors: readonly MethodDescriptor[];\n}\n\n/**\n * Proxy class type with fixed constructor.\n */\ntype ProxyClassType<ThrowError extends boolean, TError extends ErrorExtends<ThrowError>, TInvocationContext, TBigInt, T extends LibProxy<ThrowError, TError, TInvocationContext, TBigInt>> = (new(appExtension: AppExtension<ThrowError, TError, TInvocationContext, TBigInt>) => T) & typeof LibProxy;\n\n/**\n * Pending parameter descriptors, consumed and reset when method is described.\n */\nlet pendingParameterDescriptors: ParameterDescriptor[] = [];\n\n/**\n * Class method descriptors map, keyed on declaration class name and method name.\n */\nconst classMethodsDescriptorsMap = new Map<string, MethodDescriptor[]>();\n\n/**\n * Class descriptors map, keyed on declaration class name.\n */\nconst classDescriptorsMap = new Map<string, ClassDescriptor>();\n\n/**\n * Proxy parameter decorator.\n *\n * @param parameterDescriptor\n * Parameter descriptor.\n *\n * @returns\n * Function defining metadata for the parameter.\n */\nexport function ProxyParameter<ThrowError extends boolean, TError extends ErrorExtends<ThrowError>, TInvocationContext, TBigInt, T extends LibProxy<ThrowError, TError, TInvocationContext, TBigInt>>(parameterDescriptor: ParameterDescriptor): ((target: T, propertyKey: string, parameterIndex: number) => void) {\n return (_target: T, _propertyKey: string, parameterIndex: number) => {\n pendingParameterDescriptors[parameterIndex] = parameterDescriptor;\n };\n}\n\n/**\n * Proxy method decorator.\n *\n * @param methodDescriptor\n * Method descriptor.\n *\n * @returns\n * Function defining metadata for the method.\n */\nexport function ProxyMethod<ThrowError extends boolean, TError extends ErrorExtends<ThrowError>, TInvocationContext, TBigInt, T extends LibProxy<ThrowError, TError, TInvocationContext, TBigInt>>(methodDescriptor: Omit<MethodDescriptor, \"name\" | \"parameterDescriptors\">): ((target: T, propertyKey: string, propertyDescriptor: PropertyDescriptor) => void) {\n return (target: T, propertyKey: string, propertyDescriptor: PropertyDescriptor) => {\n const declarationClassName = target.constructor.name;\n\n // Validate that method descriptor is applied to a function.\n if (typeof propertyDescriptor.value !== \"function\") {\n throw new Error(`${declarationClassName}.${propertyKey} is not a method`);\n }\n\n // eslint-disable-next-line @typescript-eslint/no-unsafe-type-assertion -- Known to be a method.\n const parameterCount = (propertyDescriptor.value as TypedFunction<(...args: unknown[]) => unknown>).length - (!(methodDescriptor.requiresContext ?? false) ? 0 : 1);\n\n let anyOptional = false;\n\n // Validate that all parameters have descriptors.\n for (let index = 0; index < parameterCount; index++) {\n const parameterDescriptor = expandParameterDescriptor(pendingParameterDescriptors[index]);\n\n if (typeof parameterDescriptor === \"undefined\") {\n throw new Error(`Missing parameter descriptor at index ${index} of ${declarationClassName}.${propertyKey}`);\n }\n\n if (!parameterDescriptor.isRequired) {\n anyOptional = true;\n } else if (anyOptional) {\n throw new Error(`Parameter descriptor ${parameterDescriptor.name} at index ${index} of ${declarationClassName}.${propertyKey} is required but prior parameter descriptor ${pendingParameterDescriptors[index - 1].name} is optional`);\n }\n }\n\n let methodDescriptors = classMethodsDescriptorsMap.get(declarationClassName);\n if (methodDescriptors === undefined) {\n methodDescriptors = [];\n classMethodsDescriptorsMap.set(declarationClassName, methodDescriptors);\n }\n\n // Method descriptors array is constructed in reverse order so that final result is in the correct order.\n methodDescriptors.push({\n name: propertyKey,\n ...methodDescriptor,\n parameterDescriptors: pendingParameterDescriptors\n });\n\n pendingParameterDescriptors = [];\n };\n}\n\n/**\n * Proxy class decorator.\n *\n * @param classDescriptor\n * Class descriptor.\n *\n * @returns\n * Function defining metadata for the class.\n */\nexport function ProxyClass<ThrowError extends boolean, TError extends ErrorExtends<ThrowError>, TInvocationContext, TBigInt, T extends LibProxy<ThrowError, TError, TInvocationContext, TBigInt>>(classDescriptor: Omit<ClassDescriptor, \"name\" | \"methodDescriptors\"> = {}): ((classType: ProxyClassType<ThrowError, TError, TInvocationContext, TBigInt, T>) => void) {\n return (classType: ProxyClassType<ThrowError, TError, TInvocationContext, TBigInt, T>) => {\n const methodDescriptorsMap = new Map<string, MethodDescriptor>();\n\n /**\n * Build method descriptors map from every class in hierarchy until LibProxy class is reached.\n *\n * @param classType\n * Class type.\n */\n function buildMethodDescriptorsMap(classType: typeof LibProxy): void {\n // eslint-disable-next-line @typescript-eslint/no-unsafe-type-assertion -- Class hierarchy is known.\n const baseClassType = Object.getPrototypeOf(classType) as typeof LibProxy;\n\n // Start with class furthest up the hierarchy.\n if (baseClassType !== LibProxy) {\n buildMethodDescriptorsMap(baseClassType);\n }\n\n const classMethodDescriptors = classMethodsDescriptorsMap.get(classType.name);\n\n if (classMethodDescriptors !== undefined) {\n for (const classMethodDescriptor of classMethodDescriptors) {\n // If any class overrides a base class method, it will appear in the same position as the base class method.\n methodDescriptorsMap.set(classMethodDescriptor.name, classMethodDescriptor);\n }\n }\n }\n\n buildMethodDescriptorsMap(classType);\n\n let methodDescriptors: MethodDescriptor[];\n\n if (classDescriptor.replaceParameterDescriptors !== undefined) {\n const replacementParameterDescriptorsMap = new Map(classDescriptor.replaceParameterDescriptors.map(replaceParameterDescriptor => [replaceParameterDescriptor.name, replaceParameterDescriptor.replacement]));\n\n // Method descriptors for class have to be built as copies due to possible mutation of parameter descriptors.\n methodDescriptors = Array.from(methodDescriptorsMap.values()).map(methodDescriptor => ({\n ...methodDescriptor,\n parameterDescriptors: methodDescriptor.parameterDescriptors.map(parameterDescriptor => replacementParameterDescriptorsMap.get(expandParameterDescriptor(parameterDescriptor).name) ?? parameterDescriptor)\n }));\n } else {\n methodDescriptors = Array.from(methodDescriptorsMap.values());\n }\n\n classDescriptorsMap.set(classType.name, {\n name: classType.name,\n ...classDescriptor,\n methodDescriptors\n });\n };\n}\n\n/**\n * Get class descriptors map.\n *\n * @returns\n * Class descriptors map.\n */\nexport function getClassDescriptorsMap(): ReadonlyMap<string, ClassDescriptor> {\n return classDescriptorsMap;\n}\n","import { isNullish, type NonNullishable, type Nullishable } from \"@aidc-toolkit/core\";\nimport { type ParameterDescriptor, ProxyClass, ProxyMethod, ProxyParameter, Types } from \"./descriptor.js\";\nimport { LibProxy } from \"./lib-proxy.js\";\nimport { i18nextAppExtension } from \"./locale/i18n.js\";\nimport type { ErrorExtends, Matrix } from \"./type.js\";\n\nconst spillMatrix: ParameterDescriptor = {\n name: \"spillMatrix\",\n type: Types.Any,\n isMatrix: true,\n isRequired: true\n};\n\nconst spillMaximumParameterDescriptor: ParameterDescriptor = {\n name: \"spillMaximum\",\n type: Types.Number,\n isMatrix: false,\n isRequired: false\n};\n\nconst spillMaximumWidthParameterDescriptor: ParameterDescriptor = {\n extendsDescriptor: spillMaximumParameterDescriptor,\n sortOrder: 0,\n name: \"spillMaximumWidth\"\n};\n\nconst spillMaximumHeightParameterDescriptor: ParameterDescriptor = {\n extendsDescriptor: spillMaximumParameterDescriptor,\n sortOrder: 1,\n name: \"spillMaximumHeight\"\n};\n\n/**\n * Maximum dimensions.\n */\ninterface MaximumDimensions {\n /**\n * Optional maximum width.\n */\n width: Nullishable<number>;\n\n /**\n * Optional maximum height.\n */\n height: Nullishable<number>;\n}\n\n/**\n * Application utilities.\n */\n@ProxyClass()\nexport class AppUtilityProxy<ThrowError extends boolean, TError extends ErrorExtends<ThrowError>, TInvocationContext, TBigInt> extends LibProxy<ThrowError, TError, TInvocationContext, TBigInt> {\n /**\n * Get the version.\n *\n * @returns\n * Version.\n */\n @ProxyMethod({\n type: Types.String,\n isMatrix: false\n })\n version(): string {\n return this.appExtension.version;\n }\n\n /**\n * Provide default values for maximum width and height if required.\n *\n * @param maximumDimensions\n * Maximum dimensions provided to function.\n *\n * @param invocationContext\n * Invocation context.\n *\n * @returns\n * Array of maximum width and maximum height.\n */\n private async defaultMaximums(maximumDimensions: MaximumDimensions, invocationContext: Nullishable<TInvocationContext>): Promise<NonNullishable<MaximumDimensions>> {\n if (isNullish(invocationContext)) {\n // Application error; no localization necessary.\n throw new Error(\"Invocation context not provided by application\");\n }\n\n const maximumWidth = maximumDimensions.width;\n const maximumHeight = maximumDimensions.height;\n\n let definedMaximumWidth: number;\n let definedMaximumHeight: number;\n\n // Skip any extra work if both values are provided.\n if (isNullish(maximumWidth) || isNullish(maximumHeight)) {\n const sheetAddress = await this.appExtension.getSheetAddress(invocationContext);\n\n definedMaximumWidth = maximumWidth ?? await this.appExtension.maximumWidth() - sheetAddress.columnIndex;\n definedMaximumHeight = maximumHeight ?? await this.appExtension.maximumHeight() - sheetAddress.rowIndex;\n } else {\n definedMaximumWidth = maximumWidth;\n definedMaximumHeight = maximumHeight;\n }\n\n return {\n width: definedMaximumWidth,\n height: definedMaximumHeight\n };\n }\n\n /**\n * Spill a horizontal matrix vertically to fit within a maximum width and height.\n *\n * @param hMatrixValues\n * Horizontal matrix values. Matrix has length 1 and contains a single array with the values.\n *\n * @param maximumWidth\n * Maximum width.\n *\n * @param maximumHeight\n * Maximum height.\n *\n * @param invocationContext\n * Invocation context.\n *\n * @returns\n * Matrix spilled within maximum width and maximum height.\n */\n @ProxyMethod({\n requiresContext: true,\n type: Types.Any,\n isMatrix: true\n })\n async vSpill(\n @ProxyParameter(spillMatrix) hMatrixValues: Matrix<unknown>,\n @ProxyParameter(spillMaximumWidthParameterDescriptor) maximumWidth: Nullishable<number>,\n @ProxyParameter(spillMaximumHeightParameterDescriptor) maximumHeight: Nullishable<number>,\n invocationContext: Nullishable<TInvocationContext>\n ): Promise<Matrix<unknown>> {\n let result: Matrix<unknown>;\n\n if (hMatrixValues.length !== 1) {\n throw new RangeError(i18nextAppExtension.t(\"Proxy.vSpillMustBeHorizontalArray\"));\n }\n\n const maximumDimensions = await this.defaultMaximums({\n width: maximumWidth,\n height: maximumHeight\n }, invocationContext);\n\n const hArrayValues = hMatrixValues[0];\n const hLength = hArrayValues.length;\n const maximumArea = maximumDimensions.width * maximumDimensions.height;\n\n // Lengths 0 and 1 are valid and require no special processing.\n if (hLength > 1 && hLength <= maximumArea) {\n // Make spill as square as possible.\n let spillWidth = Math.min(Math.ceil(Math.sqrt(maximumArea)), maximumDimensions.width);\n\n // Array that has a length of a power of 10 is treated specially.\n if (Number.isInteger(Math.log10(hLength))) {\n // Try spill width that is a power of 10.\n const spillWidth10 = Math.pow(10, Math.floor(Math.log10(spillWidth)));\n\n // Keep default if not enough space for power of 10 matrix.\n if (hLength / spillWidth10 <= maximumDimensions.height) {\n spillWidth = spillWidth10;\n }\n }\n\n result = [];\n\n let hStartIndex = 0;\n\n do {\n const hEndIndex = hStartIndex + spillWidth;\n\n result.push(hArrayValues.slice(hStartIndex, hEndIndex));\n\n hStartIndex = hEndIndex;\n } while (hStartIndex < hLength);\n } else {\n // Return matrix unmodified and let application handle spill error if any.\n result = hMatrixValues;\n }\n\n return result;\n }\n\n /**\n * Spill a vertical matrix horizontally to fit within a maximum width and height.\n *\n * @param vMatrixValues\n * Vertical matrix values. Matrix contains arrays of length 1 with the values.\n *\n * @param maximumHeight\n * Maximum height.\n *\n * @param maximumWidth\n * Maximum width.\n *\n * @param invocationContext\n * Invocation context.\n *\n * @returns\n * Matrix spilled within maximum height and maximum width.\n */\n @ProxyMethod({\n requiresContext: true,\n type: Types.Any,\n isMatrix: true\n })\n async hSpill(\n @ProxyParameter(spillMatrix) vMatrixValues: Matrix<unknown>,\n @ProxyParameter(spillMaximumHeightParameterDescriptor) maximumHeight: Nullishable<number>,\n @ProxyParameter(spillMaximumWidthParameterDescriptor) maximumWidth: Nullishable<number>,\n invocationContext: Nullishable<TInvocationContext>\n ): Promise<Matrix<unknown>> {\n let result: Matrix<unknown>;\n\n for (const hArrayValues of vMatrixValues) {\n // This test should be necessary only once but account for zero-size matrix and misuse of method.\n if (hArrayValues.length !== 1) {\n throw new RangeError(i18nextAppExtension.t(\"Proxy.hSpillMustBeVerticalArray\"));\n }\n }\n\n const maximumDimensions = await this.defaultMaximums({\n width: maximumWidth,\n height: maximumHeight\n }, invocationContext);\n\n const vLength = vMatrixValues.length;\n const maximumArea = maximumDimensions.width * maximumDimensions.height;\n\n // Lengths 0 and 1 are valid and require no special processing.\n if (vLength > 1 && vLength <= maximumArea) {\n // Make spill as square as possible.\n let spillHeight = Math.min(Math.ceil(Math.sqrt(maximumArea)), maximumDimensions.height);\n\n // Array that has a length of a power of 10 is treated specially.\n if (Number.isInteger(Math.log10(vLength))) {\n // Try spill height that is a power of 10.\n const spillHeight10 = Math.pow(10, Math.floor(Math.log10(spillHeight)));\n\n // Keep default if not enough space for power of 10 matrix.\n if (vLength / spillHeight10 <= maximumDimensions.width) {\n spillHeight = spillHeight10;\n }\n }\n\n result = [];\n\n for (let rowIndex = 0; rowIndex < spillHeight; rowIndex++) {\n const row = new Array<unknown>();\n\n for (let cellIndex = rowIndex; cellIndex < vLength; cellIndex++) {\n row.push(vMatrixValues[cellIndex][0]);\n }\n\n result.push(row);\n }\n } else {\n // Return matrix unmodified and let application handle spill error if any.\n result = vMatrixValues;\n }\n\n return result;\n }\n}\n","export * from \"./transformer-proxy.js\";\nexport * from \"./reg-exp-proxy.js\";\nexport * from \"./character-set-proxy.js\";\n","import type { Nullishable } from \"@aidc-toolkit/core\";\nimport { mapIterable, Sequence, Transformer } from \"@aidc-toolkit/utility\";\nimport { type ParameterDescriptor, ProxyClass, ProxyMethod, ProxyParameter, Types } from \"../descriptor.js\";\nimport { LibProxy } from \"../lib-proxy.js\";\nimport type { ErrorExtends, Matrix, MatrixResultError, ResultError } from \"../type.js\";\nimport {\n countParameterDescriptor,\n startValueParameterDescriptor,\n tweakParameterDescriptor,\n valueParameterDescriptor\n} from \"./transformer-descriptor.js\";\n\nconst domainParameterDescriptor: ParameterDescriptor = {\n name: \"domain\",\n type: Types.Number,\n isMatrix: false,\n isRequired: true\n};\n\n// eslint-disable-next-line no-useless-assignment -- ESLint bug.\nconst transformedValueParameterDescriptor: ParameterDescriptor = {\n extendsDescriptor: valueParameterDescriptor,\n name: \"transformedValue\"\n};\n\n@ProxyClass({\n methodInfix: \"Transform\"\n})\nexport class TransformerProxy<ThrowError extends boolean, TError extends ErrorExtends<ThrowError>, TInvocationContext, TBigInt> extends LibProxy<ThrowError, TError, TInvocationContext, TBigInt> {\n @ProxyMethod({\n type: Types.Number,\n isMatrix: true\n })\n forward(\n @ProxyParameter(domainParameterDescriptor) domain: number | bigint,\n @ProxyParameter(valueParameterDescriptor) matrixValues: Matrix<number | bigint>,\n @ProxyParameter(tweakParameterDescriptor) tweak: Nullishable<number | bigint>\n ): MatrixResultError<ResultError<TBigInt, ThrowError, TError>, ThrowError, TError> {\n const transformer = Transformer.get(domain, tweak ?? undefined);\n\n return this.mapMatrix(matrixValues, value => this.mapBigInt(transformer.forward(value)));\n }\n\n @ProxyMethod({\n infixBefore: \"Sequence\",\n type: Types.Number,\n isMatrix: true\n })\n forwardSequence(\n @ProxyParameter(domainParameterDescriptor) domain: number | bigint,\n @ProxyParameter(startValueParameterDescriptor) startValue: number,\n @ProxyParameter(countParameterDescriptor) count: number,\n @ProxyParameter(tweakParameterDescriptor) tweak: Nullishable<number | bigint>\n ): Matrix<ResultError<TBigInt, ThrowError, TError>> {\n this.appExtension.validateSequenceCount(count);\n\n return LibProxy.matrixResult(mapIterable(Transformer.get(domain, tweak ?? undefined).forward(new Sequence(startValue, count)), value => this.mapBigInt(value)));\n }\n\n @ProxyMethod({\n type: Types.Number,\n isMatrix: true\n })\n reverse(\n @ProxyParameter(domainParameterDescriptor) domain: number | bigint,\n @ProxyParameter(transformedValueParameterDescriptor) matrixTransformedValues: Matrix<number | bigint>,\n @ProxyParameter(tweakParameterDescriptor) tweak: Nullishable<number | bigint>\n ): MatrixResultError<ResultError<TBigInt, ThrowError, TError>, ThrowError, TError> {\n const transformer = Transformer.get(domain, tweak ?? undefined);\n\n return this.mapMatrix(matrixTransformedValues, transformedValue => this.mapBigInt(transformer.reverse(transformedValue)));\n }\n}\n","import { type ParameterDescriptor, Types } from \"../descriptor.js\";\n\nexport const valueParameterDescriptor: ParameterDescriptor = {\n name: \"value\",\n type: Types.Number,\n isMatrix: true,\n isRequired: true\n};\n\nexport const startValueParameterDescriptor: ParameterDescriptor = {\n extendsDescriptor: valueParameterDescriptor,\n name: \"startValue\",\n isMatrix: false\n};\n\nexport const countParameterDescriptor: ParameterDescriptor = {\n extendsDescriptor: valueParameterDescriptor,\n name: \"count\",\n isMatrix: false\n};\n\nexport const tweakParameterDescriptor: ParameterDescriptor = {\n name: \"tweak\",\n type: Types.Number,\n isMatrix: false,\n isRequired: false\n};\n","import type { Nullishable } from \"@aidc-toolkit/core\";\nimport { RegExpValidator } from \"@aidc-toolkit/utility\";\nimport { type ParameterDescriptor, ProxyClass, ProxyMethod, ProxyParameter, Types } from \"../descriptor.js\";\nimport type { ErrorExtends, Matrix, MatrixResultError } from \"../type.js\";\nimport { validateSParameterDescriptor } from \"./string-descriptor.js\";\nimport { StringProxy } from \"./string-proxy.js\";\n\nconst regExpParameterDescriptor: ParameterDescriptor = {\n name: \"regExp\",\n type: Types.String,\n isMatrix: false,\n isRequired: true\n};\n\nconst errorMessageParameterDescriptor: ParameterDescriptor = {\n name: \"errorMessage\",\n type: Types.String,\n isMatrix: false,\n isRequired: false\n};\n\n@ProxyClass({\n methodInfix: \"RegExp\"\n})\nexport class RegExpProxy<ThrowError extends boolean, TError extends ErrorExtends<ThrowError>, TInvocationContext, TBigInt> extends StringProxy<ThrowError, TError, TInvocationContext, TBigInt> {\n @ProxyMethod({\n type: Types.String,\n isMatrix: true\n })\n validate(\n @ProxyParameter(regExpParameterDescriptor) regExp: string,\n @ProxyParameter(validateSParameterDescriptor) matrixSs: Matrix<string>,\n @ProxyParameter(errorMessageParameterDescriptor) errorMessage: Nullishable<string>\n ): MatrixResultError<string, ThrowError, TError> {\n return this.validateString(new class extends RegExpValidator {\n protected override createErrorMessage(s: string): string {\n return errorMessage ?? super.createErrorMessage(s);\n }\n }(new RegExp(regExp)), matrixSs);\n }\n\n @ProxyMethod({\n type: Types.Boolean,\n isMatrix: true\n })\n isValid(\n @ProxyParameter(regExpParameterDescriptor) regExp: string,\n @ProxyParameter(validateSParameterDescriptor) matrixSs: Matrix<string>\n ): MatrixResultError<boolean, ThrowError, TError> {\n return this.isValidString(this.validate(regExp, matrixSs, undefined));\n }\n}\n","import { type ParameterDescriptor, Types } from \"../descriptor.js\";\n\nexport const sParameterDescriptor: ParameterDescriptor = {\n name: \"s\",\n type: Types.String,\n isMatrix: true,\n isRequired: true\n};\n\nexport const validateSParameterDescriptor: ParameterDescriptor = {\n extendsDescriptor: sParameterDescriptor,\n name: \"validateS\"\n};\n","import type { StringValidation, StringValidator } from \"@aidc-toolkit/utility\";\nimport { LibProxy } from \"../lib-proxy.js\";\nimport type { ErrorExtends, Matrix, MatrixResultError } from \"../type.js\";\n\nexport abstract class StringProxy<ThrowError extends boolean, TError extends ErrorExtends<ThrowError>, TInvocationContext, TBigInt> extends LibProxy<ThrowError, TError, TInvocationContext, TBigInt> {\n protected validateString<TStringValidation extends StringValidation>(validator: StringValidator<TStringValidation>, matrixSs: Matrix<string>, validation?: TStringValidation): Matrix<string> {\n return LibProxy.mapMatrixRangeError(matrixSs, (s) => {\n validator.validate(s, validation);\n });\n }\n\n protected isValidString(matrixValidateResults: MatrixResultError<string, ThrowError, TError>): MatrixResultError<boolean, ThrowError, TError> {\n return this.mapMatrix(matrixValidateResults, validateResult => validateResult === \"\");\n }\n}\n","import type { Nullishable } from \"@aidc-toolkit/core\";\nimport {\n ALPHABETIC_CREATOR,\n ALPHANUMERIC_CREATOR,\n type CharacterSetCreator,\n type CharacterSetValidation,\n type CharacterSetValidator,\n type Exclusion,\n HEXADECIMAL_CREATOR,\n NUMERIC_CREATOR,\n Sequence\n} from \"@aidc-toolkit/utility\";\nimport type { AppExtension } from \"../app-extension.js\";\nimport {\n expandParameterDescriptor,\n type ParameterDescriptor,\n ProxyClass,\n ProxyMethod,\n ProxyParameter,\n Types\n} from \"../descriptor.js\";\nimport { LibProxy } from \"../lib-proxy.js\";\nimport type { ErrorExtends, Matrix, MatrixResultError, ResultError } from \"../type.js\";\nimport {\n exclusionAnyParameterDescriptor,\n exclusionFirstZeroParameterDescriptor,\n exclusionNoneParameterDescriptor\n} from \"./character-set-descriptor.js\";\nimport { sParameterDescriptor, validateSParameterDescriptor } from \"./string-descriptor.js\";\nimport { StringProxy } from \"./string-proxy.js\";\nimport {\n countParameterDescriptor,\n startValueParameterDescriptor,\n tweakParameterDescriptor,\n valueParameterDescriptor\n} from \"./transformer-descriptor.js\";\n\nconst lengthParameterDescriptor: ParameterDescriptor = {\n name: \"length\",\n type: Types.Number,\n isMatrix: false,\n isRequired: true\n};\n\nconst valueForSParameterDescriptor: ParameterDescriptor = {\n extendsDescriptor: sParameterDescriptor,\n name: \"valueForS\"\n};\n\nexport abstract class CharacterSetValidatorProxy<ThrowError extends boolean, TError extends ErrorExtends<ThrowError>, TInvocationContext, TBigInt> extends StringProxy<ThrowError, TError, TInvocationContext, TBigInt> {\n private readonly _characterSetValidator: CharacterSetValidator;\n\n protected constructor(appExtension: AppExtension<ThrowError, TError, TInvocationContext, TBigInt>, characterSetValidator: CharacterSetValidator) {\n super(appExtension);\n\n this._characterSetValidator = characterSetValidator;\n }\n\n @ProxyMethod({\n type: Types.String,\n isMatrix: true\n })\n validate(\n @ProxyParameter(validateSParameterDescriptor) matrixSs: Matrix<string>,\n @ProxyParameter(exclusionNoneParameterDescriptor) exclusion: Nullishable<Exclusion>\n ): MatrixResultError<string, ThrowError, TError> {\n return this.validateString(this._characterSetValidator, matrixSs, {\n exclusion: exclusion ?? undefined\n } satisfies CharacterSetValidation);\n }\n\n @ProxyMethod({\n type: Types.Boolean,\n isMatrix: true\n })\n isValid(\n @ProxyParameter(validateSParameterDescriptor) matrixSs: Matrix<string>,\n @ProxyParameter(exclusionNoneParameterDescriptor) exclusion: Nullishable<Exclusion>\n ): MatrixResultError<boolean, ThrowError, TError> {\n return this.isValidString(this.validate(matrixSs, exclusion));\n }\n}\n\nexport abstract class CharacterSetCreatorProxy<ThrowError extends boolean, TError extends ErrorExtends<ThrowError>, TInvocationContext, TBigInt> extends CharacterSetValidatorProxy<ThrowError, TError, TInvocationContext, TBigInt> {\n private readonly _characterSetCreator: CharacterSetCreator;\n\n protected constructor(appExtension: AppExtension<ThrowError, TError, TInvocationContext, TBigInt>, characterSetCreator: CharacterSetCreator) {\n super(appExtension, characterSetCreator);\n\n this._characterSetCreator = characterSetCreator;\n }\n\n @ProxyMethod({\n type: Types.String,\n isMatrix: true\n })\n create(\n @ProxyParameter(lengthParameterDescriptor) length: number,\n @ProxyParameter(valueParameterDescriptor) matrixValues: Matrix<number | bigint>,\n @ProxyParameter(exclusionNoneParameterDescriptor) exclusion: Nullishable<Exclusion>,\n @ProxyParameter(tweakParameterDescriptor) tweak: Nullishable<number | bigint>\n ): MatrixResultError<string, ThrowError, TError> {\n const exclusionOrUndefined = exclusion ?? undefined;\n const tweakOrUndefined = tweak ?? undefined;\n\n return this.mapMatrix(matrixValues, value => this._characterSetCreator.create(length, value, exclusionOrUndefined, tweakOrUndefined));\n }\n\n @ProxyMethod({\n infixBefore: \"Sequence\",\n type: Types.String,\n isMatrix: true\n })\n createSequence(\n @ProxyParameter(lengthParameterDescriptor) length: number,\n @ProxyParameter(startValueParameterDescriptor) startValue: number,\n @ProxyParameter(countParameterDescriptor) count: number,\n @ProxyParameter(exclusionNoneParameterDescriptor) exclusion: Nullishable<Exclusion>,\n @ProxyParameter(tweakParameterDescriptor) tweak: Nullishable<number | bigint>\n ): Matrix<string> {\n this.appExtension.validateSequenceCount(count);\n\n const exclusionOrUndefined = exclusion ?? undefined;\n const tweakOrUndefined = tweak ?? undefined;\n\n return LibProxy.matrixResult(this._characterSetCreator.create(length, new Sequence(startValue, count), exclusionOrUndefined, tweakOrUndefined));\n }\n\n @ProxyMethod({\n type: Types.Number,\n isMatrix: true\n })\n valueFor(\n @ProxyParameter(valueForSParameterDescriptor) matrixSs: Matrix<string>,\n @ProxyParameter(exclusionNoneParameterDescriptor) exclusion: Nullishable<Exclusion>,\n @ProxyParameter(tweakParameterDescriptor) tweak: Nullishable<number | bigint>\n ): MatrixResultError<ResultError<TBigInt, ThrowError, TError>, ThrowError, TError> {\n const exclusionOrUndefined = exclusion ?? undefined;\n const tweakOrUndefined = tweak ?? undefined;\n\n return this.mapMatrix(matrixSs, s => this.mapBigInt(this._characterSetCreator.valueFor(s, exclusionOrUndefined, tweakOrUndefined)));\n }\n}\n\n@ProxyClass({\n methodInfix: \"Numeric\",\n replaceParameterDescriptors: [\n {\n name: expandParameterDescriptor(exclusionNoneParameterDescriptor).name,\n replacement: exclusionFirstZeroParameterDescriptor\n }\n ]\n})\nexport class NumericProxy<ThrowError extends boolean, TError extends ErrorExtends<ThrowError>, TInvocationContext, TBigInt> extends CharacterSetCreatorProxy<ThrowError, TError, TInvocationContext, TBigInt> {\n constructor(appExtension: AppExtension<ThrowError, TError, TInvocationContext, TBigInt>) {\n super(appExtension, NUMERIC_CREATOR);\n }\n}\n\n@ProxyClass({\n methodInfix: \"Hexadecimal\",\n replaceParameterDescriptors: [\n {\n name: expandParameterDescriptor(exclusionNoneParameterDescriptor).name,\n replacement: exclusionAnyParameterDescriptor\n }\n ]\n})\nexport class HexadecimalProxy<ThrowError extends boolean, TError extends ErrorExtends<ThrowError>, TInvocationContext, TBigInt> extends CharacterSetCreatorProxy<ThrowError, TError, TInvocationContext, TBigInt> {\n constructor(appExtension: AppExtension<ThrowError, TError, TInvocationContext, TBigInt>) {\n super(appExtension, HEXADECIMAL_CREATOR);\n }\n}\n\n@ProxyClass({\n methodInfix: \"Alphabetic\"\n})\nexport class AlphabeticProxy<ThrowError extends boolean, TError extends ErrorExtends<ThrowError>, TInvocationContext, TBigInt> extends CharacterSetCreatorProxy<ThrowError, TError, TInvocationContext, TBigInt> {\n constructor(appExtension: AppExtension<ThrowError, TError, TInvocationContext, TBigInt>) {\n super(appExtension, ALPHABETIC_CREATOR);\n }\n}\n\n@ProxyClass({\n methodInfix: \"Alphanumeric\",\n replaceParameterDescriptors: [\n {\n name: expandParameterDescriptor(exclusionNoneParameterDescriptor).name,\n replacement: exclusionAnyParameterDescriptor\n }\n ]\n})\nexport class AlphanumericProxy<ThrowError extends boolean, TError extends ErrorExtends<ThrowError>, TInvocationContext, TBigInt> extends CharacterSetCreatorProxy<ThrowError, TError, TInvocationContext, TBigInt> {\n constructor(appExtension: AppExtension<ThrowError, TError, TInvocationContext, TBigInt>) {\n super(appExtension, ALPHANUMERIC_CREATOR);\n }\n}\n","import { type ParameterDescriptor, Types } from \"../descriptor.js\";\n\nconst exclusionParameterDescriptor: ParameterDescriptor = {\n name: \"exclusion\",\n type: Types.Number,\n isMatrix: false,\n isRequired: false\n};\n\nexport const exclusionNoneParameterDescriptor: ParameterDescriptor = {\n extendsDescriptor: exclusionParameterDescriptor,\n sortOrder: 0,\n name: \"exclusionNone\"\n};\n\nexport const exclusionFirstZeroParameterDescriptor: ParameterDescriptor = {\n extendsDescriptor: exclusionParameterDescriptor,\n sortOrder: 1,\n name: \"exclusionFirstZero\"\n};\n\nexport const exclusionAllNumericParameterDescriptor: ParameterDescriptor = {\n extendsDescriptor: exclusionParameterDescriptor,\n sortOrder: 2,\n name: \"exclusionAllNumeric\"\n};\n\nexport const exclusionAnyParameterDescriptor: ParameterDescriptor = {\n extendsDescriptor: exclusionParameterDescriptor,\n sortOrder: 3,\n name: \"exclusionAny\"\n};\n","export * from \"./character-set-proxy.js\";\nexport * from \"./check-proxy.js\";\nexport * from \"./identifier-proxy.js\";\n","import { AI39_CREATOR, AI64_VALIDATOR, AI82_CREATOR } from \"@aidc-toolkit/gs1\";\nimport type { AppExtension } from \"../app-extension.js\";\nimport { expandParameterDescriptor, ProxyClass } from \"../descriptor.js\";\nimport type { ErrorExtends } from \"../type.js\";\nimport { CharacterSetCreatorProxy, CharacterSetValidatorProxy } from \"../utility/index.js\";\nimport {\n exclusionAllNumericParameterDescriptor,\n exclusionNoneParameterDescriptor\n} from \"../utility/character-set-descriptor.js\";\n\n@ProxyClass({\n namespace: \"GS1\",\n methodInfix: \"AI82\",\n replaceParameterDescriptors: [\n {\n name: expandParameterDescriptor(exclusionNoneParameterDescriptor).name,\n replacement: exclusionAllNumericParameterDescriptor\n }\n ]\n})\nexport class AI82Proxy<ThrowError extends boolean, TError extends ErrorExtends<ThrowError>, TInvocationContext, TBigInt> extends CharacterSetCreatorProxy<ThrowError, TError, TInvocationContext, TBigInt> {\n constructor(appExtension: AppExtension<ThrowError, TError, TInvocationContext, TBigInt>) {\n super(appExtension, AI82_CREATOR);\n }\n}\n\n@ProxyClass({\n namespace: \"GS1\",\n methodInfix: \"AI39\",\n replaceParameterDescriptors: [\n {\n name: expandParameterDescriptor(exclusionNoneParameterDescriptor).name,\n replacement: exclusionAllNumericParameterDescriptor\n }\n ]\n})\nexport class AI39Proxy<ThrowError extends boolean, TError extends ErrorExtends<ThrowError>, TInvocationContext, TBigInt> extends CharacterSetCreatorProxy<ThrowError, TError, TInvocationContext, TBigInt> {\n constructor(appExtension: AppExtension<ThrowError, TError, TInvocationContext, TBigInt>) {\n super(appExtension, AI39_CREATOR);\n }\n}\n\n@ProxyClass({\n namespace: \"GS1\",\n methodInfix: \"AI64\"\n})\nexport class AI64Proxy<ThrowError extends boolean, TError extends ErrorExtends<ThrowError>, TInvocationContext, TBigInt> extends CharacterSetValidatorProxy<ThrowError, TError, TInvocationContext, TBigInt> {\n constructor(appExtension: AppExtension<ThrowError, TError, TInvocationContext, TBigInt>) {\n super(appExtension, AI64_VALIDATOR);\n }\n}\n","import {\n checkCharacterPair,\n checkDigit,\n hasValidCheckCharacterPair,\n hasValidCheckDigit,\n isValidPriceOrWeightCheckDigit,\n priceOrWeightCheckDigit\n} from \"@aidc-toolkit/gs1\";\nimport { type ParameterDescriptor, ProxyClass, ProxyMethod, ProxyParameter, Types } from \"../descriptor.js\";\nimport { LibProxy } from \"../lib-proxy.js\";\nimport type { ErrorExtends, Matrix, MatrixResultError, ResultError } from \"../type.js\";\n\nconst checkSParameterDescriptor: ParameterDescriptor = {\n name: \"checkS\",\n type: Types.String,\n isMatrix: true,\n isRequired: true\n};\n\nconst numericSParameterDescriptor: ParameterDescriptor = {\n extendsDescriptor: checkSParameterDescriptor,\n name: \"numericS\"\n};\n\nconst numericSFourOrFiveDigitsParameterDescriptor: ParameterDescriptor = {\n extendsDescriptor: numericSParameterDescriptor,\n sortOrder: 0,\n name: \"numericSFourOrFiveDigits\"\n};\n\nconst numericSWithCheckDigitParameterDescriptor: ParameterDescriptor = {\n extendsDescriptor: numericSParameterDescriptor,\n sortOrder: 1,\n name: \"numericSWithCheckDigit\"\n};\n\nconst checkDigitParameterDescriptor: ParameterDescriptor = {\n extendsDescriptor: numericSParameterDescriptor,\n sortOrder: 2,\n name: \"checkDigit\",\n isMatrix: false\n};\n\nconst ai82SParameterDescriptor: ParameterDescriptor = {\n extendsDescriptor: checkSParameterDescriptor,\n name: \"ai82S\"\n};\n\n// eslint-disable-next-line no-useless-assignment -- ESLint bug.\nconst ai82SWithCheckCharacterPairParameterDescriptor: ParameterDescriptor = {\n extendsDescriptor: ai82SParameterDescriptor,\n name: \"ai82SWithCheckCharacterPair\"\n};\n\n@ProxyClass({\n namespace: \"GS1\"\n})\nexport class CheckProxy<ThrowError extends boolean, TError extends ErrorExtends<ThrowError>, TInvocationContext, TBigInt> extends LibProxy<ThrowError, TError, TInvocationContext, TBigInt> {\n @ProxyMethod({\n type: Types.String,\n isMatrix: true\n })\n checkDigit(\n @ProxyParameter(numericSParameterDescriptor) matrixSs: Matrix<string>\n ): MatrixResultError<string, ThrowError, TError> {\n return this.mapMatrix(matrixSs, s => checkDigit(s));\n }\n\n @ProxyMethod({\n type: Types.String,\n isMatrix: true\n })\n hasValidCheckDigit(\n @ProxyParameter(numericSWithCheckDigitParameterDescriptor) matrixSs: Matrix<string>\n ): MatrixResultError<boolean, ThrowError, TError> {\n return this.mapMatrix(matrixSs, s => hasValidCheckDigit(s));\n }\n\n @ProxyMethod({\n type: Types.String,\n isMatrix: true\n })\n priceOrWeightCheckDigit(\n @ProxyParameter(numericSFourOrFiveDigitsParameterDescriptor) matrixSs: Matrix<string>\n ): MatrixResultError<string, ThrowError, TError> {\n return this.mapMatrix(matrixSs, s => priceOrWeightCheckDigit(s));\n }\n\n @ProxyMethod({\n type: Types.String,\n isMatrix: false\n })\n isValidPriceOrWeightCheckDigit(\n @ProxyParameter({\n ...numericSFourOrFiveDigitsParameterDescriptor,\n isMatrix: false\n }) s: string,\n @ProxyParameter(checkDigitParameterDescriptor) checkDigit: string\n ): ResultError<boolean, ThrowError, TError> {\n return isValidPriceOrWeightCheckDigit(s, checkDigit);\n }\n\n @ProxyMethod({\n type: Types.String,\n isMatrix: true\n })\n checkCharacterPair(\n @ProxyParameter(ai82SParameterDescriptor) matrixSs: Matrix<string>\n ): MatrixResultError<string, ThrowError, TError> {\n return this.mapMatrix(matrixSs, s => checkCharacterPair(s));\n }\n\n @ProxyMethod({\n type: Types.String,\n isMatrix: true\n })\n hasValidCheckCharacterPair(\n @ProxyParameter(ai82SWithCheckCharacterPairParameterDescriptor) matrixSs: Matrix<string>\n ): MatrixResultError<boolean, ThrowError, TError> {\n return this.mapMatrix(matrixSs, s => hasValidCheckCharacterPair(s));\n }\n}\n","import { isNullish, type Nullishable } from \"@aidc-toolkit/core\";\nimport {\n GTINCreator,\n type GTINDescriptor,\n type GTINLevel,\n GTINTypes,\n GTINValidator,\n type IdentifierCreator,\n type IdentifierDescriptor,\n type IdentifierType,\n type IdentifierTypes,\n type IdentifierTypeValidator,\n type IdentifierValidation,\n IdentifierValidators,\n type NonGTINNumericIdentifierCreator,\n type NonGTINNumericIdentifierDescriptor,\n type NonGTINNumericIdentifierType,\n type NonNumericIdentifierCreator,\n type NonNumericIdentifierDescriptor,\n type NonNumericIdentifierType,\n type NonNumericIdentifierValidation,\n type NumericIdentifierCreator,\n type NumericIdentifierDescriptor,\n type NumericIdentifierType,\n type NumericIdentifierValidation,\n PrefixManager,\n type PrefixType,\n PrefixTypes,\n PrefixValidator,\n type SerializableNumericIdentifierCreator,\n type SerializableNumericIdentifierDescriptor,\n type SerializableNumericIdentifierType\n} from \"@aidc-toolkit/gs1\";\nimport { Sequence } from \"@aidc-toolkit/utility\";\nimport type { AppExtension } from \"../app-extension.js\";\nimport {\n expandParameterDescriptor,\n type ParameterDescriptor,\n ProxyClass,\n ProxyMethod,\n ProxyParameter,\n Types\n} from \"../descriptor.js\";\nimport { LibProxy } from \"../lib-proxy.js\";\nimport { i18nextAppExtension } from \"../locale/i18n.js\";\nimport type { ErrorExtends, Matrix, MatrixResultError } from \"../type.js\";\nimport { exclusionAllNumericParameterDescriptor } from \"../utility/character-set-descriptor.js\";\nimport { StringProxy } from \"../utility/string-proxy.js\";\nimport {\n countParameterDescriptor,\n startValueParameterDescriptor,\n valueParameterDescriptor\n} from \"../utility/transformer-descriptor.js\";\n\nconst identifierParameterDescriptor: ParameterDescriptor = {\n name: \"identifier\",\n type: Types.String,\n isMatrix: true,\n isRequired: true\n};\n\nconst validateIdentifierParameterDescriptor: ParameterDescriptor = {\n extendsDescriptor: identifierParameterDescriptor,\n sortOrder: 0,\n name: \"validateIdentifier\"\n};\n\nabstract class IdentifierValidatorProxy<ThrowError extends boolean, TError extends ErrorExtends<ThrowError>, TInvocationContext, TBigInt, TIdentifierType extends IdentifierType> extends StringProxy<ThrowError, TError, TInvocationContext, TBigInt> {\n private readonly _validator: IdentifierTypeValidator<TIdentifierType>;\n\n protected constructor(appExtension: AppExtension<ThrowError, TError, TInvocationContext, TBigInt>, validator: IdentifierTypeValidator<TIdentifierType>) {\n super(appExtension);\n\n this._validator = validator;\n }\n\n protected get validator(): IdentifierTypeValidator<TIdentifierType> {\n return this._validator;\n }\n}\n\nabstract class NumericIdentifierValidatorProxy<ThrowError extends boolean, TError extends ErrorExtends<ThrowError>, TInvocationContext, TBigInt, TNumericIdentifierType extends NumericIdentifierType> extends IdentifierValidatorProxy<ThrowError, TError, TInvocationContext, TBigInt, TNumericIdentifierType> {\n @ProxyMethod({\n type: Types.String,\n isMatrix: true\n })\n validate(\n @ProxyParameter(validateIdentifierParameterDescriptor) matrixIdentifiers: Matrix<string>\n ): MatrixResultError<string, ThrowError, TError> {\n return this.validateString(this.validator, matrixIdentifiers);\n }\n}\n\nabstract class GTINValidatorProxy<ThrowError extends boolean, TError extends ErrorExtends<ThrowError>, TInvocationContext, TBigInt> extends NumericIdentifierValidatorProxy<ThrowError, TError, TInvocationContext, TBigInt, typeof IdentifierTypes.GTIN> {\n}\n\nabstract class NonGTINNumericIdentifierValidatorProxy<ThrowError extends boolean, TError extends ErrorExtends<ThrowError>, TInvocationContext, TBigInt, TNonGTINNumericIdentifierType extends NonGTINNumericIdentifierType = NonGTINNumericIdentifierType> extends NumericIdentifierValidatorProxy<ThrowError, TError, TInvocationContext, TBigInt, TNonGTINNumericIdentifierType> {\n}\n\nabstract class SerializableNumericIdentifierValidatorProxy<ThrowError extends boolean, TError extends ErrorExtends<ThrowError>, TInvocationContext, TBigInt> extends NonGTINNumericIdentifierValidatorProxy<ThrowError, TError, TInvocationContext, TBigInt, SerializableNumericIdentifierType> {\n}\n\nabstract class NonNumericIdentifierValidatorProxy<ThrowError extends boolean, TError extends ErrorExtends<ThrowError>, TInvocationContext, TBigInt> extends IdentifierValidatorProxy<ThrowError, TError, TInvocationContext, TBigInt, NonNumericIdentifierType> {\n @ProxyMethod({\n type: Types.String,\n isMatrix: true\n })\n validate(\n @ProxyParameter(validateIdentifierParameterDescriptor) matrixIdentifiers: Matrix<string>,\n @ProxyParameter(exclusionAllNumericParameterDescriptor) exclusion: Nullishable<NonNumericIdentifierValidation[\"exclusion\"]>\n ): MatrixResultError<string, ThrowError, TError> {\n return this.validateString(this.validator, matrixIdentifiers, {\n exclusion: exclusion ?? undefined\n } satisfies NonNumericIdentifierValidation);\n }\n}\n\n@ProxyClass({\n namespace: \"GS1\",\n methodInfix: \"GTIN13\"\n})\nexport class GTIN13ValidatorProxy<ThrowError extends boolean, TError extends ErrorExtends<ThrowError>, TInvocationContext, TBigInt> extends GTINValidatorProxy<ThrowError, TError, TInvocationContext, TBigInt> {\n constructor(appExtension: AppExtension<ThrowError, TError, TInvocationContext, TBigInt>) {\n super(appExtension, IdentifierValidators.GTIN[GTINTypes.GTIN13]);\n }\n}\n\n@ProxyClass({\n namespace: \"GS1\",\n methodInfix: \"GTIN12\"\n})\nexport class GTIN12ValidatorProxy<ThrowError extends boolean, TError extends ErrorExtends<ThrowError>, TInvocationContext, TBigInt> extends GTINValidatorProxy<ThrowError, TError, TInvocationContext, TBigInt> {\n constructor(appExtension: AppExtension<ThrowError, TError, TInvocationContext, TBigInt>) {\n super(appExtension, IdentifierValidators.GTIN[GTINTypes.GTIN12]);\n }\n}\n\n@ProxyClass({\n namespace: \"GS1\",\n methodInfix: \"GTIN8\"\n})\nexport class GTIN8ValidatorProxy<ThrowError extends boolean, TError extends ErrorExtends<ThrowError>, TInvocationContext, TBigInt> extends GTINValidatorProxy<ThrowError, TError, TInvocationContext, TBigInt> {\n constructor(appExtension: AppExtension<ThrowError, TError, TInvocationContext, TBigInt>) {\n super(appExtension, IdentifierValidators.GTIN[GTINTypes.GTIN8]);\n }\n}\n\nconst zeroSuppressibleGTIN12ParameterDescriptor: ParameterDescriptor = {\n extendsDescriptor: identifierParameterDescriptor,\n name: \"zeroSuppressibleGTIN12\"\n};\n\nconst zeroSuppressedGTIN12ParameterDescriptor: ParameterDescriptor = {\n extendsDescriptor: identifierParameterDescriptor,\n name: \"zeroSuppressedGTIN12\"\n};\n\nconst indicatorDigitParameterDescriptor: ParameterDescriptor = {\n name: \"indicatorDigit\",\n type: Types.String,\n isMatrix: false,\n isRequired: true\n};\n\nconst convertGTINParameterDescriptor: ParameterDescriptor = {\n extendsDescriptor: identifierParameterDescriptor,\n name: \"convertGTIN\"\n};\n\nconst normalizeGTINParameterDescriptor: ParameterDescriptor = {\n extendsDescriptor: identifierParameterDescriptor,\n name: \"normalizeGTIN\"\n};\n\nconst validateGTINParameterDescriptor: ParameterDescriptor = {\n extendsDescriptor: identifierParameterDescriptor,\n name: \"validateGTIN\"\n};\n\nconst gtinLevelParameterDescriptor: ParameterDescriptor = {\n name: \"gtinLevel\",\n type: Types.Number,\n isMatrix: false,\n isRequired: false\n};\n\nconst validateGTIN14ParameterDescriptor: ParameterDescriptor = {\n extendsDescriptor: identifierParameterDescriptor,\n name: \"validateGTIN14\"\n};\n\nconst rcnFormatParameterDescriptor: ParameterDescriptor = {\n name: \"rcnFormat\",\n type: Types.String,\n isMatrix: false,\n isRequired: true\n};\n\nconst rcnParameterDescriptor: ParameterDescriptor = {\n name: \"rcn\",\n type: Types.String,\n isMatrix: true,\n isRequired: true\n};\n\nconst rcnItemReferenceParameterDescriptor: ParameterDescriptor = {\n name: \"rcnItemReference\",\n type: Types.Number,\n isMatrix: false,\n isRequired: true\n};\n\nconst rcnPriceOrWeightParameterDescriptor: ParameterDescriptor = {\n name: \"rcnPriceOrWeight\",\n type: Types.Number,\n isMatrix: true,\n isRequired: true\n};\n\n@ProxyClass({\n namespace: \"GS1\"\n})\nexport class GTINValidatorStaticProxy<ThrowError extends boolean, TError extends ErrorExtends<ThrowError>, TInvocationContext, TBigInt> extends LibProxy<ThrowError, TError, TInvocationContext, TBigInt> {\n @ProxyMethod({\n type: Types.String,\n isMatrix: true\n })\n zeroSuppressGTIN12(\n @ProxyParameter(zeroSuppressibleGTIN12ParameterDescriptor) matrixGTIN12s: Matrix<string>\n ): MatrixResultError<string, ThrowError, TError> {\n return this.mapMatrix(matrixGTIN12s, gtin12 => GTINValidator.zeroSuppress(gtin12));\n }\n\n @ProxyMethod({\n type: Types.String,\n isMatrix: true\n })\n zeroExpandGTIN12(\n @ProxyParameter(zeroSuppressedGTIN12ParameterDescriptor) matrixZeroSuppressedGTIN12s: Matrix<string>\n ): MatrixResultError<string, ThrowError, TError> {\n return this.mapMatrix(matrixZeroSuppressedGTIN12s, zeroSuppressedGTIN12 => GTINValidator.zeroExpand(zeroSuppressedGTIN12));\n }\n\n @ProxyMethod({\n type: Types.String,\n isMatrix: true\n })\n convertToGTIN14(\n @ProxyParameter(indicatorDigitParameterDescriptor) indicatorDigit: string,\n @ProxyParameter(convertGTINParameterDescriptor) matrixGTINs: Matrix<string>\n ): MatrixResultError<string, ThrowError, TError> {\n return this.mapMatrix(matrixGTINs, gtin => GTINValidator.convertToGTIN14(indicatorDigit, gtin));\n }\n\n @ProxyMethod({\n type: Types.String,\n isMatrix: true\n })\n normalizeGTIN(\n @ProxyParameter(normalizeGTINParameterDescriptor) matrixGTINs: Matrix<string>\n ): MatrixResultError<string, ThrowError, TError> {\n return this.mapMatrix(matrixGTINs, gtin => GTINValidator.normalize(gtin));\n }\n\n @ProxyMethod({\n type: Types.String,\n isMatrix: true\n })\n validateGTIN(\n @ProxyParameter(validateGTINParameterDescriptor) matrixGTINs: Matrix<string>,\n @ProxyParameter(gtinLevelParameterDescriptor) gtinLevel: Nullishable<GTINLevel>\n ): Matrix<string> {\n const gtinLevelOrUndefined = gtinLevel ?? undefined;\n\n return LibProxy.mapMatrixRangeError(matrixGTINs, (gtin) => {\n GTINValidator.validateAny(gtin, gtinLevelOrUndefined);\n });\n }\n\n @ProxyMethod({\n type: Types.String,\n isMatrix: true\n })\n validateGTIN14(\n @ProxyParameter(validateGTIN14ParameterDescriptor) matrixGTIN14s: Matrix<string>\n ): Matrix<string> {\n return LibProxy.mapMatrixRangeError(matrixGTIN14s, (gtin14) => {\n GTINValidator.validateGTIN14(gtin14);\n });\n }\n\n @ProxyMethod({\n type: Types.Number,\n isMatrix: true\n })\n parseVariableMeasureRCN(\n @ProxyParameter(rcnFormatParameterDescriptor) format: string,\n @ProxyParameter(rcnParameterDescriptor) matrixRCNs: Matrix<string>\n ): MatrixResultError<number, ThrowError, TError> {\n return this.mapArray(matrixRCNs, (rcn) => {\n const rcnReference = GTINValidator.parseVariableMeasureRCN(format, rcn);\n\n return [rcnReference.itemReference, rcnReference.priceOrWeight];\n });\n }\n}\n\n@ProxyClass({\n namespace: \"GS1\",\n methodInfix: \"GLN\"\n})\nexport class GLNValidatorProxy<ThrowError extends boolean, TError extends ErrorExtends<ThrowError>, TInvocationContext, TBigInt> extends NonGTINNumericIdentifierValidatorProxy<ThrowError, TError, TInvocationContext, TBigInt> {\n constructor(appExtension: AppExtension<ThrowError, TError, TInvocationContext, TBigInt>) {\n super(appExtension, IdentifierValidators.GLN);\n }\n}\n\n@ProxyClass({\n namespace: \"GS1\",\n methodInfix: \"SSCC\"\n})\nexport class SSCCValidatorProxy<ThrowError extends boolean, TError extends ErrorExtends<ThrowError>, TInvocationContext, TBigInt> extends NonGTINNumericIdentifierValidatorProxy<ThrowError, TError, TInvocationContext, TBigInt> {\n constructor(appExtension: AppExtension<ThrowError, TError, TInvocationContext, TBigInt>) {\n super(appExtension, IdentifierValidators.SSCC);\n }\n}\n\n@ProxyClass({\n namespace: \"GS1\",\n methodInfix: \"GRAI\"\n})\nexport class GRAIValidatorProxy<ThrowError extends boolean, TError extends ErrorExtends<ThrowError>, TInvocationContext, TBigInt> extends SerializableNumericIdentifierValidatorProxy<ThrowError, TError, TInvocationContext, TBigInt> {\n constructor(appExtension: AppExtension<ThrowError, TError, TInvocationContext, TBigInt>) {\n super(appExtension, IdentifierValidators.GRAI);\n }\n}\n\n@ProxyClass({\n namespace: \"GS1\",\n methodInfix: \"GIAI\"\n})\nexport class GIAIValidatorProxy<ThrowError extends boolean, TError extends ErrorExtends<ThrowError>, TInvocationContext, TBigInt> extends NonNumericIdentifierValidatorProxy<ThrowError, TError, TInvocationContext, TBigInt> {\n constructor(appExtension: AppExtension<ThrowError, TError, TInvocationContext, TBigInt>) {\n super(appExtension, IdentifierValidators.GIAI);\n }\n}\n\n@ProxyClass({\n namespace: \"GS1\",\n methodInfix: \"GSRN\"\n})\nexport class GSRNValidatorProxy<ThrowError extends boolean, TError extends ErrorExtends<ThrowError>, TInvocationContext, TBigInt> extends NonGTINNumericIdentifierValidatorProxy<ThrowError, TError, TInvocationContext, TBigInt> {\n constructor(appExtension: AppExtension<ThrowError, TError, TInvocationContext, TBigInt>) {\n super(appExtension, IdentifierValidators.GSRN);\n }\n}\n\n@ProxyClass({\n namespace: \"GS1\",\n methodInfix: \"GDTI\"\n})\nexport class GDTIValidatorProxy<ThrowError extends boolean, TError extends ErrorExtends<ThrowError>, TInvocationContext, TBigInt> extends SerializableNumericIdentifierValidatorProxy<ThrowError, TError, TInvocationContext, TBigInt> {\n constructor(appExtension: AppExtension<ThrowError, TError, TInvocationContext, TBigInt>) {\n super(appExtension, IdentifierValidators.GDTI);\n }\n}\n\n@ProxyClass({\n namespace: \"GS1\",\n methodInfix: \"GINC\"\n})\nexport class GINCValidatorProxy<ThrowError extends boolean, TError extends ErrorExtends<ThrowError>, TInvocationContext, TBigInt> extends NonNumericIdentifierValidatorProxy<ThrowError, TError, TInvocationContext, TBigInt> {\n constructor(appExtension: AppExtension<ThrowError, TError, TInvocationContext, TBigInt>) {\n super(appExtension, IdentifierValidators.GINC);\n }\n}\n\n@ProxyClass({\n namespace: \"GS1\",\n methodInfix: \"GSIN\"\n})\nexport class GSINValidatorProxy<ThrowError extends boolean, TError extends ErrorExtends<ThrowError>, TInvocationContext, TBigInt> extends NonGTINNumericIdentifierValidatorProxy<ThrowError, TError, TInvocationContext, TBigInt> {\n constructor(appExtension: AppExtension<ThrowError, TError, TInvocationContext, TBigInt>) {\n super(appExtension, IdentifierValidators.GSIN);\n }\n}\n\n@ProxyClass({\n namespace: \"GS1\",\n methodInfix: \"GCN\"\n})\nexport class GCNValidatorProxy<ThrowError extends boolean, TError extends ErrorExtends<ThrowError>, TInvocationContext, TBigInt> extends SerializableNumericIdentifierValidatorProxy<ThrowError, TError, TInvocationContext, TBigInt> {\n constructor(appExtension: AppExtension<ThrowError, TError, TInvocationContext, TBigInt>) {\n super(appExtension, IdentifierValidators.GCN);\n }\n}\n\n@ProxyClass({\n namespace: \"GS1\",\n methodInfix: \"CPID\"\n})\nexport class CPIDValidatorProxy<ThrowError extends boolean, TError extends ErrorExtends<ThrowError>, TInvocationContext, TBigInt> extends NonNumericIdentifierValidatorProxy<ThrowError, TError, TInvocationContext, TBigInt> {\n constructor(appExtension: AppExtension<ThrowError, TError, TInvocationContext, TBigInt>) {\n super(appExtension, IdentifierValidators.CPID);\n }\n}\n\n@ProxyClass({\n namespace: \"GS1\",\n methodInfix: \"GMN\"\n})\nexport class GMNValidatorProxy<ThrowError extends boolean, TError extends ErrorExtends<ThrowError>, TInvocationContext, TBigInt> extends NonNumericIdentifierValidatorProxy<ThrowError, TError, TInvocationContext, TBigInt> {\n constructor(appExtension: AppExtension<ThrowError, TError, TInvocationContext, TBigInt>) {\n super(appExtension, IdentifierValidators.GMN);\n }\n}\n\nconst prefixParameterDescriptor: ParameterDescriptor = {\n name: \"prefix\",\n type: Types.String,\n isMatrix: false,\n isRequired: true\n};\n\nconst prefixTypeParameterDescriptor: ParameterDescriptor = {\n name: \"prefixType\",\n type: Types.Number,\n isMatrix: false,\n isRequired: false\n};\n\nconst tweakFactorParameterDescriptor: ParameterDescriptor = {\n name: \"tweakFactor\",\n type: Types.Number,\n isMatrix: false,\n isRequired: false\n};\n\nconst prefixDefinitionParameterDescriptor: ParameterDescriptor = {\n name: \"prefixDefinition\",\n type: Types.Any,\n isMatrix: true,\n isRequired: true\n};\n\nconst prefixDefinitionGS1UPCParameterDescriptor: ParameterDescriptor = {\n extendsDescriptor: prefixDefinitionParameterDescriptor,\n name: \"prefixDefinitionGS1UPC\"\n};\n\nconst prefixDefinitionAnyParameterDescriptor: ParameterDescriptor = {\n extendsDescriptor: prefixDefinitionParameterDescriptor,\n name: \"prefixDefinitionAny\"\n};\n\n@ProxyClass({\n namespace: \"GS1\"\n})\nexport class PrefixManagerProxy<ThrowError extends boolean, TError extends ErrorExtends<ThrowError>, TInvocationContext, TBigInt> extends LibProxy<ThrowError, TError, TInvocationContext, TBigInt> {\n @ProxyMethod({\n type: Types.Any,\n isMatrix: true\n })\n definePrefix(\n @ProxyParameter(prefixParameterDescriptor) prefix: string,\n @ProxyParameter(prefixTypeParameterDescriptor) prefixType: Nullishable<PrefixType>,\n @ProxyParameter(tweakFactorParameterDescriptor) tweakFactor: Nullishable<number>\n ): Matrix<unknown> {\n // Parameters will be validated by IdentifierCreatorProxy.getCreator().\n return [[prefix, prefixType, tweakFactor]];\n }\n}\n\nabstract class IdentifierCreatorProxy<ThrowError extends boolean, TError extends ErrorExtends<ThrowError>, TInvocationContext, TBigInt, TIdentifierDescriptor extends IdentifierDescriptor, TIdentifierValidation extends IdentifierValidation, TIdentifierCreator extends IdentifierCreator<TIdentifierDescriptor, TIdentifierValidation>> extends LibProxy<ThrowError, TError, TInvocationContext, TBigInt> {\n private static readonly PREFIX_TYPES: Array<PrefixType | undefined> = [PrefixTypes.GS1CompanyPrefix, PrefixTypes.UPCCompanyPrefix, PrefixTypes.GS18Prefix];\n\n private readonly _getCreator: (prefixManager: PrefixManager) => TIdentifierCreator;\n\n protected constructor(appExtension: AppExtension<ThrowError, TError, TInvocationContext, TBigInt>, getCreator: (prefixManager: PrefixManager) => TIdentifierCreator) {\n super(appExtension);\n\n this._getCreator = getCreator;\n }\n\n protected getCreator(prefixDefinition: Matrix<unknown>): TIdentifierCreator {\n const reducedPrefixDefinition = prefixDefinition.length === 1 ?\n // Prefix definition is horizontal.\n prefixDefinition[0] :\n // Prefix definition is vertical.\n prefixDefinition.map((prefixDefinitionRow) => {\n if (prefixDefinitionRow.length !== 1) {\n throw new RangeError(i18nextAppExtension.t(\"IdentifierCreatorProxy.prefixDefinitionMustBeOneDimensional\"));\n }\n\n return prefixDefinitionRow[0];\n });\n\n if (reducedPrefixDefinition.length > 3) {\n throw new RangeError(i18nextAppExtension.t(\"IdentifierCreatorProxy.prefixDefinitionMustHaveMaximumThreeElements\"));\n }\n const prefix = reducedPrefixDefinition[0];\n \n if (typeof prefix !== \"string\") {\n throw new RangeError(i18nextAppExtension.t(\"IdentifierCreatorProxy.prefixMustBeString\"));\n }\n\n const prefixTypeIndex = reducedPrefixDefinition[1] ?? 0;\n\n if (typeof prefixTypeIndex !== \"number\" || prefixTypeIndex < 0 || prefixTypeIndex >= IdentifierCreatorProxy.PREFIX_TYPES.length) {\n throw new RangeError(i18nextAppExtension.t(\"IdentifierCreatorProxy.prefixTypeMustBeNumber\", {\n maximumPrefixType: IdentifierCreatorProxy.PREFIX_TYPES.length - 1\n }));\n }\n\n const prefixType = IdentifierCreatorProxy.PREFIX_TYPES[prefixTypeIndex];\n \n // Undefined is included in type in case of invalid input.\n if (prefixType === undefined) {\n throw new RangeError(i18nextAppExtension.t(\"IdentifierCreatorProxy.invalidPrefixType\"));\n }\n \n const prefixManager = PrefixManager.get(prefixType, prefix);\n\n const tweakFactor = reducedPrefixDefinition[2];\n \n if (!isNullish(tweakFactor)) {\n if (typeof tweakFactor !== \"number\") {\n throw new RangeError(i18nextAppExtension.t(\"IdentifierCreatorProxy.tweakFactorMustBeNumber\"));\n }\n\n prefixManager.tweakFactor = tweakFactor;\n } else {\n prefixManager.resetTweakFactor();\n }\n \n return this._getCreator(prefixManager);\n }\n}\n\nconst sparseParameterDescriptor: ParameterDescriptor = {\n name: \"sparse\",\n type: Types.Boolean,\n isMatrix: false,\n isRequired: false\n};\n\nabstract class NumericIdentifierCreatorProxy<ThrowError extends boolean, TError extends ErrorExtends<ThrowError>, TInvocationContext, TBigInt, TNumericIdentifierDescriptor extends NumericIdentifierDescriptor, TNumericIdentifierCreator extends NumericIdentifierCreator<TNumericIdentifierDescriptor>> extends IdentifierCreatorProxy<ThrowError, TError, TInvocationContext, TBigInt, TNumericIdentifierDescriptor, NumericIdentifierValidation, TNumericIdentifierCreator> {\n @ProxyMethod({\n type: Types.String,\n isMatrix: true\n })\n create(\n @ProxyParameter(prefixDefinitionGS1UPCParameterDescriptor) prefixDefinition: Matrix<unknown>,\n @ProxyParameter(valueParameterDescriptor) matrixValues: Matrix<number | bigint>,\n @ProxyParameter(sparseParameterDescriptor) sparse: Nullishable<boolean>\n ): MatrixResultError<string, ThrowError, TError> {\n const creator = this.getCreator(prefixDefinition);\n\n const sparseOrUndefined = sparse ?? undefined;\n\n return this.mapMatrix(matrixValues, value => creator.create(value, sparseOrUndefined));\n }\n\n @ProxyMethod({\n infixBefore: \"Sequence\",\n type: Types.String,\n isMatrix: true\n })\n createSequence(\n @ProxyParameter(prefixDefinitionGS1UPCParameterDescriptor) prefixDefinition: Matrix<unknown>,\n @ProxyParameter(startValueParameterDescriptor) startValue: number,\n @ProxyParameter(countParameterDescriptor) count: number,\n @ProxyParameter(sparseParameterDescriptor) sparse: Nullishable<boolean>\n ): Matrix<string> {\n this.appExtension.validateSequenceCount(count);\n\n return LibProxy.matrixResult(this.getCreator(prefixDefinition).create(new Sequence(startValue, count), sparse ?? undefined));\n }\n\n @ProxyMethod({\n type: Types.String,\n isMatrix: true\n })\n createAll(\n @ProxyParameter(prefixDefinitionGS1UPCParameterDescriptor) prefixDefinition: Matrix<unknown>\n ): Matrix<string> {\n const creator = this.getCreator(prefixDefinition);\n\n this.appExtension.validateSequenceCount(creator.capacity);\n\n return LibProxy.matrixResult(creator.createAll());\n }\n}\n\nabstract class NonGTINNumericIdentifierCreatorProxy<ThrowError extends boolean, TError extends ErrorExtends<ThrowError>, TInvocationContext, TBigInt, TNonGTINNumericIdentifierDescriptor extends NonGTINNumericIdentifierDescriptor, TNonGTINNumericIdentifierCreator extends NonGTINNumericIdentifierCreator> extends NumericIdentifierCreatorProxy<ThrowError, TError, TInvocationContext, TBigInt, TNonGTINNumericIdentifierDescriptor, TNonGTINNumericIdentifierCreator> {\n}\n\nconst singleValueParameterDescriptor: ParameterDescriptor = {\n extendsDescriptor: valueParameterDescriptor,\n isMatrix: false\n};\n\nconst baseIdentifierParameterDescriptor: ParameterDescriptor = {\n extendsDescriptor: identifierParameterDescriptor,\n name: \"baseIdentifier\",\n isMatrix: false\n};\n\nconst serialComponentParameterDescriptor: ParameterDescriptor = {\n name: \"serialComponent\",\n type: Types.String,\n isMatrix: true,\n isRequired: true\n};\n\nabstract class SerializableNumericIdentifierCreatorProxy<ThrowError extends boolean, TError extends ErrorExtends<ThrowError>, TInvocationContext, TBigInt> extends NonGTINNumericIdentifierCreatorProxy<ThrowError, TError, TInvocationContext, TBigInt, SerializableNumericIdentifierDescriptor, SerializableNumericIdentifierCreator> {\n @ProxyMethod({\n type: Types.String,\n isMatrix: true\n })\n createSerialized(\n @ProxyParameter(prefixDefinitionGS1UPCParameterDescriptor) prefixDefinition: Matrix<unknown>,\n @ProxyParameter(singleValueParameterDescriptor) value: number,\n @ProxyParameter(serialComponentParameterDescriptor) matrixSerialComponents: Matrix<string>,\n @ProxyParameter(sparseParameterDescriptor) sparse: Nullishable<boolean>\n ): MatrixResultError<string, ThrowError, TError> {\n const creator = this.getCreator(prefixDefinition);\n\n const sparseOrUndefined = sparse ?? undefined;\n\n return this.mapMatrix(matrixSerialComponents, serialComponent => creator.createSerialized(value, serialComponent, sparseOrUndefined));\n }\n\n @ProxyMethod({\n type: Types.String,\n isMatrix: true\n })\n concatenate(\n @ProxyParameter(baseIdentifierParameterDescriptor) baseIdentifier: string,\n @ProxyParameter(serialComponentParameterDescriptor) matrixSerialComponents: Matrix<string>\n ): MatrixResultError<string, ThrowError, TError> {\n const creator = this.getCreator([[baseIdentifier.substring(0, !baseIdentifier.startsWith(\"0\") ? PrefixValidator.GS1_COMPANY_PREFIX_MINIMUM_LENGTH : PrefixValidator.UPC_COMPANY_PREFIX_MINIMUM_LENGTH + 1), PrefixTypes.GS1CompanyPrefix]]);\n\n return this.mapMatrix(matrixSerialComponents, serialComponent => creator.concatenate(baseIdentifier, serialComponent));\n }\n}\n\nconst referenceParameterDescriptor: ParameterDescriptor = {\n name: \"reference\",\n type: Types.String,\n isMatrix: true,\n isRequired: true\n};\n\nabstract class NonNumericIdentifierCreatorProxy<ThrowError extends boolean, TError extends ErrorExtends<ThrowError>, TInvocationContext, TBigInt> extends IdentifierCreatorProxy<ThrowError, TError, TInvocationContext, TBigInt, NonNumericIdentifierDescriptor, NonNumericIdentifierValidation, NonNumericIdentifierCreator> {\n @ProxyMethod({\n type: Types.String,\n isMatrix: true\n })\n create(\n @ProxyParameter(prefixDefinitionGS1UPCParameterDescriptor) prefixDefinition: Matrix<unknown>,\n @ProxyParameter(referenceParameterDescriptor) matrixReferences: Matrix<string>\n ): MatrixResultError<string, ThrowError, TError> {\n const creator = this.getCreator(prefixDefinition);\n\n return this.mapMatrix(matrixReferences, reference => creator.create(reference));\n }\n}\n\n@ProxyClass({\n namespace: \"GS1\",\n methodInfix: \"GTIN\",\n replaceParameterDescriptors: [\n {\n name: expandParameterDescriptor(prefixDefinitionGS1UPCParameterDescriptor).name,\n replacement: prefixDefinitionAnyParameterDescriptor\n }\n ]\n})\nexport class GTINCreatorProxy<ThrowError extends boolean, TError extends ErrorExtends<ThrowError>, TInvocationContext, TBigInt> extends NumericIdentifierCreatorProxy<ThrowError, TError, TInvocationContext, TBigInt, GTINDescriptor, GTINCreator> {\n constructor(appExtension: AppExtension<ThrowError, TError, TInvocationContext, TBigInt>) {\n super(appExtension, prefixManager => prefixManager.gtinCreator);\n }\n\n @ProxyMethod({\n type: Types.String,\n isMatrix: true,\n ignoreInfix: true\n })\n createGTIN14(\n @ProxyParameter(indicatorDigitParameterDescriptor) indicatorDigit: string,\n @ProxyParameter(prefixDefinitionAnyParameterDescriptor) prefixDefinition: Matrix<unknown>,\n @ProxyParameter(valueParameterDescriptor) matrixValues: Matrix<number | bigint>,\n @ProxyParameter(sparseParameterDescriptor) sparse: Nullishable<boolean>\n ): MatrixResultError<string, ThrowError, TError> {\n const creator = this.getCreator(prefixDefinition);\n\n const sparseOrUndefined = sparse ?? undefined;\n\n return this.mapMatrix(matrixValues, value => creator.createGTIN14(indicatorDigit, value, sparseOrUndefined));\n }\n\n @ProxyMethod({\n type: Types.String,\n isMatrix: true,\n ignoreInfix: true\n })\n createVariableMeasureRCN(\n @ProxyParameter(rcnFormatParameterDescriptor) format: string,\n @ProxyParameter(rcnItemReferenceParameterDescriptor) itemReference: number,\n @ProxyParameter(rcnPriceOrWeightParameterDescriptor) matrixPricesOrWeights: Matrix<number>\n ): MatrixResultError<string, ThrowError, TError> {\n return this.mapMatrix(matrixPricesOrWeights, priceOrWeight => GTINCreator.createVariableMeasureRCN(format, itemReference, priceOrWeight));\n }\n}\n\n@ProxyClass({\n namespace: \"GS1\",\n methodInfix: \"GLN\"\n})\nexport class GLNCreatorProxy<ThrowError extends boolean, TError extends ErrorExtends<ThrowError>, TInvocationContext, TBigInt> extends NonGTINNumericIdentifierCreatorProxy<ThrowError, TError, TInvocationContext, TBigInt, NonGTINNumericIdentifierDescriptor, NonGTINNumericIdentifierCreator> {\n constructor(appExtension: AppExtension<ThrowError, TError, TInvocationContext, TBigInt>) {\n super(appExtension, prefixManager => prefixManager.glnCreator);\n }\n}\n\n@ProxyClass({\n namespace: \"GS1\",\n methodInfix: \"SSCC\"\n})\nexport class SSCCCreatorProxy<ThrowError extends boolean, TError extends ErrorExtends<ThrowError>, TInvocationContext, TBigInt> extends NonGTINNumericIdentifierCreatorProxy<ThrowError, TError, TInvocationContext, TBigInt, NonGTINNumericIdentifierDescriptor, NonGTINNumericIdentifierCreator> {\n constructor(appExtension: AppExtension<ThrowError, TError, TInvocationContext, TBigInt>) {\n super(appExtension, prefixManager => prefixManager.ssccCreator);\n }\n}\n\n@ProxyClass({\n namespace: \"GS1\",\n methodInfix: \"GRAI\"\n})\nexport class GRAICreatorProxy<ThrowError extends boolean, TError extends ErrorExtends<ThrowError>, TInvocationContext, TBigInt> extends SerializableNumericIdentifierCreatorProxy<ThrowError, TError, TInvocationContext, TBigInt> {\n constructor(appExtension: AppExtension<ThrowError, TError, TInvocationContext, TBigInt>) {\n super(appExtension, prefixManager => prefixManager.graiCreator);\n }\n}\n\n@ProxyClass({\n namespace: \"GS1\",\n methodInfix: \"GIAI\"\n})\nexport class GIAICreatorProxy<ThrowError extends boolean, TError extends ErrorExtends<ThrowError>, TInvocationContext, TBigInt> extends NonNumericIdentifierCreatorProxy<ThrowError, TError, TInvocationContext, TBigInt> {\n constructor(appExtension: AppExtension<ThrowError, TError, TInvocationContext, TBigInt>) {\n super(appExtension, prefixManager => prefixManager.giaiCreator);\n }\n}\n\n@ProxyClass({\n namespace: \"GS1\",\n methodInfix: \"GSRN\"\n})\nexport class GSRNCreatorProxy<ThrowError extends boolean, TError extends ErrorExtends<ThrowError>, TInvocationContext, TBigInt> extends NonGTINNumericIdentifierCreatorProxy<ThrowError, TError, TInvocationContext, TBigInt, NonGTINNumericIdentifierDescriptor, NonGTINNumericIdentifierCreator> {\n constructor(appExtension: AppExtension<ThrowError, TError, TInvocationContext, TBigInt>) {\n super(appExtension, prefixManager => prefixManager.gsrnCreator);\n }\n}\n\n@ProxyClass({\n namespace: \"GS1\",\n methodInfix: \"GDTI\"\n})\nexport class GDTICreatorProxy<ThrowError extends boolean, TError extends ErrorExtends<ThrowError>, TInvocationContext, TBigInt> extends SerializableNumericIdentifierCreatorProxy<ThrowError, TError, TInvocationContext, TBigInt> {\n constructor(appExtension: AppExtension<ThrowError, TError, TInvocationContext, TBigInt>) {\n super(appExtension, prefixManager => prefixManager.gdtiCreator);\n }\n}\n\n@ProxyClass({\n namespace: \"GS1\",\n methodInfix: \"GINC\"\n})\nexport class GINCCreatorProxy<ThrowError extends boolean, TError extends ErrorExtends<ThrowError>, TInvocationContext, TBigInt> extends NonNumericIdentifierCreatorProxy<ThrowError, TError, TInvocationContext, TBigInt> {\n constructor(appExtension: AppExtension<ThrowError, TError, TInvocationContext, TBigInt>) {\n super(appExtension, prefixManager => prefixManager.gincCreator);\n }\n}\n\n@ProxyClass({\n namespace: \"GS1\",\n methodInfix: \"GSIN\"\n})\nexport class GSINCreatorProxy<ThrowError extends boolean, TError extends ErrorExtends<ThrowError>, TInvocationContext, TBigInt> extends NonGTINNumericIdentifierCreatorProxy<ThrowError, TError, TInvocationContext, TBigInt, NonGTINNumericIdentifierDescriptor, NonGTINNumericIdentifierCreator> {\n constructor(appExtension: AppExtension<ThrowError, TError, TInvocationContext, TBigInt>) {\n super(appExtension, prefixManager => prefixManager.gsinCreator);\n }\n}\n\n@ProxyClass({\n namespace: \"GS1\",\n methodInfix: \"GCN\"\n})\nexport class GCNCreatorProxy<ThrowError extends boolean, TError extends ErrorExtends<ThrowError>, TInvocationContext, TBigInt> extends SerializableNumericIdentifierCreatorProxy<ThrowError, TError, TInvocationContext, TBigInt> {\n constructor(appExtension: AppExtension<ThrowError, TError, TInvocationContext, TBigInt>) {\n super(appExtension, prefixManager => prefixManager.gcnCreator);\n }\n}\n\n@ProxyClass({\n namespace: \"GS1\",\n methodInfix: \"CPID\"\n})\nexport class CPIDCreatorProxy<ThrowError extends boolean, TError extends ErrorExtends<ThrowError>, TInvocationContext, TBigInt> extends NonNumericIdentifierCreatorProxy<ThrowError, TError, TInvocationContext, TBigInt> {\n constructor(appExtension: AppExtension<ThrowError, TError, TInvocationContext, TBigInt>) {\n super(appExtension, prefixManager => prefixManager.cpidCreator);\n }\n}\n\n@ProxyClass({\n namespace: \"GS1\",\n methodInfix: \"GMN\"\n})\nexport class GMNCreatorProxy<ThrowError extends boolean, TError extends ErrorExtends<ThrowError>, TInvocationContext, TBigInt> extends NonNumericIdentifierCreatorProxy<ThrowError, TError, TInvocationContext, TBigInt> {\n constructor(appExtension: AppExtension<ThrowError, TError, TInvocationContext, TBigInt>) {\n super(appExtension, prefixManager => prefixManager.gmnCreator);\n }\n}\n","import { I18nEnvironments } from \"@aidc-toolkit/core\";\nimport type { ParseKeys } from \"i18next\";\nimport { AppUtilityProxy } from \"../app-utility-proxy.js\";\nimport { expandParameterDescriptor, getClassDescriptorsMap } from \"../descriptor.js\";\nimport * as GS1 from \"../gs1/index.js\";\nimport { appExtensionResources, i18nAppExtensionInit, i18nextAppExtension } from \"../locale/i18n.js\";\nimport * as Utility from \"../utility/index.js\";\nimport type {\n FunctionLocalization,\n Localization,\n ParameterLocalization,\n ProxyFunctionDescriptor,\n ProxyObjectDescriptor\n} from \"./descriptor.js\";\n\n/**\n * Dummy method to force proxies to register their decorators.\n *\n * @param _proxies\n * Proxies.\n */\nfunction registerProxies(..._proxies: unknown[]): void {\n}\n\nregisterProxies(AppUtilityProxy, Utility, GS1);\n\n/**\n * Abstract generator.\n */\nexport abstract class Generator {\n /**\n * Documentation base URL.\n */\n private static readonly DOCUMENTATION_BASE_URL = \"https://aidc-toolkit.com/\";\n\n /**\n * Documentation path, optionally preceded by locale.\n */\n private static readonly DOCUMENTATION_PATH = \"app-extension/\";\n\n /**\n * Locales.\n */\n private readonly _locales: readonly string[];\n\n /**\n * Default locale.\n */\n private readonly _defaultLocale: string;\n\n /**\n * Map of function localizations maps by namespace function name.\n */\n private readonly _functionLocalizationsMapsMap = new Map<string, ReadonlyMap<string, FunctionLocalization>>();\n\n /**\n * Map of parameter localizations maps by namespace function parameter name.\n */\n private readonly _parameterLocalizationsMapsMap = new Map<string, ReadonlyMap<string, ParameterLocalization>>();\n\n /**\n *\n */\n\n /**\n * Constructor.\n *\n * @param includeLocalizations\n * Include localizations if true.\n */\n constructor(includeLocalizations = true) {\n this._locales = includeLocalizations ? Object.keys(appExtensionResources) : [];\n this._defaultLocale = this._locales[0] ?? \"\";\n }\n\n /**\n * Get the locales.\n */\n protected get locales(): readonly string[] {\n return this._locales;\n }\n\n /**\n * Get the default locale.\n */\n protected get defaultLocale(): string {\n return this._defaultLocale;\n }\n\n /**\n * Get function localization.\n *\n * @param namespaceFunctionName\n * Namespace function name.\n *\n * @param locale\n * Locale.\n *\n * @returns\n * Function localization.\n */\n protected getFunctionLocalization(namespaceFunctionName: string, locale: string): FunctionLocalization {\n const functionLocalization = this._functionLocalizationsMapsMap.get(namespaceFunctionName)?.get(locale);\n\n if (functionLocalization === undefined) {\n throw new Error(`${locale} localization for function ${namespaceFunctionName} not found`);\n }\n\n return functionLocalization;\n }\n\n /**\n * Get parameter localization.\n *\n * @param namespaceFunctionName\n * Namespace function name.\n *\n * @param parameterName\n * Parameter name.\n *\n * @param locale\n * Locale.\n *\n * @returns\n * Function localization.\n */\n protected getParameterLocalization(namespaceFunctionName: string, parameterName: string, locale: string): ParameterLocalization {\n const parameterLocalization = this._parameterLocalizationsMapsMap.get(`${namespaceFunctionName}.${parameterName}`)?.get(locale);\n\n if (parameterLocalization === undefined) {\n throw new Error(`${locale} localization for function ${namespaceFunctionName} parameter ${parameterName} not found`);\n }\n\n return parameterLocalization;\n }\n\n /**\n * Initialize the generation of the output.\n */\n protected abstract initialize(): void;\n\n /**\n * Create a proxy object.\n *\n * @param proxyObjectDescriptor\n * Proxy object descriptor.\n */\n protected abstract createProxyObject(proxyObjectDescriptor: ProxyObjectDescriptor): void;\n\n /**\n * Create a proxy function.\n *\n * @param proxyFunctionDescriptor\n * Proxy function descriptor.\n */\n protected abstract createProxyFunction(proxyFunctionDescriptor: ProxyFunctionDescriptor): void;\n\n /**\n * Finalize the generation of the output.\n *\n * @param success\n * True if successful.\n */\n protected abstract finalize(success: boolean): void | Promise<void>;\n\n /**\n * Generate localizations map.\n *\n * @param localizedKeyPrefix\n * Localized key prefix.\n *\n * @param localizationCallback\n * Callback to finalize localization.\n *\n * @returns\n * Localization map.\n */\n private generateLocalizationsMap<T extends Localization>(localizedKeyPrefix: string, localizationCallback: (locale: string, localization: Localization) => T): ReadonlyMap<string, T> {\n return new Map(this._locales.map((locale) => {\n const lngOption = {\n lng: locale\n };\n\n return [locale, localizationCallback(locale, {\n // eslint-disable-next-line @typescript-eslint/no-unsafe-type-assertion -- Localized key exists.\n name: i18nextAppExtension.t(`${localizedKeyPrefix}name` as ParseKeys, lngOption),\n // eslint-disable-next-line @typescript-eslint/no-unsafe-type-assertion -- Localized key exists.\n description: i18nextAppExtension.t(`${localizedKeyPrefix}description` as ParseKeys, lngOption)\n })];\n }));\n }\n\n /**\n * Generate by processing individual imports.\n */\n async generate(): Promise<void> {\n let success = false;\n\n await i18nAppExtensionInit(I18nEnvironments.CLI);\n\n // const LocaleResourcesSource = path.resolve(LocaleResourcesGenerator.IMPORT_PATH, entry.name, \"locale-resources.ts\");\n //\n // await import(LocaleResourcesSource).then((module) => {\n\n this.initialize();\n\n try {\n for (const classDescriptor of getClassDescriptorsMap().values()) {\n const namespace = classDescriptor.namespace;\n const namespacePrefix = namespace === undefined ? \"\" : `${namespace}.`;\n const className = classDescriptor.name;\n const methodInfix = classDescriptor.methodInfix;\n\n // Namespace-qualified class name is used to construct object name.\n const namespaceClassName = `${namespacePrefix}${className}`;\n\n // First capture group is:\n // - one or more uppercase letters followed by zero or more numbers; or\n // - single uppercase letter followed by zero or more characters except uppercase letters or period.\n // Second capture group is:\n // - single uppercase letter followed by zero or more characters except period; or\n // - zero characters (empty string).\n // Third capture group, separated by optional period, is:\n // - single uppercase letter followed by zero or more characters (remainder of string); or\n // - zero characters (empty string).\n const classNameMatch = /^([A-Z]+[0-9]*|[A-Z][^A-Z.]*)([A-Z][^.]*|)\\.?([A-Z].*|)$/.exec(namespaceClassName);\n\n if (classNameMatch === null) {\n throw new Error(`${namespaceClassName} is not a valid namespace-qualified class name`);\n }\n\n const proxyObjectDescriptor: ProxyObjectDescriptor = {\n namespace,\n className,\n namespaceClassName,\n classDescriptor,\n objectName: `${classNameMatch[1].toLowerCase()}${classNameMatch[2]}${classNameMatch[3]}`\n };\n\n this.createProxyObject(proxyObjectDescriptor);\n\n for (const methodDescriptor of classDescriptor.methodDescriptors) {\n const methodName = methodDescriptor.name;\n const infixBefore = methodDescriptor.infixBefore;\n\n let functionName: string;\n\n if (methodInfix === undefined || methodDescriptor.ignoreInfix === true) {\n // No other classes in the hierarchy or no infix required.\n functionName = methodName;\n } else if (infixBefore === undefined) {\n // Other classes in the hierarchy and infix is postfix.\n functionName = `${methodName}${methodInfix}`;\n } else {\n const insertIndex = methodName.indexOf(infixBefore);\n\n if (insertIndex === -1) {\n throw new Error(`Cannot find \"${infixBefore}\" in method ${methodName}`);\n }\n\n // Other classes in the hierarchy and infix is in the middle of the string.\n functionName = `${methodName.substring(0, insertIndex)}${methodInfix}${methodName.substring(insertIndex)}`;\n }\n\n const namespaceFunctionName = `${namespacePrefix}${functionName}`;\n\n const functionLocalizationsMap = this.generateLocalizationsMap<FunctionLocalization>(`Functions.${namespaceFunctionName}.`, (locale, localization) => ({\n ...localization,\n documentationURL: `${Generator.DOCUMENTATION_BASE_URL}${locale === this.defaultLocale ? \"\" : `${locale}/`}${Generator.DOCUMENTATION_PATH}${namespace === undefined ? \"\" : `${namespace}/`}${localization.name}.html`\n }));\n\n this._functionLocalizationsMapsMap.set(namespaceFunctionName, functionLocalizationsMap);\n\n this.createProxyFunction({\n ...proxyObjectDescriptor,\n functionName,\n namespaceFunctionName,\n localizationsMap: functionLocalizationsMap,\n proxyParameterDescriptors: methodDescriptor.parameterDescriptors.map((parameterDescriptor) => {\n const expandedParameterDescriptor = expandParameterDescriptor(parameterDescriptor);\n\n const parameterName = expandedParameterDescriptor.name;\n\n const parameterLocalizationsMap = this.generateLocalizationsMap(`Parameters.${parameterName}.`, (_locale, localization) => localization);\n\n this._parameterLocalizationsMapsMap.set(`${namespaceFunctionName}.${parameterName}`, parameterLocalizationsMap);\n\n return {\n namespace,\n parameterName,\n localizationsMap: parameterLocalizationsMap,\n parameterDescriptor: expandedParameterDescriptor\n };\n }),\n methodDescriptor\n });\n }\n }\n\n success = true;\n } finally {\n await this.finalize(success);\n }\n }\n}\n"],"mappings":"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","names":["locale_resources_default","locale_resources_default","classType","mapIterable","mapIterable","Sequence","Sequence","checkDigit","isNullish","Sequence","isNullish","Sequence"]}