@keetanetwork/anchor 0.0.12 → 0.0.14

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.
Files changed (81) hide show
  1. package/lib/certificates.d.ts +83 -21
  2. package/lib/certificates.d.ts.map +1 -1
  3. package/lib/certificates.generated.d.ts +3 -0
  4. package/lib/certificates.generated.d.ts.map +1 -0
  5. package/lib/certificates.generated.js +120 -0
  6. package/lib/certificates.generated.js.map +1 -0
  7. package/lib/certificates.js +579 -117
  8. package/lib/certificates.js.map +1 -1
  9. package/lib/http-server.d.ts +2 -1
  10. package/lib/http-server.d.ts.map +1 -1
  11. package/lib/http-server.js +4 -4
  12. package/lib/http-server.js.map +1 -1
  13. package/lib/resolver.d.ts +2 -1
  14. package/lib/resolver.d.ts.map +1 -1
  15. package/lib/resolver.js.map +1 -1
  16. package/lib/utils/asn1.d.ts +2 -1
  17. package/lib/utils/asn1.d.ts.map +1 -1
  18. package/lib/utils/asn1.js.map +1 -1
  19. package/lib/utils/buffer.d.ts +3 -0
  20. package/lib/utils/buffer.d.ts.map +1 -1
  21. package/lib/utils/buffer.js +26 -0
  22. package/lib/utils/buffer.js.map +1 -1
  23. package/lib/utils/guards.d.ts +14 -0
  24. package/lib/utils/guards.d.ts.map +1 -0
  25. package/lib/utils/guards.js +31 -0
  26. package/lib/utils/guards.js.map +1 -0
  27. package/lib/utils/index.d.ts +3 -1
  28. package/lib/utils/index.d.ts.map +1 -1
  29. package/lib/utils/index.js +3 -1
  30. package/lib/utils/index.js.map +1 -1
  31. package/lib/utils/json.d.ts +2 -2
  32. package/lib/utils/json.d.ts.map +1 -1
  33. package/lib/utils/json.js.map +1 -1
  34. package/lib/utils/oid.d.ts +7 -0
  35. package/lib/utils/oid.d.ts.map +1 -0
  36. package/lib/utils/oid.js +22 -0
  37. package/lib/utils/oid.js.map +1 -0
  38. package/lib/utils/signing.d.ts.map +1 -1
  39. package/lib/utils/signing.js +26 -2
  40. package/lib/utils/signing.js.map +1 -1
  41. package/npm-shrinkwrap.json +2 -8
  42. package/package.json +1 -2
  43. package/services/fx/client.d.ts +1 -0
  44. package/services/fx/client.d.ts.map +1 -1
  45. package/services/fx/client.js +72 -72
  46. package/services/fx/client.js.map +1 -1
  47. package/services/fx/common.d.ts +23 -14
  48. package/services/fx/common.d.ts.map +1 -1
  49. package/services/fx/common.js +177 -1
  50. package/services/fx/common.js.map +1 -1
  51. package/services/fx/server.d.ts +13 -4
  52. package/services/fx/server.d.ts.map +1 -1
  53. package/services/fx/server.js +58 -151
  54. package/services/fx/server.js.map +1 -1
  55. package/services/kyc/client.d.ts.map +1 -1
  56. package/services/kyc/client.js +1 -8
  57. package/services/kyc/client.js.map +1 -1
  58. package/services/kyc/common.d.ts +39 -3
  59. package/services/kyc/common.d.ts.map +1 -1
  60. package/services/kyc/common.generated.d.ts +5 -0
  61. package/services/kyc/common.generated.d.ts.map +1 -0
  62. package/services/kyc/common.generated.js +241 -0
  63. package/services/kyc/common.generated.js.map +1 -0
  64. package/services/kyc/common.js +68 -1
  65. package/services/kyc/common.js.map +1 -1
  66. package/services/kyc/iso20022.generated.d.ts +285 -0
  67. package/services/kyc/iso20022.generated.d.ts.map +1 -0
  68. package/services/kyc/iso20022.generated.js +205 -0
  69. package/services/kyc/iso20022.generated.js.map +1 -0
  70. package/services/kyc/oids.generated.d.ts +83 -0
  71. package/services/kyc/oids.generated.d.ts.map +1 -0
  72. package/services/kyc/oids.generated.js +130 -0
  73. package/services/kyc/oids.generated.js.map +1 -0
  74. package/services/kyc/server.d.ts +141 -0
  75. package/services/kyc/server.d.ts.map +1 -0
  76. package/services/kyc/server.js +183 -0
  77. package/services/kyc/server.js.map +1 -0
  78. package/services/kyc/utils/generate-kyc-schema.d.ts +3 -0
  79. package/services/kyc/utils/generate-kyc-schema.d.ts.map +1 -0
  80. package/services/kyc/utils/generate-kyc-schema.js +1154 -0
  81. package/services/kyc/utils/generate-kyc-schema.js.map +1 -0
@@ -0,0 +1 @@
1
+ {"version":3,"file":"generate-kyc-schema.js","sourceRoot":"","sources":["../../../../src/services/kyc/utils/generate-kyc-schema.ts"],"names":[],"mappings":"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","sourcesContent":["#! /usr/bin/env ts-node\n\nimport * as fs from 'fs';\nimport * as path from 'path';\nimport * as typia from 'typia';\n\ntype oidSchemaContentsAttribute = {\n\t[key: string]: {\n\t\toid: number[];\n\t\ttype?: string;\n\t\ttoken?: string;\n\t\tdescription: string;\n\t\treference: string;\n\t\tfields?: {\n\t\t\t[key: string]: {\n\t\t\t\ttype: string;\n\t\t\t\toptional?: boolean;\n\t\t\t};\n\t\t};\n\t\tchoices?: {\n\t\t\t[key: string]: {\n\t\t\t\ttype: string;\n\t\t\t};\n\t\t};\n\t\tfield_order?: string[];\n\t};\n}\ntype oidSchemaContents = {\n\talgorithms: {\n\t\t[key: string]: number[]\n\t};\n\tsensitive_attributes: oidSchemaContentsAttribute;\n\tplain_attributes: oidSchemaContentsAttribute;\n\tiso20022_types: {\n\t\tprimitives: {\n\t\t\t[key: string]: {\n\t\t\t\toid: number[];\n\t\t\t\ttype: string;\n\t\t\t\tdescription: string;\n\t\t\t};\n\t\t};\n\t\tenumerations: {\n\t\t\t[key: string]: {\n\t\t\t\toid: number[];\n\t\t\t\tvalues: string[];\n\t\t\t\tdescription: string;\n\t\t\t};\n\t\t};\n\t\tchoices: {\n\t\t\t[key: string]: {\n\t\t\t\toid: number[];\n\t\t\t\tchoices: {\n\t\t\t\t\t[key: string]: {\n\t\t\t\t\t\ttype: string;\n\t\t\t\t\t};\n\t\t\t\t};\n\t\t\t\tdescription: string;\n\t\t\t};\n\t\t};\n\t\tsequences: {\n\t\t\t[key: string]: {\n\t\t\t\toid: number[];\n\t\t\t\tfields: {\n\t\t\t\t\t[key: string]: {\n\t\t\t\t\t\ttype: string;\n\t\t\t\t\t\toptional?: boolean;\n\t\t\t\t\t};\n\t\t\t\t};\n\t\t\t\tfield_order?: string[];\n\t\t\t\tdescription: string;\n\t\t\t};\n\t\t};\n\t};\n\textensions: {\n\t\t[key: string]: {\n\t\t\toid: number[];\n\t\t\ttype?: string;\n\t\t\tdescription: string;\n\t\t\treference: string;\n\t\t};\n\t};\n};\n/*\n * Populated in `main` function\n */\nlet oidSchema: oidSchemaContents;\n\n// --- Utility Functions ---\nfunction oidArrayToString(oid: (string | number)[]): string {\n\treturn(oid.join('.'));\n}\nfunction toConstantCase(str: string): string {\n\treturn(str.replace(/[A-Z]/g, function(part) {\n\t\treturn(`_${part}`);\n\t}).toUpperCase());\n}\nfunction toPascalCase(str: string): string {\n\treturn(str.split(/[_-]/).map(function(part) {\n\t\treturn(part.charAt(0).toUpperCase() + part.slice(1));\n\t}).join(''));\n}\nfunction toSnakeCase(str: string): string {\n\treturn(str.replace(/([A-Z])/g, '_$1').toLowerCase().replace(/^_/, ''));\n}\n\n// --- Type Resolution ---\nfunction resolveTypeReference(typeName: string): string {\n\tif (typeName.startsWith('SEQUENCE OF ')) {\n\t\treturn(`${resolveTypeReference(typeName.substring('SEQUENCE OF '.length).trim())}[]`);\n\t}\n\tswitch (typeName.trim()) {\n\t\tcase 'UTF8String':\n\t\tcase 'Utf8String':\n\t\t\treturn('string');\n\t\tcase 'GeneralizedTime':\n\t\t\treturn('Date');\n\t\tcase 'ENUMERATED':\n\t\t\treturn('string');\n\t\tdefault:\n\t\t\treturn(toPascalCase(typeName));\n\t}\n}\n\nfunction resolveToBaseType(typeName: string): string {\n\ttypeName = typeName.trim();\n\n\t// Check if it's a primitive type first\n\tif (/^(UTF8String|Utf8String|GeneralizedTime)$/i.test(typeName)) {\n\t\treturn(typeName);\n\t}\n\n\t// Check if it's defined as a sensitive attribute\n\tconst sensitiveAttr = oidSchema.sensitive_attributes[typeName] ?? Object.values(oidSchema.sensitive_attributes).find(function(attr) {\n\t\treturn(attr.token === typeName);\n\t});\n\n\tif (sensitiveAttr && !sensitiveAttr.fields && !sensitiveAttr.choices) {\n\t\tif (sensitiveAttr.type === undefined) {\n\t\t\tthrow(new Error(`Sensitive attribute ${typeName} has no defined type.`));\n\t\t}\n\t\treturn(resolveToBaseType(sensitiveAttr.type));\n\t}\n\n\t// Check if it's an ISO20022 primitive\n\tconst primitive = oidSchema.iso20022_types.primitives[typeName];\n\tif (primitive) {\n\t\treturn(resolveToBaseType(primitive.type));\n\t}\n\n\t// Otherwise return as-is\n\treturn(typeName);\n}\n\nfunction isSequenceOfChoice(config: { fields: { [key: string]: { optional?: boolean }}}): boolean {\n\tconst hasFields = config.fields && Object.keys(config.fields).length > 0;\n\tconst allOptional = hasFields && Object.values(config.fields).every(function(field) {\n\t\treturn(field.optional);\n\t});\n\treturn(allOptional);\n}\n\n// eslint-disable-next-line @typescript-eslint/no-unused-vars\nfunction _ignore_getPrimitiveType(type: string): 'string' | 'date' {\n\tif (type === 'UTF8String' || type === 'Utf8String') {\n\t\treturn('string');\n\t}\n\tif (type === 'GeneralizedTime') {\n\t\treturn('date');\n\t}\n\treturn('string');\n}\n\n// --- Output Generators ---\nfunction genHeader(comment: string) {\n\treturn([\n\t\t'/* eslint-disable */',\n\t\t'/**',\n\t\t` * ${comment}`,\n\t\t' * This file is auto-generated from oids.json.',\n\t\t' */',\n\t\t''\n\t].join('\\n'));\n}\n\nfunction genTypeAlias(name: string, type: string, description: string, oid: string): string {\n\treturn(`/** ${description} */\\n/** OID: ${oid} */\\nexport type ${name} = ${type};\\n`);\n}\n\nfunction genEnumType(name: string, values: string[], description: string, oid: string): string {\n\treturn(`/** ${description} */\\n/** OID: ${oid} */\\nexport type ${name} = ${values.map(function(value) {\n\t\treturn(`'${value}'`);\n\t}).join(' | ')};\\n`);\n}\n\nfunction genInterface(name: string, fields: { [key: string]: { type: string; optional?: boolean }}, description: string, oid: string): string {\n\tconst fieldLines = Object.entries(fields).map(function([fieldName, fieldConfig]) {\n\t\treturn(`\\t${fieldName}${fieldConfig.optional ? '?' : ''}: ${resolveTypeReference(fieldConfig.type)};`);\n\t});\n\treturn(`/** ${description} */\\n/** OID: ${oid} */\\nexport interface ${name} {\\n${fieldLines.join('\\n')}\\n}\\n`);\n}\n\nfunction genSequenceOfChoice(name: string, config: { fields: { [key: string]: { type: string; optional?: boolean }}; field_order?: string[] }): string {\n\tconst typeName = toPascalCase(name);\n\tconst fieldOrder = config.field_order ?? Object.keys(config.fields);\n\tconst choiceEntries = fieldOrder.map(function(fieldName): [string, { type: string; optional?: boolean }] {\n\t\tif (!(fieldName in config.fields) || config.fields[fieldName] === undefined) {\n\t\t\tthrow(new Error(`Field ${fieldName} not found in sequence of choice ${name}`));\n\t\t}\n\t\treturn([fieldName, config.fields[fieldName]]);\n\t});\n\tconst choiceTypes = choiceEntries.map(function([fieldName, fieldConfig], index) {\n\t\tif (fieldConfig === undefined) {\n\t\t\tthrow(new Error(`Field ${fieldName} not found in sequence of choice ${name}`));\n\t\t}\n\t\tconst fieldType = resolveTypeReference(fieldConfig.type);\n\t\tconst choiceTypeName = `${typeName}${toPascalCase(fieldName)}Choice`;\n\t\treturn({\n\t\t\tcode: `export interface ${choiceTypeName} {\\n\\ttag: ${index};\\n\\tname: '${fieldName}';\\n\\tvalue: ${fieldType};\\n}\\n`,\n\t\t\tname: choiceTypeName\n\t\t});\n\t});\n\n\tlet out = '';\n\t// Individual choice interfaces\n\tout += choiceTypes.map(function(choiceInfo) {\n\t\treturn(choiceInfo.code);\n\t}).join('\\n');\n\n\t// Union type\n\tout += `export type ${typeName}Choice =\\n\\t| ${choiceTypes.map(function(choiceInfo) {\n\t\treturn(choiceInfo.name);\n\t}).join('\\n\\t| ')};\\n\\n`;\n\n\t// Main type is array of choices\n\tout += `export type ${typeName} = ${typeName}Choice[];\\n\\n`;\n\n\t// ASN.1 schema\n\tout += `export const ${typeName}Schema: ASN1.Schema = {\\n\\tsequenceOf: {\\n\\t\\tchoice: [\\n`;\n\tout += choiceEntries.map(function([_ignore_fieldName, _ignore_fieldConfig], index) {\n\t\treturn(`\\t\\t\\t{ type: 'context', kind: 'explicit', value: ${index}, contains: { type: 'string', kind: 'utf8' }}`);\n\t}).join(',\\n');\n\tout += `\\n\\t\\t]\\n\\t}\\n} as const satisfies ASN1.Schema;\\n\\n`;\n\n\t// Field names array\n\tout += `export const ${typeName}Fields = [\\n${fieldOrder.map(function(fieldName){\n\t\treturn(`\\t'${fieldName}'`);\n\t}).join(',\\n')}\\n] as const;\\n\\n`;\n\n\treturn(out);\n}\n\nfunction deleteLastCommaIfFoundGenerator(lines: string[]) {\n\treturn(function deleteLastCommaIfFound() {\n\t\tlet lastLine = lines.pop();\n\t\tif (lastLine === undefined) {\n\t\t\treturn;\n\t\t}\n\t\tif (lastLine.endsWith(',')) {\n\t\t\tlastLine = lastLine.slice(0, -1);\n\t\t}\n\t\tlines.push(lastLine);\n\t});\n}\n\n\n// --- Main Generation ---\nfunction generateOidConstants() {\n\tconst lines = [genHeader('Generated OID Constants')];\n\tconst deleteLastCommaIfFound = deleteLastCommaIfFoundGenerator(lines);\n\n\t// Algorithm OID constants\n\tlines.push('// Algorithm OID constants');\n\tfor (const [name, oid] of Object.entries(oidSchema.algorithms)) {\n\t\tlines.push(`export const ${toConstantCase(name.replace(/-/g, '_'))} = '${oidArrayToString(oid)}';`);\n\t}\n\tlines.push('');\n\n\t// Plain attribute OID constants\n\tlines.push('// Plain attribute OID constants');\n\tfor (const [name, config] of Object.entries(oidSchema.plain_attributes)) {\n\t\tlines.push(`/** ${config.description} */`);\n\t\tlines.push(`/** @see ${config.reference} */`);\n\t\tlines.push(`export const ${toConstantCase(name)} = '${oidArrayToString(config.oid)}';`);\n\t}\n\tlines.push('');\n\n\t// Keeta namespace for sensitive attributes\n\tlines.push('// Keeta-specific OID constants');\n\tlines.push('// eslint-disable-next-line @typescript-eslint/no-namespace');\n\tlines.push('export namespace keeta {');\n\tfor (const [name, config] of Object.entries(oidSchema.extensions)) {\n\t\tlines.push(`\\t/** ${config.description} */`);\n\t\tlines.push(`\\t/** @see ${config.reference} */`);\n\t\tlines.push(`\\texport const ${toConstantCase(name)} = '${oidArrayToString(config.oid)}';`);\n\t}\n\tfor (const [name, config] of Object.entries(oidSchema.sensitive_attributes)) {\n\t\tlines.push(`\\t/** ${config.description} */`);\n\t\tlines.push(`\\t/** @see ${config.reference} */`);\n\t\tlines.push(`\\texport const ${toConstantCase(name)} = '${oidArrayToString(config.oid)}';`);\n\t}\n\tlines.push('}');\n\tlines.push('');\n\n\t// Lookup maps\n\tlines.push('// OID to name lookup maps');\n\tlines.push('export const OID_TO_NAME: { [key: string]: string } = {');\n\tfor (const [name, config] of Object.entries({\n\t\t...oidSchema.plain_attributes,\n\t\t...oidSchema.sensitive_attributes\n\t})) {\n\t\tlines.push(`\\t'${oidArrayToString(config.oid)}': '${name}',`);\n\t}\n\tdeleteLastCommaIfFound();\n\tlines.push('};');\n\tlines.push('');\n\tlines.push('export const NAME_TO_OID: { [key: string]: string } = {');\n\tfor (const [name, config] of Object.entries({\n\t\t...oidSchema.plain_attributes,\n\t\t...oidSchema.sensitive_attributes\n\t})) {\n\t\tlines.push(`\\t'${name}': '${oidArrayToString(config.oid)}',`);\n\t}\n\tdeleteLastCommaIfFound();\n\tlines.push('};');\n\tlines.push('');\n\n\treturn(lines.join('\\n'));\n}\n\nfunction genSequenceSchema(typeName: string, fields: { [key: string]: { type: string; optional?: boolean }}, config: { field_order?: string[] }) {\n\tconst fieldOrder = config?.field_order ?? Object.keys(fields);\n\tconst schemaFields = fieldOrder.map(function(fname, index) {\n\t\tconst fcfg = fields[fname];\n\t\tif (!fcfg) {return(null);}\n\n\t\t// Resolve to base type to handle aliases\n\t\tconst baseType = resolveToBaseType(fcfg.type);\n\t\t// Check if field type is GeneralizedTime (date)\n\t\tif (baseType === 'GeneralizedTime') {\n\t\t\tif (fcfg.optional) {\n\t\t\t\treturn(`{ optional: { type: 'context', kind: 'explicit', value: ${index}, contains: ASN1.ValidateASN1.IsDate }}`);\n\t\t\t} else {\n\t\t\t\treturn(`{ type: 'context', kind: 'explicit', value: ${index}, contains: ASN1.ValidateASN1.IsDate }`);\n\t\t\t}\n\t\t}\n\n\t\t// Strip SEQUENCE OF prefix and [] suffix to get the base type\n\t\tlet fieldType = fcfg.type.trim();\n\t\tif (fieldType.startsWith('SEQUENCE OF ')) {\n\t\t\tfieldType = fieldType.substring('SEQUENCE OF '.length).trim();\n\t\t}\n\n\t\tfieldType = fieldType.replace(/\\[\\]$/, '');\n\n\t\tconst fieldTypePascal = toPascalCase(fieldType);\n\t\tconst fieldTypeSnake = toSnakeCase(fieldType);\n\n\t\t// Check if this is a COMPLEX type (not a primitive)\n\t\tconst isChoice = oidSchema.iso20022_types.choices[fieldTypeSnake] ?? oidSchema.iso20022_types.choices[fieldType];\n\t\tconst isSequence = oidSchema.iso20022_types.sequences[fieldTypeSnake] ?? oidSchema.iso20022_types.sequences[fieldType];\n\t\tconst isSensitiveSequence = oidSchema.sensitive_attributes[fieldTypeSnake]?.fields;\n\t\tconst isSensitiveChoice = oidSchema.sensitive_attributes[fieldTypeSnake]?.choices;\n\n\t\tconst hasSchema = isChoice ?? isSequence ?? isSensitiveSequence ?? isSensitiveChoice;\n\n\t\tlet contains;\n\t\tif (hasSchema) {\n\t\t\tcontains = `${fieldTypePascal}Schema `;\n\t\t} else {\n\t\t\t// Primitive type - use inline string schema\n\t\t\tcontains = `{ type: 'string', kind: 'utf8' }`;\n\t\t}\n\n\t\tif (fcfg.optional) {\n\t\t\treturn(`{ optional: { type: 'context', kind: 'explicit', value: ${index}, contains: ${contains}}}`);\n\t\t} else {\n\t\t\treturn(`{ type: 'context', kind: 'explicit', value: ${index}, contains: ${contains}}`);\n\t\t}\n\t}).filter(Boolean);\n\n\treturn(`export const ${typeName}Schema: ASN1.Schema = [\\n\\t${schemaFields.join(',\\n\\t')}\\n] as const satisfies ASN1.Schema;`);\n}\n\nfunction generateIso20022Types() {\n\tconst lines = [genHeader('Generated ISO20022 Type Definitions'), \"import * as ASN1 from '../../lib/utils/asn1.js';\", ''];\n\tconst deleteLastCommaIfFound = deleteLastCommaIfFoundGenerator(lines);\n\n\t// Primitives\n\tlines.push('// ISO20022 Primitive Types');\n\tfor (const [name, config] of Object.entries(oidSchema.iso20022_types.primitives)) {\n\t\tlines.push(genTypeAlias(toPascalCase(name), resolveTypeReference(config.type), config.description, oidArrayToString(config.oid)));\n\t}\n\n\t// Enumerations\n\tlines.push('// ISO20022 Enumeration Types');\n\tfor (const [name, config] of Object.entries(oidSchema.iso20022_types.enumerations)) {\n\t\tlines.push(genEnumType(toPascalCase(name), config.values, config.description, oidArrayToString(config.oid)));\n\t}\n\n\t// Choices\n\tlines.push('// ISO20022 Choice Types');\n\tfor (const [name, config] of Object.entries(oidSchema.iso20022_types.choices)) {\n\t\tconst typeName = toPascalCase(name);\n\t\tconst choices = Object.entries(config.choices ?? {});\n\t\tconst hasComplexTypes = choices.some(function([_ignore_choiceName, choiceConfig]) {\n\t\t\tconst choiceType = choiceConfig.type.trim();\n\t\t\treturn(choiceType !== 'UTF8String' && choiceType !== 'string');\n\t\t});\n\t\tif (hasComplexTypes) {\n\t\t\tconst unionTypes = choices.map(function([_ignore_choiceName, choiceConfig]) {\n\t\t\t\treturn(toPascalCase(choiceConfig.type.trim()));\n\t\t\t});\n\t\t\tlines.push(genTypeAlias(typeName, unionTypes.join(' | '), config.description, oidArrayToString(config.oid)));\n\t\t} else {\n\t\t\tlines.push(genTypeAlias(typeName, 'string', config.description, oidArrayToString(config.oid)));\n\t\t}\n\t}\n\n\t// ISO20022 Sequences and Sequence-of-Choice Types\n\tlines.push('// ISO20022 Sequence Types');\n\tfor (const [name, config] of Object.entries(oidSchema.iso20022_types.sequences)) {\n\t\tif (isSequenceOfChoice(config)) {\n\t\t\tlines.push(genSequenceOfChoice(name, config));\n\t\t} else {\n\t\t\tlines.push(genInterface(toPascalCase(name), config.fields, config.description, oidArrayToString(config.oid)));\n\t\t}\n\t}\n\tlines.push('');\n\n\t// --- Choice Type Schemas ---\n\tlines.push('// Generated ASN.1 schemas for ISO 20022 choice types');\n\t// eslint-disable-next-line @typescript-eslint/no-unused-vars\n\tfor (const [name, _ignore_config] of Object.entries(oidSchema.iso20022_types.choices)) {\n\t\tconst typeName = toPascalCase(name);\n\t\tlines.push(`/** ASN.1 schema for ${typeName} */`);\n\t\tlines.push(`export const ${typeName}Schema: ASN1.Schema = { type: 'string', kind: 'utf8' };`);\n\t\tlines.push('');\n\t}\n\n\t// --- Sequence Type Schemas ---\n\tlines.push('// Generated ASN.1 schemas for ISO 20022 sequence types');\n\tfor (const [name, config] of Object.entries(oidSchema.iso20022_types.sequences)) {\n\t\tconst typeName = toPascalCase(name);\n\t\tif (config.fields && !isSequenceOfChoice(config)) {\n\t\t\tlines.push(`/** ASN.1 schema for ${typeName} */`);\n\t\t\tlines.push(genSequenceSchema(typeName, config.fields, config));\n\t\t\tlines.push('');\n\t\t}\n\t}\n\n\t// --- Choice-Type Sensitive Attribute Schemas ---\n\tlines.push('// Generated ASN.1 schemas for choice-type sensitive attributes');\n\tfor (const [name, config] of Object.entries(oidSchema.sensitive_attributes)) {\n\t\tconst typeName = toPascalCase(name);\n\t\tif (config.choices) {\n\t\t\tconst choiceSchemas = Object.values(config.choices).map(function(choice) {\n\t\t\t\tconst choiceTypeName = toPascalCase(choice.type.trim());\n\t\t\t\treturn(`${choiceTypeName}Schema`);\n\t\t\t});\n\t\t\tlines.push(`/** ASN.1 schema for ${typeName} */`);\n\t\t\tlines.push(`export const ${typeName}Schema: ASN1.Schema = {`);\n\t\t\tlines.push(`\\tchoice: [`);\n\t\t\tlines.push(`\\t\\t${choiceSchemas.join(',\\n\\t\\t')}`);\n\t\t\tlines.push(`\\t]`);\n\t\t\tlines.push(`} as const satisfies ASN1.Schema;`);\n\t\t\tlines.push('');\n\t\t}\n\t}\n\n\t// Sensitive Attribute Types\n\tfor (const [name, config] of Object.entries(oidSchema.sensitive_attributes)) {\n\t\tconst typeName = toPascalCase(name);\n\t\tif (!config.fields && !config.choices) {\n\t\t\t// Primitive type\n\t\t\tlet baseType;\n\t\t\tif (config.type === 'UTF8String' || config.type === 'Utf8String') {\n\t\t\t\tbaseType = 'string';\n\t\t\t} else if (config.type === 'GeneralizedTime') {\n\t\t\t\tbaseType = 'Date';\n\t\t\t} else {\n\t\t\t\tif (config.type === undefined) {\n\t\t\t\t\tthrow(new Error(`Sensitive attribute ${name} has no defined type.`));\n\t\t\t\t}\n\t\t\t\tbaseType = toPascalCase(config.type);\n\t\t\t}\n\t\t\tlines.push(`/** ${config.description} */`);\n\t\t\tlines.push(`/** OID: ${oidArrayToString(config.oid)} */`);\n\t\t\tlines.push(`export type ${typeName} = ${baseType};`);\n\t\t\tlines.push('');\n\t\t} else if (config.fields) {\n\t\t\t// Sequence type\n\t\t\tlines.push(`/** ${config.description} */`);\n\t\t\tlines.push(`/** OID: ${oidArrayToString(config.oid)} */`);\n\t\t\tlines.push(`export interface ${typeName} {`);\n\t\t\tfor (const [fieldName, fieldConfig] of Object.entries(config.fields)) {\n\t\t\t\tconst optional = fieldConfig.optional ? '?' : '';\n\t\t\t\tconst resolvedType = resolveTypeReference(fieldConfig.type);\n\t\t\t\tlines.push(`\\t${fieldName}${optional}: ${resolvedType};`);\n\t\t\t}\n\t\t\tlines.push('}');\n\t\t\tlines.push('');\n\t\t} else if (config.choices) {\n\t\t\t// Choice type\n\t\t\tlines.push(`/** ${config.description} */`);\n\t\t\tlines.push(`/** OID: ${oidArrayToString(config.oid)} */`);\n\t\t\tconst hasComplexTypes = Object.values(config.choices).some(function(choice) {\n\t\t\t\tconst choiceType = choice.type.trim();\n\t\t\t\treturn(choiceType !== 'UTF8String' && choiceType !== 'string');\n\t\t\t});\n\t\t\tif (hasComplexTypes) {\n\t\t\t\tconst unionTypes = Object.values(config.choices).map(function(choice) {\n\t\t\t\t\treturn(toPascalCase(choice.type.trim()));\n\t\t\t\t});\n\t\t\t\tlines.push(`export type ${typeName} = ${unionTypes.join(' | ')};`);\n\t\t\t} else {\n\t\t\t\tlines.push(`export type ${typeName} = string;`);\n\t\t\t}\n\t\t\tlines.push('');\n\t\t}\n\t}\n\n\t// Token aliases for sensitive attributes\n\tlines.push('// Token aliases for sensitive attributes');\n\tfor (const [name, config] of Object.entries(oidSchema.sensitive_attributes)) {\n\t\tif (config.token && config.token !== toPascalCase(name)) {\n\t\t\tconst typeName = toPascalCase(name);\n\t\t\tconst tokenName = config.token;\n\t\t\tlines.push(`/** Alias for ${typeName} */`);\n\t\t\tlines.push(`export type ${tokenName} = ${typeName};`);\n\t\t\tlines.push('');\n\t\t}\n\t}\n\n\t// Union type, value map, helper generic\n\tlines.push('/** Union type of all sensitive attribute types */');\n\tlines.push('export type SensitiveAttributeType =');\n\tlines.push(Object.keys(oidSchema.sensitive_attributes).map(function(name) {\n\t\treturn(`\\t| ${toPascalCase(name)}`);\n\t}).join('\\n') + ';');\n\tlines.push('');\n\tlines.push('/** Map of attribute name to acceptable input type for CertificateBuilder.setAttribute */');\n\tlines.push('export interface CertificateAttributeValueMap {');\n\tfor (const [name] of Object.entries(oidSchema.sensitive_attributes)) {\n\t\tlines.push(`\\t'${name}': ${toPascalCase(name)};`);\n\t}\n\tlines.push('}');\n\tlines.push('');\n\tlines.push('/** Helper generic to get attribute value type by name */');\n\tlines.push('export type CertificateAttributeValue<Name extends keyof CertificateAttributeValueMap> = CertificateAttributeValueMap[Name];');\n\tlines.push('');\n\n\t// Field arrays and schemas for sequence types\n\tfor (const [name, config] of Object.entries(oidSchema.sensitive_attributes)) {\n\t\tconst typeName = toPascalCase(name);\n\t\tif (config.fields) {\n\t\t\tconst fieldOrder = config.field_order ?? Object.keys(config.fields);\n\t\t\tlines.push(`export const ${typeName}Fields = [${fieldOrder.map(function(field) {\n\t\t\t\treturn(`'${field}'`);\n\t\t\t}).join(', ')}] as const;`);\n\t\t\tlines.push(genSequenceSchema(typeName, config.fields, config));\n\t\t}\n\t}\n\n\t// OID DB\n\tlines.push('export const CertificateAttributeOIDDB = {');\n\tfor (const [name, config] of Object.entries(oidSchema.sensitive_attributes)) {\n\t\tlines.push(`\\t'${name}': '${oidArrayToString(config.oid)}',`);\n\t}\n\tdeleteLastCommaIfFound();\n\tlines.push('} as const;');\n\tlines.push('');\n\n\t// Sensitive attribute list\n\tlines.push('export const SENSITIVE_CERTIFICATE_ATTRIBUTES = [');\n\tfor (const name of Object.keys(oidSchema.sensitive_attributes)) {\n\t\tlines.push(`\\t'${name}',`);\n\t}\n\tdeleteLastCommaIfFound();\n\tlines.push('] as const;');\n\tlines.push('');\n\n\tlines.push('export type SensitiveCertificateAttributeNames = typeof SENSITIVE_CERTIFICATE_ATTRIBUTES[number];');\n\tlines.push('');\n\n\t// PascalCase names\n\tlines.push('export const SensitiveCertificateAttributeNames = [');\n\tfor (const name of Object.keys(oidSchema.sensitive_attributes)) {\n\t\tlines.push(`\\t'${toPascalCase(name)}',`);\n\t}\n\tdeleteLastCommaIfFound();\n\tlines.push('] as const;');\n\tlines.push('');\n\n\t// Field name mapping\n\tlines.push('export const CertificateAttributeFieldNames: { readonly [K in keyof typeof CertificateAttributeOIDDB]?: readonly string[] } = {');\n\tfor (const [name, config] of Object.entries(oidSchema.sensitive_attributes)) {\n\t\tif (config.fields) {\n\t\t\tconst typeName = toPascalCase(name);\n\t\t\tlines.push(`\\t'${name}': ${typeName}Fields,`);\n\t\t}\n\t}\n\tdeleteLastCommaIfFound();\n\tlines.push('} as const;');\n\tlines.push('');\n\n\t// Complete schema mapping (ONCE, at the end)\n\tlines.push('export const CertificateAttributeSchema: { readonly [K in keyof typeof CertificateAttributeOIDDB]: ASN1.Schema } = {');\n\tfor (const [name, config] of Object.entries(oidSchema.sensitive_attributes)) {\n\t\tconst typeName = toPascalCase(name);\n\t\tlet schemaRef;\n\t\tif (config.fields) {\n\t\t\tschemaRef = `${typeName}Schema`;\n\t\t} else if (config.choices) {\n\t\t\tschemaRef = `${typeName}Schema`;\n\t\t} else {\n\t\t\tif (config.type === undefined) {\n\t\t\t\tthrow(new Error(`Sensitive attribute ${name} has no defined type.`));\n\t\t\t}\n\t\t\tconst baseType = resolveToBaseType(config.type);\n\t\t\tif (baseType === 'GeneralizedTime') {\n\t\t\t\tschemaRef = 'ASN1.ValidateASN1.IsDate';\n\t\t\t} else {\n\t\t\t\tschemaRef = `{ type: 'string', kind: 'utf8' }`;\n\t\t\t}\n\t\t}\n\t\tlines.push(`\\t'${name}': ${schemaRef},`);\n\t}\n\tdeleteLastCommaIfFound();\n\tlines.push('} as const;');\n\tlines.push('');\n\n\treturn(lines.join('\\n'));\n}\n\nfunction parseArgs(argv: string[]): { oidsJSONPath: string; oidsOutputPath: string; iso20022OutputPath: string } {\n\tlet oidsJSONPath: string | undefined = undefined;\n\tlet oidsOutputPath: string | undefined = undefined;\n\tlet iso20022OutputPath: string | undefined = undefined;\n\tfor (const arg of argv) {\n\t\tif (arg.startsWith('--oids-json=')) {\n\t\t\toidsJSONPath = arg.substring('--oids-json='.length);\n\t\t}\n\t\tif (arg.startsWith('--oids-output=')) {\n\t\t\toidsOutputPath = arg.substring('--oids-output='.length);\n\t\t}\n\t\tif (arg.startsWith('--iso20022-output=')) {\n\t\t\tiso20022OutputPath = arg.substring('--iso20022-output='.length);\n\t\t}\n\t}\n\n\tif (oidsJSONPath === undefined) {\n\t\tthrow(new Error('Missing required argument: --oids-json=path/to/oids.json'));\n\t}\n\tif (oidsOutputPath === undefined) {\n\t\tthrow(new Error('Missing required argument: --oids-output=path/to/oids.generated.ts'));\n\t}\n\tif (iso20022OutputPath === undefined) {\n\t\tthrow(new Error('Missing required argument: --iso20022-output=path/to/iso20022.generated.ts'));\n\t}\n\tif (!fs.existsSync(oidsJSONPath)) {\n\t\tthrow(new Error(`OID JSON file not found: ${oidsJSONPath}`));\n\t}\n\treturn({\n\t\toidsJSONPath,\n\t\toidsOutputPath,\n\t\tiso20022OutputPath\n\t});\n}\n\n// --- Main ---\nfunction main(argv: string[]): void {\n\tconst {\n\t\toidsJSONPath,\n\t\toidsOutputPath,\n\t\tiso20022OutputPath\n\t} = parseArgs(argv);\n\n\tfs.mkdirSync(path.dirname(oidsOutputPath), { recursive: true });\n\tfs.mkdirSync(path.dirname(iso20022OutputPath), { recursive: true });\n\n\toidSchema = typia.assert<oidSchemaContents>(JSON.parse(fs.readFileSync(oidsJSONPath, 'utf8')));\n\n\tfs.writeFileSync(oidsOutputPath, generateOidConstants(), 'utf8');\n\tfs.writeFileSync(iso20022OutputPath, generateIso20022Types(), 'utf8');\n}\n\nmain(process.argv.slice(2));\n"]}