@tokens-studio/tokenscript-interpreter 0.36.4 → 0.37.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/chunk-2EEKBDOX.js +5308 -0
- package/dist/chunk-2EEKBDOX.js.map +1 -0
- package/dist/chunk-2NMUBWBX.js +5861 -0
- package/dist/chunk-2NMUBWBX.js.map +1 -0
- package/dist/chunk-2OHE65GL.js +5779 -0
- package/dist/chunk-2OHE65GL.js.map +1 -0
- package/dist/chunk-2PZR6BQ6.js +5773 -0
- package/dist/chunk-2PZR6BQ6.js.map +1 -0
- package/dist/chunk-2QDDLPUW.js +5858 -0
- package/dist/chunk-2QDDLPUW.js.map +1 -0
- package/dist/chunk-4DUQBXYY.js +5762 -0
- package/dist/chunk-4DUQBXYY.js.map +1 -0
- package/dist/chunk-4SLJE4IW.js +5322 -0
- package/dist/chunk-4SLJE4IW.js.map +1 -0
- package/dist/chunk-6ABZOYUP.js +5802 -0
- package/dist/chunk-6ABZOYUP.js.map +1 -0
- package/dist/chunk-6HQZVWXZ.js +5341 -0
- package/dist/chunk-6HQZVWXZ.js.map +1 -0
- package/dist/chunk-6UY773C4.js +5292 -0
- package/dist/chunk-6UY773C4.js.map +1 -0
- package/dist/chunk-75Z55XEZ.js +5681 -0
- package/dist/chunk-75Z55XEZ.js.map +1 -0
- package/dist/chunk-7IWYKR22.js +5778 -0
- package/dist/chunk-7IWYKR22.js.map +1 -0
- package/dist/chunk-AVZUAMNS.js +5757 -0
- package/dist/chunk-AVZUAMNS.js.map +1 -0
- package/dist/chunk-BL7GZSRR.js +5724 -0
- package/dist/chunk-BL7GZSRR.js.map +1 -0
- package/dist/chunk-BMZ5NY7J.js +93 -0
- package/dist/chunk-BMZ5NY7J.js.map +1 -0
- package/dist/{chunk-AXH5N7KV.js → chunk-BNLQ6GCU.js} +2 -6
- package/dist/chunk-BNLQ6GCU.js.map +1 -0
- package/dist/chunk-BSJBGMCX.js +93 -0
- package/dist/{chunk-RI2BWY7D.js.map → chunk-BSJBGMCX.js.map} +1 -1
- package/dist/chunk-BUJRELXW.js +5342 -0
- package/dist/chunk-BUJRELXW.js.map +1 -0
- package/dist/chunk-DCOIGXSK.js +5763 -0
- package/dist/chunk-DCOIGXSK.js.map +1 -0
- package/dist/chunk-DZDZDYPO.js +5654 -0
- package/dist/chunk-DZDZDYPO.js.map +1 -0
- package/dist/{chunk-OCQX3WYJ.js → chunk-GAE7SZLZ.js} +111 -8
- package/dist/chunk-GAE7SZLZ.js.map +1 -0
- package/dist/chunk-HFLLWRRV.js +5791 -0
- package/dist/chunk-HFLLWRRV.js.map +1 -0
- package/dist/{lib/chunk-AEOBCHBK.js → chunk-JL4UU4PY.js} +2 -9
- package/dist/chunk-JL4UU4PY.js.map +1 -0
- package/dist/{chunk-CKLFRLH7.js → chunk-JUGNHFDN.js} +220 -338
- package/dist/chunk-JUGNHFDN.js.map +1 -0
- package/dist/{chunk-RI2BWY7D.js → chunk-K2OUSWUX.js} +2 -3
- package/dist/chunk-K2OUSWUX.js.map +1 -0
- package/dist/chunk-KOLA6XR5.js +5770 -0
- package/dist/chunk-KOLA6XR5.js.map +1 -0
- package/dist/{chunk-3ZOUTFP5.js → chunk-L77CTMYP.js} +169 -296
- package/dist/chunk-L77CTMYP.js.map +1 -0
- package/dist/chunk-LIXBSHBJ.js +99 -0
- package/dist/chunk-LIXBSHBJ.js.map +1 -0
- package/dist/chunk-LM5SZQV5.js +5763 -0
- package/dist/chunk-LM5SZQV5.js.map +1 -0
- package/dist/chunk-M76AGXPG.js +5772 -0
- package/dist/chunk-M76AGXPG.js.map +1 -0
- package/dist/{chunk-QP7M6WUR.js → chunk-OV2GMYVM.js} +221 -341
- package/dist/chunk-OV2GMYVM.js.map +1 -0
- package/dist/{chunk-33CDF4L4.js → chunk-P4VLJQEI.js} +235 -838
- package/dist/chunk-P4VLJQEI.js.map +1 -0
- package/dist/chunk-QLSMLF5S.js +5302 -0
- package/dist/chunk-QLSMLF5S.js.map +1 -0
- package/dist/chunk-QYTZHMUN.js +5831 -0
- package/dist/chunk-QYTZHMUN.js.map +1 -0
- package/dist/chunk-SBM4WTQW.js +5771 -0
- package/dist/chunk-SBM4WTQW.js.map +1 -0
- package/dist/chunk-UAQCLV6Y.js +5816 -0
- package/dist/chunk-UAQCLV6Y.js.map +1 -0
- package/dist/chunk-YIZGWYGL.js +5300 -0
- package/dist/chunk-YIZGWYGL.js.map +1 -0
- package/dist/{chunk-LZTXD3LN.js → chunk-Z437BNC5.js} +10 -3
- package/dist/chunk-Z437BNC5.js.map +1 -0
- package/dist/cli.js +138 -16
- package/dist/cli.js.map +1 -1
- package/dist/compliance-suite.js +3 -5
- package/dist/compliance-suite.js.map +1 -1
- package/dist/config-Bb9I9K-y.d.ts +1005 -0
- package/dist/config-Be-GTPYh.d.ts +976 -0
- package/dist/config-BkIqJNxv.d.ts +1009 -0
- package/dist/config-Cp5BqDfR.d.ts +731 -0
- package/dist/config-D36YRJGj.d.ts +1007 -0
- package/dist/{config-CFhN7-6U.d.ts → config-DB5rZBMx.d.ts} +109 -17
- package/dist/config-DQj8LHMT.d.ts +995 -0
- package/dist/{config-Bsd6DPFy.d.ts → config-Mw_Iq324.d.ts} +3 -1
- package/dist/{config-DtbN3iyg.d.ts → config-P6Ivo_zY.d.ts} +105 -26
- package/dist/config-RCpZF46f.d.ts +960 -0
- package/dist/lib/{chunk-K65UI6KX.cjs → chunk-EMRAAGPR.cjs} +102 -100
- package/dist/lib/chunk-EMRAAGPR.cjs.map +1 -0
- package/dist/lib/{chunk-UF6I25ED.cjs → chunk-JQKYSUJJ.cjs} +685 -567
- package/dist/lib/chunk-JQKYSUJJ.cjs.map +1 -0
- package/dist/lib/{chunk-S7WGJBSX.js → chunk-MD2DETZV.js} +5 -3
- package/dist/lib/chunk-MD2DETZV.js.map +1 -0
- package/dist/lib/chunk-SLITBMFB.js +114 -0
- package/dist/lib/chunk-SLITBMFB.js.map +1 -0
- package/dist/lib/{chunk-2BDFE7U4.js → chunk-VXZQQBEA.js} +132 -15
- package/dist/lib/chunk-VXZQQBEA.js.map +1 -0
- package/dist/lib/{chunk-KHF2VXWO.cjs → chunk-ZMMIYWFF.cjs} +10 -2
- package/dist/lib/chunk-ZMMIYWFF.cjs.map +1 -0
- package/dist/lib/index.cjs +99 -91
- package/dist/lib/index.d.cts +4 -4
- package/dist/lib/index.d.ts +4 -4
- package/dist/lib/index.js +3 -3
- package/dist/lib/{interpreter-DdF_Hj-J.d.ts → interpreter-ByrEtz7T.d.ts} +54 -4
- package/dist/lib/{interpreter-Cz_vWDDa.d.cts → interpreter-CG0Jw_k-.d.cts} +54 -4
- package/dist/lib/interpreter.cjs +81 -73
- package/dist/lib/interpreter.d.cts +7 -6
- package/dist/lib/interpreter.d.ts +7 -6
- package/dist/lib/interpreter.js +3 -3
- package/dist/lib/processor-node.cjs +12 -12
- package/dist/lib/processor-node.d.cts +3 -3
- package/dist/lib/processor-node.d.ts +3 -3
- package/dist/lib/processor-node.js +3 -3
- package/dist/lib/processor.cjs +17 -17
- package/dist/lib/processor.d.cts +4 -4
- package/dist/lib/processor.d.ts +4 -4
- package/dist/lib/processor.js +3 -3
- package/dist/lib/schema.cjs +5 -5
- package/dist/lib/schema.d.cts +1 -1
- package/dist/lib/schema.d.ts +1 -1
- package/dist/lib/schema.js +3 -3
- package/dist/lib/syntax-highlighting.cjs +15 -15
- package/dist/lib/syntax-highlighting.d.cts +1 -1
- package/dist/lib/syntax-highlighting.d.ts +1 -1
- package/dist/lib/syntax-highlighting.js +2 -2
- package/dist/lib/{types-DRpZJjkx.d.ts → types-BZAWM2oN.d.ts} +2 -2
- package/dist/lib/{types-6QQt-XVS.d.cts → types-BhyJ6plH.d.cts} +2 -2
- package/dist/lib/{types-CxQPMHn1.d.ts → types-DA9_CC7p.d.cts} +3 -1
- package/dist/lib/{types-CxQPMHn1.d.cts → types-DA9_CC7p.d.ts} +3 -1
- package/dist/lib/types.cjs +10 -6
- package/dist/lib/types.d.cts +1 -1
- package/dist/lib/types.d.ts +1 -1
- package/dist/lib/types.js +1 -1
- package/dist/processor/index.d.ts +1 -1
- package/dist/processor/index.js +18 -2
- package/dist/processor/index.js.map +1 -1
- package/dist/repl.d.ts +15 -3
- package/dist/repl.js +6 -8
- package/dist/repl.js.map +1 -1
- package/dist/token-schemas.js +414 -0
- package/dist/types.d.ts +1 -1
- package/dist/types.js +1 -1
- package/package.json +1 -1
- package/dist/chunk-33CDF4L4.js.map +0 -1
- package/dist/chunk-3ZOUTFP5.js.map +0 -1
- package/dist/chunk-5S3H4SYX.js +0 -6460
- package/dist/chunk-5S3H4SYX.js.map +0 -1
- package/dist/chunk-AXH5N7KV.js.map +0 -1
- package/dist/chunk-CKLFRLH7.js.map +0 -1
- package/dist/chunk-GJIOYGP6.js +0 -6446
- package/dist/chunk-GJIOYGP6.js.map +0 -1
- package/dist/chunk-HHCPY4WI.js +0 -6456
- package/dist/chunk-HHCPY4WI.js.map +0 -1
- package/dist/chunk-LZTXD3LN.js.map +0 -1
- package/dist/chunk-MXKGYBE4.js +0 -6457
- package/dist/chunk-MXKGYBE4.js.map +0 -1
- package/dist/chunk-NGG6MBER.js +0 -6452
- package/dist/chunk-NGG6MBER.js.map +0 -1
- package/dist/chunk-OCQX3WYJ.js.map +0 -1
- package/dist/chunk-QP7M6WUR.js.map +0 -1
- package/dist/lib/chunk-2BDFE7U4.js.map +0 -1
- package/dist/lib/chunk-AEOBCHBK.js.map +0 -1
- package/dist/lib/chunk-K65UI6KX.cjs.map +0 -1
- package/dist/lib/chunk-KHF2VXWO.cjs.map +0 -1
- package/dist/lib/chunk-S7WGJBSX.js.map +0 -1
- package/dist/lib/chunk-UF6I25ED.cjs.map +0 -1
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/interpreter/errors/codes/color.ts","../../src/interpreter/errors/codes/config.ts","../../src/interpreter/errors/codes/functions.ts","../../src/interpreter/errors/codes/interpreter.ts","../../src/interpreter/errors/codes/lexer.ts","../../src/interpreter/errors/codes/operations.ts","../../src/interpreter/errors/codes/parser.ts","../../src/interpreter/errors/codes/processor.ts","../../src/interpreter/errors/codes/symbols.ts","../../src/interpreter/errors/codes/unit.ts","../../src/interpreter/errors/messages/en.ts","../../src/interpreter/errors/messages/index.ts","../../src/interpreter/errors/base.ts","../../src/interpreter/errors/utils.ts","../../src/interpreter/utils/type.ts","../../src/interpreter/utils/color.ts","../../src/interpreter/utils/string.ts","../../src/interpreter/symbols.ts"],"names":["ColorErrorCode","ConfigErrorCode","FunctionsErrorCode","InterpreterErrorCode","LexerErrorCode","OperationsErrorCode","ParserErrorCode","ProcessorErrorCode","SymbolsErrorCode","UnitErrorCode","alphaValue","isNumber"],"mappings":"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","file":"chunk-S7WGJBSX.js","sourcesContent":["import type { SerializedError } from \"../utils\";\n\nexport enum ColorErrorCode {\n // Initializer errors\n INITIALIZER_CRASHED = \"COLOR_INITIALIZER_CRASHED\",\n INITIALIZER_CONSTRUCT_FAILED = \"COLOR_INITIALIZER_CONSTRUCT_FAILED\",\n INITIALIZER_NOT_FOUND = \"COLOR_INITIALIZER_NOT_FOUND\",\n\n // Conversion errors\n CONVERSION_TARGET_NOT_FOUND = \"COLOR_CONVERSION_TARGET_NOT_FOUND\",\n SOURCE_URI_NOT_FOUND = \"COLOR_SOURCE_URI_NOT_FOUND\",\n TARGET_URI_NOT_FOUND = \"COLOR_TARGET_URI_NOT_FOUND\",\n CONVERSION_ERROR = \"COLOR_CONVERSION_ERROR\",\n\n // Attribute errors\n STRING_VALUE_ASSIGNMENT = \"COLOR_STRING_VALUE_ASSIGNMENT\",\n ATTRIBUTE_CHAIN_TOO_LONG = \"COLOR_ATTRIBUTE_CHAIN_TOO_LONG\",\n\n // Specification errors\n MISSING_SPEC = \"COLOR_MISSING_SPEC\",\n MISSING_SCHEMA = \"COLOR_MISSING_SCHEMA\",\n MISSING_ATTRIBUTE_SCHEMA = \"COLOR_MISSING_ATTRIBUTE_SCHEMA\",\n\n // Type errors\n INVALID_ATTRIBUTE_TYPE = \"COLOR_INVALID_ATTRIBUTE_TYPE\",\n\n // Alpha errors\n INVALID_ALPHA_VALUE = \"COLOR_INVALID_ALPHA_VALUE\",\n}\n\nexport interface ColorErrorData {\n [ColorErrorCode.INITIALIZER_CRASHED]: Record<string, never>;\n [ColorErrorCode.INITIALIZER_CONSTRUCT_FAILED]: {\n error: SerializedError;\n };\n [ColorErrorCode.INITIALIZER_NOT_FOUND]: {\n keyword: string;\n };\n [ColorErrorCode.CONVERSION_TARGET_NOT_FOUND]: {\n targetUri: string;\n };\n [ColorErrorCode.SOURCE_URI_NOT_FOUND]: {\n colorType: string;\n };\n [ColorErrorCode.TARGET_URI_NOT_FOUND]: {\n colorType: string;\n };\n [ColorErrorCode.CONVERSION_ERROR]: {\n message: string;\n };\n [ColorErrorCode.STRING_VALUE_ASSIGNMENT]: {\n attributes: string;\n identifier: string;\n colorType: string;\n };\n [ColorErrorCode.ATTRIBUTE_CHAIN_TOO_LONG]: {\n attributes: string;\n identifier: string;\n colorType: string;\n };\n [ColorErrorCode.MISSING_SPEC]: {\n identifier: string;\n colorType: string;\n };\n [ColorErrorCode.MISSING_SCHEMA]: {\n colorType: string;\n };\n [ColorErrorCode.MISSING_ATTRIBUTE_SCHEMA]: {\n attribute: string;\n identifier: string;\n colorType: string;\n };\n [ColorErrorCode.INVALID_ATTRIBUTE_TYPE]: {\n attributeType: string;\n validTypes: string;\n };\n [ColorErrorCode.INVALID_ALPHA_VALUE]: {\n alpha: number;\n };\n}\n","export enum ConfigErrorCode {\n NO_SPEC_FOUND = \"CFG_NO_SPEC_FOUND\",\n NO_TYPE_FOUND = \"CFG_NO_TYPE_FOUND\",\n}\n\nexport interface ConfigErrorData {\n [ConfigErrorCode.NO_SPEC_FOUND]: {\n specName: string;\n };\n [ConfigErrorCode.NO_TYPE_FOUND]: {\n typeName: string;\n };\n}\n","import type { SerializedError } from \"../utils\";\n\nexport enum FunctionsErrorCode {\n // Argument errors\n EXPECTS_NUMBER_ARGUMENTS = \"FN_EXPECTS_NUMBER_ARGUMENTS\",\n REQUIRES_MIN_ARGUMENTS = \"FN_REQUIRES_MIN_ARGUMENTS\",\n EXPECTS_TYPE_ARGUMENT = \"FN_EXPECTS_TYPE_ARGUMENT\",\n\n // Math errors\n DIVISION_BY_ZERO = \"FN_DIVISION_BY_ZERO\",\n ARGUMENT_OUT_OF_RANGE = \"FN_ARGUMENT_OUT_OF_RANGE\",\n INVALID_BASE = \"FN_INVALID_BASE\",\n PARSE_ERROR = \"FN_PARSE_ERROR\",\n\n // Unit errors\n UNIT_CONVERSION_FAILED = \"FN_UNIT_CONVERSION_FAILED\",\n\n // Dynamic function errors\n NO_CONFIG_AVAILABLE = \"FN_NO_CONFIG_AVAILABLE\",\n FUNCTION_RETURNED_NULL = \"FN_FUNCTION_RETURNED_NULL\",\n EXECUTION_ERROR = \"FN_EXECUTION_ERROR\",\n}\n\nexport interface FunctionsErrorData {\n [FunctionsErrorCode.EXPECTS_NUMBER_ARGUMENTS]: {\n functionName: string;\n };\n [FunctionsErrorCode.REQUIRES_MIN_ARGUMENTS]: {\n functionName: string;\n minArgs: number;\n };\n [FunctionsErrorCode.EXPECTS_TYPE_ARGUMENT]: {\n functionName: string;\n expectedType: string;\n argumentPosition: string;\n };\n [FunctionsErrorCode.DIVISION_BY_ZERO]: {\n functionName: string;\n };\n [FunctionsErrorCode.ARGUMENT_OUT_OF_RANGE]: {\n functionName: string;\n constraint: string;\n };\n [FunctionsErrorCode.INVALID_BASE]: {\n functionName: string;\n constraint: string;\n };\n [FunctionsErrorCode.PARSE_ERROR]: {\n functionName: string;\n value: string;\n base: number;\n };\n [FunctionsErrorCode.UNIT_CONVERSION_FAILED]: {\n functionName: string;\n error: SerializedError;\n };\n [FunctionsErrorCode.NO_CONFIG_AVAILABLE]: {\n functionName: string;\n };\n [FunctionsErrorCode.FUNCTION_RETURNED_NULL]: {\n functionName: string;\n };\n [FunctionsErrorCode.EXECUTION_ERROR]: {\n functionName: string;\n error: SerializedError;\n };\n}\n","export enum InterpreterErrorCode {\n // Visit errors\n UNKNOWN_NODE_TYPE = \"INT_UNKNOWN_NODE_TYPE\",\n\n // Binary operation errors\n ARITHMETIC_REQUIRES_NUMBER = \"INT_ARITHMETIC_REQUIRES_NUMBER\",\n UNKNOWN_BINARY_OPERATOR = \"INT_UNKNOWN_BINARY_OPERATOR\",\n\n // Unary operation errors\n UNARY_MINUS_NULL = \"INT_UNARY_MINUS_NULL\",\n UNARY_PLUS_NON_NUMBER = \"INT_UNARY_PLUS_NON_NUMBER\",\n UNARY_NOT_NON_BOOLEAN = \"INT_UNARY_NOT_NON_BOOLEAN\",\n UNKNOWN_UNARY_OPERATOR = \"INT_UNKNOWN_UNARY_OPERATOR\",\n\n // Reference errors\n UNKNOWN_REFERENCE = \"INT_UNKNOWN_REFERENCE\",\n UNKNOWN_FUNCTION = \"INT_UNKNOWN_FUNCTION\",\n\n // Variable errors\n INVALID_VARIABLE_NAME = \"INT_INVALID_VARIABLE_NAME\",\n VARIABLE_ALREADY_DEFINED = \"INT_VARIABLE_ALREADY_DEFINED\",\n INVALID_VARIABLE_TYPE = \"INT_INVALID_VARIABLE_TYPE\",\n INVALID_VALUE_FOR_VARIABLE = \"INT_INVALID_VALUE_FOR_VARIABLE\",\n VARIABLE_NOT_FOUND = \"INT_VARIABLE_NOT_FOUND\",\n ASSIGNMENT_VALUE_NULL = \"INT_ASSIGNMENT_VALUE_NULL\",\n TYPE_MISMATCH = \"INT_TYPE_MISMATCH\",\n CANNOT_ASSIGN_TYPE = \"INT_CANNOT_ASSIGN_TYPE\",\n\n // Attribute/method errors\n METHOD_RETURNED_NULL = \"INT_METHOD_RETURNED_NULL\",\n METHOD_NOT_FOUND = \"INT_METHOD_NOT_FOUND\",\n ATTRIBUTE_RETURNED_NULL = \"INT_ATTRIBUTE_RETURNED_NULL\",\n ATTRIBUTE_NOT_FOUND = \"INT_ATTRIBUTE_NOT_FOUND\",\n CANNOT_ACCESS_ATTRIBUTES = \"INT_CANNOT_ACCESS_ATTRIBUTES\",\n\n // Control flow errors\n MAX_ITERATIONS_EXCEEDED = \"INT_MAX_ITERATIONS_EXCEEDED\",\n WHILE_CONDITION_NOT_BOOLEAN = \"INT_WHILE_CONDITION_NOT_BOOLEAN\",\n IF_CONDITION_NOT_BOOLEAN = \"INT_IF_CONDITION_NOT_BOOLEAN\",\n FOR_EACH_NOT_LIST = \"INT_FOR_EACH_NOT_LIST\",\n FOR_EACH_VARIABLE_SHADOW = \"INT_FOR_EACH_VARIABLE_SHADOW\",\n FOR_EACH_DUPLICATE_VARS = \"INT_FOR_EACH_DUPLICATE_VARS\",\n\n // Template string errors\n TEMPLATE_INVALID_TYPE = \"INT_TEMPLATE_INVALID_TYPE\",\n\n // Unknown error\n UNKNOWN_ERROR = \"INT_UNKNOWN_ERROR\",\n}\n\nexport interface InterpreterErrorData {\n [InterpreterErrorCode.UNKNOWN_NODE_TYPE]: {\n nodeType: string;\n };\n [InterpreterErrorCode.ARITHMETIC_REQUIRES_NUMBER]: {\n operator: string;\n leftType: string;\n rightType: string;\n };\n [InterpreterErrorCode.UNKNOWN_BINARY_OPERATOR]: {\n operator: string;\n tokenType: string;\n };\n [InterpreterErrorCode.UNARY_MINUS_NULL]: {\n symbolType: string;\n };\n [InterpreterErrorCode.UNARY_PLUS_NON_NUMBER]: {\n value: string;\n };\n [InterpreterErrorCode.UNARY_NOT_NON_BOOLEAN]: {\n value: string;\n };\n [InterpreterErrorCode.UNKNOWN_UNARY_OPERATOR]: {\n operator: string;\n };\n [InterpreterErrorCode.UNKNOWN_REFERENCE]: {\n reference: string;\n };\n [InterpreterErrorCode.UNKNOWN_FUNCTION]: {\n functionName: string;\n };\n [InterpreterErrorCode.INVALID_VARIABLE_NAME]: {\n name: string;\n };\n [InterpreterErrorCode.VARIABLE_ALREADY_DEFINED]: {\n name: string;\n };\n [InterpreterErrorCode.INVALID_VARIABLE_TYPE]: {\n typeName: string;\n validTypes: string;\n };\n [InterpreterErrorCode.INVALID_VALUE_FOR_VARIABLE]: {\n value: string;\n type: string;\n name: string;\n };\n [InterpreterErrorCode.VARIABLE_NOT_FOUND]: {\n name: string;\n };\n [InterpreterErrorCode.ASSIGNMENT_VALUE_NULL]: {\n identifier: string;\n };\n [InterpreterErrorCode.TYPE_MISMATCH]: {\n value: string;\n foundType: string;\n expectedType: string;\n identifier: string;\n };\n [InterpreterErrorCode.CANNOT_ASSIGN_TYPE]: {\n valueType: string;\n identifier: string;\n variableType: string;\n };\n [InterpreterErrorCode.METHOD_RETURNED_NULL]: {\n methodName: string;\n };\n [InterpreterErrorCode.METHOD_NOT_FOUND]: {\n methodName: string;\n value: string;\n type: string;\n };\n [InterpreterErrorCode.ATTRIBUTE_RETURNED_NULL]: {\n attributeName: string;\n };\n [InterpreterErrorCode.ATTRIBUTE_NOT_FOUND]: {\n attributeName: string;\n value: string;\n type: string;\n };\n [InterpreterErrorCode.CANNOT_ACCESS_ATTRIBUTES]: {\n type: string;\n };\n [InterpreterErrorCode.MAX_ITERATIONS_EXCEEDED]: Record<string, never>;\n [InterpreterErrorCode.WHILE_CONDITION_NOT_BOOLEAN]: Record<string, never>;\n [InterpreterErrorCode.IF_CONDITION_NOT_BOOLEAN]: Record<string, never>;\n [InterpreterErrorCode.FOR_EACH_NOT_LIST]: {\n actualType: string;\n };\n [InterpreterErrorCode.FOR_EACH_VARIABLE_SHADOW]: {\n name: string;\n };\n [InterpreterErrorCode.FOR_EACH_DUPLICATE_VARS]: {\n name: string;\n };\n [InterpreterErrorCode.TEMPLATE_INVALID_TYPE]: {\n valueType: string;\n };\n [InterpreterErrorCode.UNKNOWN_ERROR]: Record<string, never>;\n}\n","export enum LexerErrorCode {\n INVALID_CHARACTER = \"LEXER_INVALID_CHARACTER\",\n UNTERMINATED_STRING = \"LEXER_UNTERMINATED_STRING\",\n UNTERMINATED_REFERENCE = \"LEXER_UNTERMINATED_REFERENCE\",\n EMPTY_VARIABLE_NAME = \"LEXER_EMPTY_VARIABLE_NAME\",\n INVALID_HEX_COLOR_FORMAT = \"LEXER_INVALID_HEX_COLOR_FORMAT\",\n EXPECTED_CHARACTER = \"LEXER_EXPECTED_CHARACTER\",\n MULTIPLE_DECIMAL_POINTS = \"LEXER_MULTIPLE_DECIMAL_POINTS\",\n UNTERMINATED_TEMPLATE_STRING = \"LEXER_UNTERMINATED_TEMPLATE_STRING\",\n}\n\nexport interface LexerErrorData {\n [LexerErrorCode.INVALID_CHARACTER]: {\n char: string;\n position: number;\n description?: string;\n };\n [LexerErrorCode.UNTERMINATED_STRING]: {\n quoteType: string;\n };\n [LexerErrorCode.UNTERMINATED_REFERENCE]: Record<string, never>;\n [LexerErrorCode.EMPTY_VARIABLE_NAME]: Record<string, never>;\n [LexerErrorCode.INVALID_HEX_COLOR_FORMAT]: {\n value: string;\n expectedLength: string;\n };\n [LexerErrorCode.EXPECTED_CHARACTER]: {\n expected: string;\n got: string | null;\n };\n [LexerErrorCode.MULTIPLE_DECIMAL_POINTS]: {\n value: string;\n };\n [LexerErrorCode.UNTERMINATED_TEMPLATE_STRING]: Record<string, never>;\n}\n","export enum OperationsErrorCode {\n UNSUPPORTED_OPERAND_TYPE = \"OP_UNSUPPORTED_OPERAND_TYPE\",\n CANNOT_MIX_UNITS = \"OP_CANNOT_MIX_UNITS\",\n INCOMPATIBLE_TYPES = \"OP_INCOMPATIBLE_TYPES\",\n CANNOT_COMPARE_UNITS = \"OP_CANNOT_COMPARE_UNITS\",\n ORDERING_WITH_NULL = \"OP_ORDERING_WITH_NULL\",\n LOGICAL_REQUIRES_BOOLEAN = \"OP_LOGICAL_REQUIRES_BOOLEAN\",\n DIVISION_BY_ZERO = \"OP_DIVISION_BY_ZERO\",\n UNIT_EXPONENT_NOT_SUPPORTED = \"OP_UNIT_EXPONENT_NOT_SUPPORTED\",\n}\n\nexport interface OperationsErrorData {\n [OperationsErrorCode.UNSUPPORTED_OPERAND_TYPE]: {\n type: string;\n };\n [OperationsErrorCode.CANNOT_MIX_UNITS]: {\n units: string;\n };\n [OperationsErrorCode.INCOMPATIBLE_TYPES]: {\n typeA: string;\n typeB: string;\n };\n [OperationsErrorCode.CANNOT_COMPARE_UNITS]: {\n unitA: string;\n unitB: string;\n };\n [OperationsErrorCode.ORDERING_WITH_NULL]: Record<string, never>;\n [OperationsErrorCode.LOGICAL_REQUIRES_BOOLEAN]: {\n operator: string;\n };\n [OperationsErrorCode.DIVISION_BY_ZERO]: Record<string, never>;\n [OperationsErrorCode.UNIT_EXPONENT_NOT_SUPPORTED]: {\n unitA: string;\n unitB: string;\n };\n}\n","export enum ParserErrorCode {\n UNEXPECTED_TOKEN = \"PARSER_UNEXPECTED_TOKEN\",\n EXPECTED_TOKEN_TYPE = \"PARSER_EXPECTED_TOKEN_TYPE\",\n UNEXPECTED_END = \"PARSER_UNEXPECTED_END\",\n CONDITION_MUST_BE_BOOLEAN = \"PARSER_CONDITION_MUST_BE_BOOLEAN\",\n INVALID_SYNTAX = \"PARSER_INVALID_SYNTAX\",\n TOLERANT_REQUIRES_INLINE = \"PARSER_TOLERANT_REQUIRES_INLINE\",\n}\n\nexport interface ParserErrorData {\n [ParserErrorCode.UNEXPECTED_TOKEN]: {\n token: string;\n };\n [ParserErrorCode.EXPECTED_TOKEN_TYPE]: {\n expected: string;\n got: string;\n };\n [ParserErrorCode.CONDITION_MUST_BE_BOOLEAN]: Record<string, never>;\n [ParserErrorCode.INVALID_SYNTAX]: {\n message?: string;\n };\n [ParserErrorCode.UNEXPECTED_END]: Record<string, never>;\n [ParserErrorCode.TOLERANT_REQUIRES_INLINE]: Record<string, never>;\n}\n","export enum ProcessorErrorCode {\n TOKEN_NOT_FOUND = \"PROC_TOKEN_NOT_FOUND\",\n TOKEN_ALREADY_EXISTS = \"PROC_TOKEN_ALREADY_EXISTS\",\n CIRCULAR_DEPENDENCY = \"PROC_CIRCULAR_DEPENDENCY\",\n SUB_FIELD_NOT_RESOLVED = \"PROC_SUB_FIELD_NOT_RESOLVED\",\n DEPENDENCY_ERROR = \"PROC_DEPENDENCY_ERROR\",\n NO_THEMES_FOUND = \"PROC_NO_THEMES_FOUND\",\n THEME_NOT_FOUND = \"PROC_THEME_NOT_FOUND\",\n TOKEN_SET_NOT_FOUND = \"PROC_TOKEN_SET_NOT_FOUND\",\n TOKEN_SET_INVALID = \"PROC_TOKEN_SET_INVALID\",\n NO_SETS_TO_PROCESS = \"PROC_NO_SETS_TO_PROCESS\",\n MULTIPLE_SETS_NO_SELECTION = \"PROC_MULTIPLE_SETS_NO_SELECTION\",\n UNKNOWN_PARSING_ERROR = \"PROC_UNKNOWN_PARSING_ERROR\",\n RESOLVER_NOT_INITIALIZED = \"PROC_RESOLVER_NOT_INITIALIZED\",\n}\n\nexport interface ProcessorErrorData {\n [ProcessorErrorCode.TOKEN_NOT_FOUND]: {\n tokenName: string;\n };\n [ProcessorErrorCode.TOKEN_ALREADY_EXISTS]: {\n tokenName: string;\n };\n [ProcessorErrorCode.CIRCULAR_DEPENDENCY]: {\n tokens: string | string[];\n };\n [ProcessorErrorCode.SUB_FIELD_NOT_RESOLVED]: {\n fieldPath: string;\n };\n [ProcessorErrorCode.DEPENDENCY_ERROR]: {\n tokenName: string;\n chain: string;\n rootCause: string;\n };\n [ProcessorErrorCode.NO_THEMES_FOUND]: {\n themeName: string;\n };\n [ProcessorErrorCode.THEME_NOT_FOUND]: {\n themeName: string;\n availableThemes: string[];\n };\n [ProcessorErrorCode.TOKEN_SET_NOT_FOUND]: {\n setName: string;\n };\n [ProcessorErrorCode.TOKEN_SET_INVALID]: {\n setName: string;\n };\n [ProcessorErrorCode.NO_SETS_TO_PROCESS]: Record<string, never>;\n [ProcessorErrorCode.MULTIPLE_SETS_NO_SELECTION]: {\n setNames: string[];\n };\n [ProcessorErrorCode.UNKNOWN_PARSING_ERROR]: {\n error?: string;\n };\n [ProcessorErrorCode.RESOLVER_NOT_INITIALIZED]: Record<string, never>;\n}\n","export enum SymbolsErrorCode {\n // Type errors\n VALUE_MUST_BE_TYPE = \"SYM_VALUE_MUST_BE_TYPE\",\n VALUE_IS_NULL = \"SYM_VALUE_IS_NULL\",\n\n // Method errors\n METHOD_NOT_FOUND = \"SYM_METHOD_NOT_FOUND\",\n MISSING_REQUIRED_ARGUMENT = \"SYM_MISSING_REQUIRED_ARGUMENT\",\n ATTRIBUTE_NOT_FOUND = \"SYM_ATTRIBUTE_NOT_FOUND\",\n CANNOT_SET_ATTRIBUTE = \"SYM_CANNOT_SET_ATTRIBUTE\",\n\n // Number errors\n INVALID_RADIX = \"SYM_INVALID_RADIX\",\n RADIX_CONVERSION_ERROR = \"SYM_RADIX_CONVERSION_ERROR\",\n\n // String errors\n CANNOT_CONCATENATE = \"SYM_CANNOT_CONCATENATE\",\n CANNOT_SPLIT = \"SYM_CANNOT_SPLIT\",\n\n // List errors\n INDEX_OUT_OF_RANGE = \"SYM_INDEX_OUT_OF_RANGE\",\n\n // Dictionary errors\n KEY_MUST_BE_STRING = \"SYM_KEY_MUST_BE_STRING\",\n\n // Token errors\n CANNOT_OPERATION_ON_TOKEN_TYPE = \"SYM_CANNOT_OPERATION_ON_TOKEN_TYPE\",\n\n // Color errors\n INVALID_HEX_COLOR = \"SYM_INVALID_HEX_COLOR\",\n COLOR_MANAGER_NOT_AVAILABLE = \"SYM_COLOR_MANAGER_NOT_AVAILABLE\",\n INVALID_COLOR_VALUE = \"SYM_INVALID_COLOR_VALUE\",\n}\n\nexport interface SymbolsErrorData {\n [SymbolsErrorCode.VALUE_MUST_BE_TYPE]: {\n expectedType: string;\n actualType: string;\n };\n [SymbolsErrorCode.VALUE_IS_NULL]: {\n expectedType: string;\n };\n [SymbolsErrorCode.METHOD_NOT_FOUND]: {\n methodName: string;\n type: string;\n };\n [SymbolsErrorCode.MISSING_REQUIRED_ARGUMENT]: {\n argumentName: string;\n methodName: string;\n };\n [SymbolsErrorCode.ATTRIBUTE_NOT_FOUND]: {\n attributeName: string;\n type: string;\n };\n [SymbolsErrorCode.CANNOT_SET_ATTRIBUTE]: {\n attributeName: string;\n type: string;\n };\n [SymbolsErrorCode.INVALID_RADIX]: {\n radix: number;\n };\n [SymbolsErrorCode.RADIX_CONVERSION_ERROR]: {\n base: number;\n error: string;\n };\n [SymbolsErrorCode.CANNOT_CONCATENATE]: {\n type: string;\n };\n [SymbolsErrorCode.CANNOT_SPLIT]: {\n type: string;\n };\n [SymbolsErrorCode.INDEX_OUT_OF_RANGE]: {\n operation: string;\n };\n [SymbolsErrorCode.KEY_MUST_BE_STRING]: {\n type: string;\n };\n [SymbolsErrorCode.CANNOT_OPERATION_ON_TOKEN_TYPE]: {\n operation: string;\n valueType: string;\n };\n [SymbolsErrorCode.INVALID_HEX_COLOR]: {\n value: string;\n };\n [SymbolsErrorCode.COLOR_MANAGER_NOT_AVAILABLE]: Record<string, never>;\n [SymbolsErrorCode.INVALID_COLOR_VALUE]: {\n value: string;\n type: string;\n };\n}\n","import type { SerializedError } from \"../utils\";\n\nexport enum UnitErrorCode {\n // Conversion errors\n CONVERSION_CRASHED = \"UNIT_CONVERSION_CRASHED\",\n SOURCE_URI_NOT_FOUND = \"UNIT_SOURCE_URI_NOT_FOUND\",\n RELATIVE_REQUIRES_TWO_NUMBERS = \"UNIT_RELATIVE_REQUIRES_TWO_NUMBERS\",\n NO_TO_ABSOLUTE_SCRIPT = \"UNIT_NO_TO_ABSOLUTE_SCRIPT\",\n TO_ABSOLUTE_MUST_RETURN_NUMBER = \"UNIT_TO_ABSOLUTE_MUST_RETURN_NUMBER\",\n CANNOT_CONVERT_MULTIPLE_RELATIVE = \"UNIT_CANNOT_CONVERT_MULTIPLE_RELATIVE\",\n NO_VALID_CONVERSION_PATH = \"UNIT_NO_VALID_CONVERSION_PATH\",\n}\n\nexport interface UnitErrorData {\n [UnitErrorCode.CONVERSION_CRASHED]: {\n error: SerializedError;\n };\n [UnitErrorCode.SOURCE_URI_NOT_FOUND]: {\n unit: string;\n };\n [UnitErrorCode.RELATIVE_REQUIRES_TWO_NUMBERS]: Record<string, never>;\n [UnitErrorCode.NO_TO_ABSOLUTE_SCRIPT]: {\n unit: string;\n };\n [UnitErrorCode.TO_ABSOLUTE_MUST_RETURN_NUMBER]: Record<string, never>;\n [UnitErrorCode.CANNOT_CONVERT_MULTIPLE_RELATIVE]: Record<string, never>;\n [UnitErrorCode.NO_VALID_CONVERSION_PATH]: Record<string, never>;\n}\n","import { ColorErrorCode } from \"../codes/color\";\nimport { ConfigErrorCode } from \"../codes/config\";\nimport { FunctionsErrorCode } from \"../codes/functions\";\nimport { InterpreterErrorCode } from \"../codes/interpreter\";\nimport { LexerErrorCode } from \"../codes/lexer\";\nimport { OperationsErrorCode } from \"../codes/operations\";\nimport { ParserErrorCode } from \"../codes/parser\";\nimport { ProcessorErrorCode } from \"../codes/processor\";\nimport { SymbolsErrorCode } from \"../codes/symbols\";\nimport { UnitErrorCode } from \"../codes/unit\";\nimport type { MessageMap } from \"./types\";\n\nexport const messages: MessageMap = {\n // Lexer errors\n [LexerErrorCode.INVALID_CHARACTER]: (data) =>\n `Invalid character '${data.char}' at position ${data.position}.${data.description ? ` ${data.description}` : \"\"}`,\n\n [LexerErrorCode.UNTERMINATED_STRING]: (data) =>\n `Unterminated string, missing '${data.quoteType}'.`,\n\n [LexerErrorCode.UNTERMINATED_REFERENCE]: \"Unterminated reference, missing '}'.\",\n\n [LexerErrorCode.EMPTY_VARIABLE_NAME]: \"Empty variable name.\",\n\n [LexerErrorCode.INVALID_HEX_COLOR_FORMAT]: (data) =>\n `Invalid hex color format: ${data.value}. Length should be ${data.expectedLength}.`,\n\n [LexerErrorCode.EXPECTED_CHARACTER]: (data) =>\n `Expected character ${data.expected} got ${data.got}`,\n\n [LexerErrorCode.MULTIPLE_DECIMAL_POINTS]: (data) =>\n `Invalid number '${data.value}': multiple decimal points.`,\n\n // Parser errors\n [ParserErrorCode.UNEXPECTED_TOKEN]: (data) => `Unexpected token: ${data.token}`,\n\n [ParserErrorCode.EXPECTED_TOKEN_TYPE]: (data) =>\n `Expected token type ${data.expected} but got ${data.got}`,\n\n [ParserErrorCode.CONDITION_MUST_BE_BOOLEAN]: \"If/elif condition must be a boolean\",\n\n [ParserErrorCode.INVALID_SYNTAX]: (data) =>\n data?.message ? String(data.message) : \"Invalid syntax\",\n\n [ParserErrorCode.UNEXPECTED_END]: \"Unexpected end of input\",\n\n [ParserErrorCode.TOLERANT_REQUIRES_INLINE]:\n \"Tolerant mode only supports inline expressions. Use parse(true) for tolerant parsing.\",\n\n // Interpreter errors\n [InterpreterErrorCode.UNKNOWN_NODE_TYPE]: (data) =>\n `No visit method for AST node type: ${data.nodeType}`,\n\n [InterpreterErrorCode.ARITHMETIC_REQUIRES_NUMBER]: (data) =>\n `Arithmetic operator ${data.operator} requires Number or NumberWithUnit operands, got ${data.leftType} and ${data.rightType}.`,\n\n [InterpreterErrorCode.UNKNOWN_BINARY_OPERATOR]: (data) =>\n `Unknown binary operator: ${data.operator} or type ${data.tokenType}`,\n\n [InterpreterErrorCode.UNARY_MINUS_NULL]: (data) =>\n `Cannot apply unary '-' to a null ${data.symbolType}.`,\n\n [InterpreterErrorCode.UNARY_PLUS_NON_NUMBER]: (data) =>\n `Cannot apply unary '+' to non-number value: ${data.value}`,\n\n [InterpreterErrorCode.UNARY_NOT_NON_BOOLEAN]: (data) =>\n `Cannot apply NOT to non-boolean value: ${data.value}.`,\n\n [InterpreterErrorCode.UNKNOWN_UNARY_OPERATOR]: (data) =>\n `Unknown unary operator type: ${data.operator}`,\n\n [InterpreterErrorCode.UNKNOWN_REFERENCE]: (data) => `Unknown reference: ${data.reference}`,\n\n [InterpreterErrorCode.UNKNOWN_FUNCTION]: (data) => `Unknown function: '${data.functionName}'`,\n\n [InterpreterErrorCode.INVALID_VARIABLE_NAME]: (data) =>\n `Invalid variable name '${data.name}'. Use a simple name (and underscores) without '.', '-', '['.`,\n\n [InterpreterErrorCode.VARIABLE_ALREADY_DEFINED]: (data) =>\n `Variable '${data.name}' already defined. Use a different name.`,\n\n [InterpreterErrorCode.INVALID_VARIABLE_TYPE]: (data) =>\n `Invalid variable type '${data.typeName}'. Use a valid type. (${data.validTypes})`,\n\n [InterpreterErrorCode.INVALID_VALUE_FOR_VARIABLE]: (data) =>\n `Invalid value '${data.value}' ('${data.type}') for variable '${data.name}'. Use a valid value.`,\n\n [InterpreterErrorCode.VARIABLE_NOT_FOUND]: (data) => `Variable '${data.name}' not found.`,\n\n [InterpreterErrorCode.ASSIGNMENT_VALUE_NULL]: (data) =>\n `Assignment value for '${data.identifier}' is null.`,\n\n [InterpreterErrorCode.TYPE_MISMATCH]: (data) =>\n `Invalid value '${data.value}' (Found '${data.foundType}', expected '${data.expectedType}') for variable '${data.identifier}'. Use a valid value.`,\n\n [InterpreterErrorCode.CANNOT_ASSIGN_TYPE]: (data) =>\n `Cannot assign ${data.valueType} to variable '${data.identifier}' of type ${data.variableType}.`,\n\n [InterpreterErrorCode.METHOD_RETURNED_NULL]: (data) =>\n `Method '${data.methodName}' returned null or undefined`,\n\n [InterpreterErrorCode.METHOD_NOT_FOUND]: (data) =>\n `Method '${data.methodName}' not found on '${data.value}' (${data.type})`,\n\n [InterpreterErrorCode.ATTRIBUTE_RETURNED_NULL]: (data) =>\n `Attribute '${data.attributeName}' returned null or undefined`,\n\n [InterpreterErrorCode.ATTRIBUTE_NOT_FOUND]: (data) =>\n `Attribute '${data.attributeName}' not found on '${data.value}' (${data.type})`,\n\n [InterpreterErrorCode.CANNOT_ACCESS_ATTRIBUTES]: (data) =>\n `Cannot access attributes on ${data.type}`,\n\n [InterpreterErrorCode.MAX_ITERATIONS_EXCEEDED]: \"Max iterations exceeded in while loop.\",\n\n [InterpreterErrorCode.WHILE_CONDITION_NOT_BOOLEAN]: \"While loop condition must be a boolean.\",\n\n [InterpreterErrorCode.IF_CONDITION_NOT_BOOLEAN]: \"If/elif condition must be a boolean.\",\n\n [InterpreterErrorCode.FOR_EACH_NOT_LIST]: (data) =>\n `for...in requires a List, got ${data.actualType}.`,\n\n [InterpreterErrorCode.FOR_EACH_VARIABLE_SHADOW]: (data) =>\n `for...in variable '${data.name}' shadows an existing variable in this scope.`,\n\n [InterpreterErrorCode.FOR_EACH_DUPLICATE_VARS]: (data) =>\n `for...in item and index variables must have different names, both are '${data.name}'.`,\n\n [InterpreterErrorCode.UNKNOWN_ERROR]: \"An unknown error occurred during interpretation.\",\n\n // Operations errors\n [OperationsErrorCode.UNSUPPORTED_OPERAND_TYPE]: (data) =>\n `Unsupported operand type for unit decomposition: ${data.type}`,\n\n [OperationsErrorCode.CANNOT_MIX_UNITS]: (data) => `Cannot mix units: ${data.units.join(\", \")}`,\n\n [OperationsErrorCode.INCOMPATIBLE_TYPES]: (data) =>\n `Cannot compare ${data.typeA} with ${data.typeB}. Incompatible types.`,\n\n [OperationsErrorCode.CANNOT_COMPARE_UNITS]: (data) =>\n `Cannot compare NumberWithUnit of different units: ${data.unitA} and ${data.unitB}`,\n\n [OperationsErrorCode.ORDERING_WITH_NULL]: \"Cannot perform ordering comparison with null values.\",\n\n [OperationsErrorCode.LOGICAL_REQUIRES_BOOLEAN]: (data) =>\n `${data.operator} operator requires boolean operands.`,\n\n [OperationsErrorCode.DIVISION_BY_ZERO]: \"Division by zero.\",\n\n [OperationsErrorCode.UNIT_EXPONENT_NOT_SUPPORTED]: (data) =>\n `Cannot raise ${data.unitA} to the power of ${data.unitB}. Unit exponents are not supported.`,\n\n // Symbols errors\n [SymbolsErrorCode.VALUE_MUST_BE_TYPE]: (data) =>\n `Value must be ${data.expectedType}, got ${data.actualType}.`,\n\n [SymbolsErrorCode.VALUE_IS_NULL]: (data) => `Value must be ${data.expectedType}, got null.`,\n\n [SymbolsErrorCode.METHOD_NOT_FOUND]: (data) =>\n `Method '${data.methodName}' not found or invalid arguments on type '${data.type}'.`,\n\n [SymbolsErrorCode.MISSING_REQUIRED_ARGUMENT]: (data) =>\n `Missing required argument '${data.argumentName}' for method '${data.methodName}'.`,\n\n [SymbolsErrorCode.ATTRIBUTE_NOT_FOUND]: (data) =>\n `Attribute '${data.attributeName}' not found on ${data.type}.`,\n\n [SymbolsErrorCode.CANNOT_SET_ATTRIBUTE]: (data) =>\n `Cannot set attribute '${data.attributeName}' on type '${data.type}'.`,\n\n [SymbolsErrorCode.INVALID_RADIX]: (data) =>\n `Invalid radix: ${data.radix}. Must be between 2 and 36.`,\n\n [SymbolsErrorCode.RADIX_CONVERSION_ERROR]: (data) =>\n `Error converting to base ${data.base}: ${data.error}.`,\n\n [SymbolsErrorCode.CANNOT_CONCATENATE]: (data) => `Cannot concatenate ${data.type} to String.`,\n\n [SymbolsErrorCode.CANNOT_SPLIT]: (data) => `Cannot split String by ${data.type}.`,\n\n [SymbolsErrorCode.INDEX_OUT_OF_RANGE]: (data) => `Index out of range for ${data.operation}.`,\n\n [SymbolsErrorCode.KEY_MUST_BE_STRING]: (data) =>\n `Key must be a StringSymbol or string, got ${data.type}.`,\n\n [SymbolsErrorCode.CANNOT_OPERATION_ON_TOKEN_TYPE]: (data) =>\n `Cannot ${data.operation} Token with ${data.valueType} value.`,\n\n [SymbolsErrorCode.INVALID_HEX_COLOR]: (data) => `Invalid hex color format: ${data.value}`,\n\n [SymbolsErrorCode.COLOR_MANAGER_NOT_AVAILABLE]: \"ColorManager not available\",\n\n [SymbolsErrorCode.INVALID_COLOR_VALUE]: (data) =>\n `Value ${data.value} must be string, attributes record, or null, got ${data.type}.`,\n\n // Functions errors\n [FunctionsErrorCode.EXPECTS_NUMBER_ARGUMENTS]: (data) =>\n `${data.functionName}() expects number arguments.`,\n\n [FunctionsErrorCode.REQUIRES_MIN_ARGUMENTS]: (data) =>\n `${data.functionName}() requires at least ${data.minArgs} argument${data.minArgs === 1 ? \"\" : \"s\"}.`,\n\n [FunctionsErrorCode.EXPECTS_TYPE_ARGUMENT]: (data) =>\n `${data.functionName}() expects ${data.expectedType} as ${data.argumentPosition} argument.`,\n\n [FunctionsErrorCode.DIVISION_BY_ZERO]: (data) => `${data.functionName}() division by zero.`,\n\n [FunctionsErrorCode.ARGUMENT_OUT_OF_RANGE]: (data) =>\n `${data.functionName}() argument must be ${data.constraint}.`,\n\n [FunctionsErrorCode.INVALID_BASE]: (data) =>\n `${data.functionName}() base must be ${data.constraint}.`,\n\n [FunctionsErrorCode.PARSE_ERROR]: (data) =>\n `Invalid string for ${data.functionName}: \"${data.value}\" with base ${data.base}.`,\n\n [FunctionsErrorCode.UNIT_CONVERSION_FAILED]: (data) =>\n `${data.functionName || \"function\"}() unit conversion failed${data.error ? `: ${data.error}` : \"\"}`,\n\n [FunctionsErrorCode.NO_CONFIG_AVAILABLE]: (data) =>\n `No config available for dynamic function '${data.functionName || \"unknown\"}'`,\n\n [FunctionsErrorCode.FUNCTION_RETURNED_NULL]: (data) =>\n `Dynamic function '${data.functionName || \"unknown\"}' returned null`,\n\n [FunctionsErrorCode.EXECUTION_ERROR]: (data) =>\n `Error executing dynamic function '${data.functionName || \"unknown\"}'${data.error ? `: ${data.error}` : \"\"}`,\n\n // Config errors\n [ConfigErrorCode.NO_SPEC_FOUND]: (data) => `No spec found for ${data.specName}`,\n\n [ConfigErrorCode.NO_TYPE_FOUND]: (data) => `No type found for ${data.typeName}`,\n\n // Processor errors\n [ProcessorErrorCode.TOKEN_NOT_FOUND]: (data) => `Token '${data.tokenName}' not found`,\n\n [ProcessorErrorCode.TOKEN_ALREADY_EXISTS]: (data) => `Token '${data.tokenName}' already exists.`,\n\n [ProcessorErrorCode.CIRCULAR_DEPENDENCY]: (data) =>\n `Circular dependency detected: ${Array.isArray(data.tokens) ? data.tokens.join(\", \") : data.tokens}`,\n\n [ProcessorErrorCode.SUB_FIELD_NOT_RESOLVED]: (data) =>\n `Sub-field '${data.fieldPath}' not resolved`,\n\n [ProcessorErrorCode.DEPENDENCY_ERROR]: (data) =>\n `Token '${data.tokenName}' failed due to dependency error: ${data.chain}\\nRoot cause: ${data.rootCause}`,\n\n [ProcessorErrorCode.NO_THEMES_FOUND]: (data) => `No themes found for theme \"${data.themeName}\"`,\n\n [ProcessorErrorCode.THEME_NOT_FOUND]: (data) =>\n `Theme \"${data.themeName}\" not found. Available: ${data.availableThemes.join(\", \")}`,\n\n [ProcessorErrorCode.TOKEN_SET_NOT_FOUND]: (data) => `Token set \"${data.setName}\" not found`,\n\n [ProcessorErrorCode.TOKEN_SET_INVALID]: (data) => `Token set \"${data.setName}\" is not an object`,\n\n [ProcessorErrorCode.NO_SETS_TO_PROCESS]: \"No sets to process\",\n\n [ProcessorErrorCode.MULTIPLE_SETS_NO_SELECTION]: (data) =>\n `Multiple sets found (${data.setNames.join(\", \")}) - specify activeSets or activeTheme`,\n\n // Color errors\n [ColorErrorCode.INITIALIZER_CRASHED]: \"Initializer crashed!\",\n\n [ColorErrorCode.INITIALIZER_CONSTRUCT_FAILED]: (data) =>\n `Could not construct initializer from schema${data.error ? `: ${data.error}` : \"\"}`,\n\n [ColorErrorCode.INITIALIZER_NOT_FOUND]: (data) =>\n `No initializer found for keyword '${data.keyword}'`,\n\n [ColorErrorCode.CONVERSION_TARGET_NOT_FOUND]: (data) =>\n `Conversion function crashed! No target spec found for ${data.targetUri}`,\n\n [ColorErrorCode.SOURCE_URI_NOT_FOUND]: (data) =>\n `No source URI found for color type '${data.colorType}'`,\n\n [ColorErrorCode.TARGET_URI_NOT_FOUND]: (data) =>\n `No target URI found for color type '${data.colorType}'`,\n\n [ColorErrorCode.CONVERSION_ERROR]: (data) =>\n data.message ? String(data.message) : \"Color conversion failed\",\n\n [ColorErrorCode.STRING_VALUE_ASSIGNMENT]: (data) =>\n `Cannot set attributes '${data.attributes}' for variable ${data.identifier} on Color type ${data.colorType}.`,\n\n [ColorErrorCode.ATTRIBUTE_CHAIN_TOO_LONG]: (data) =>\n `Attributes chain '${data.attributes}' for variable ${data.identifier} on Color type ${data.colorType} may not exceed one element.`,\n\n [ColorErrorCode.MISSING_SPEC]: (data) =>\n `No spec ${data.colorType} defined for variable ${data.identifier} on Color type ${data.colorType}.`,\n\n [ColorErrorCode.MISSING_SCHEMA]: (data) => `No schema defined for Color type ${data.colorType}.`,\n\n [ColorErrorCode.MISSING_ATTRIBUTE_SCHEMA]: (data) =>\n `No schema found for key ${data.attribute} for variable ${data.identifier} on Color type ${data.colorType}.`,\n\n [ColorErrorCode.INVALID_ATTRIBUTE_TYPE]: (data) =>\n `Invalid attribute type '${data.attributeType}'. Use a valid type. (${data.validTypes})`,\n\n [ColorErrorCode.INVALID_ALPHA_VALUE]: (data) =>\n `Invalid alpha value '${data.alpha}'. Alpha must be between 0 and 1.`,\n\n // Unit errors\n [UnitErrorCode.CONVERSION_CRASHED]: (data) =>\n `Conversion function crashed!${data.error ? ` ${data.error}` : \"\"}`,\n\n [UnitErrorCode.SOURCE_URI_NOT_FOUND]: (data) => `No source URI found for unit '${data.unit}'`,\n\n [UnitErrorCode.RELATIVE_REQUIRES_TWO_NUMBERS]: \"Relative conversion requires exactly 2 numbers\",\n\n [UnitErrorCode.NO_TO_ABSOLUTE_SCRIPT]: (data) =>\n `No to_absolute script found for relative unit '${data.unit}'`,\n\n [UnitErrorCode.TO_ABSOLUTE_MUST_RETURN_NUMBER]: \"to_absolute script must return a number\",\n\n [UnitErrorCode.CANNOT_CONVERT_MULTIPLE_RELATIVE]:\n \"Cannot convert multiple relative units to a common format.\",\n\n [UnitErrorCode.NO_VALID_CONVERSION_PATH]:\n \"No valid conversion paths found for the provided inputs.\",\n};\n","import type { AllErrorCodes } from \"../base\";\nimport { messages } from \"./en\";\n\nexport const getMessage = (\n code: AllErrorCodes | string,\n data?: Record<string, unknown>,\n): string => {\n const template = messages[code];\n if (!template) {\n return `Unknown error: ${code}`;\n }\n if (typeof template === \"function\") {\n return template(data || {});\n }\n return template;\n};\n\nexport const isValidErrorCode = (code: string): code is AllErrorCodes => {\n return code in messages;\n};\n\nexport type { MessageFunction, MessageMap, MessageTemplate } from \"./types\";\n","import type { Token } from \"@src/types\";\nimport type { ColorErrorCode } from \"./codes/color\";\nimport type { ConfigErrorCode } from \"./codes/config\";\nimport type { FunctionsErrorCode } from \"./codes/functions\";\nimport type { InterpreterErrorCode } from \"./codes/interpreter\";\nimport type { LexerErrorCode } from \"./codes/lexer\";\nimport type { OperationsErrorCode } from \"./codes/operations\";\nimport type { ParserErrorCode } from \"./codes/parser\";\nimport type { ProcessorErrorCode } from \"./codes/processor\";\nimport type { SymbolsErrorCode } from \"./codes/symbols\";\nimport type { UnitErrorCode } from \"./codes/unit\";\nimport { getMessage } from \"./messages\";\n\nexport interface ErrorOptions {\n token?: Token;\n line?: number;\n data?: Record<string, unknown>;\n cause?: unknown;\n}\n\nexport type AllErrorCodes =\n | LexerErrorCode\n | ParserErrorCode\n | InterpreterErrorCode\n | OperationsErrorCode\n | SymbolsErrorCode\n | FunctionsErrorCode\n | ConfigErrorCode\n | ProcessorErrorCode\n | ColorErrorCode\n | UnitErrorCode;\n\nexport type InterpreterErrorCodes =\n | InterpreterErrorCode\n | OperationsErrorCode\n | SymbolsErrorCode\n | FunctionsErrorCode\n | ConfigErrorCode\n | ColorErrorCode\n | UnitErrorCode;\n\nexport class LanguageError extends Error {\n public readonly code: string;\n public readonly data: Record<string, unknown>;\n public readonly line?: number;\n public readonly token?: Token;\n public readonly originalMessage: string;\n\n constructor(code: string, options?: ErrorOptions) {\n const message = getMessage(code, options?.data);\n super(message, options?.cause ? { cause: options.cause } : undefined);\n\n this.name = this.constructor.name;\n this.code = code;\n this.data = options?.data || {};\n this.token = options?.token;\n\n // Derive line from token if not explicitly provided\n this.line = options?.line ?? options?.token?.line;\n\n this.originalMessage = message;\n this.message = this.formatMessage();\n }\n\n private formatMessage(): string {\n let base = this.originalMessage;\n if (this.line !== undefined) {\n base = `Line ${this.line}: ${base}`;\n }\n if (this.token?.value) {\n base += `\\nNear token: ${String(this.token.value)}`;\n }\n return base;\n }\n}\n\nexport class LexerError extends LanguageError {\n public readonly code: LexerErrorCode;\n\n constructor(code: LexerErrorCode, options?: ErrorOptions) {\n super(code, options);\n this.name = \"LexerError\";\n this.code = code;\n }\n}\n\nexport class ParserError extends LanguageError {\n public readonly code: ParserErrorCode;\n\n constructor(code: ParserErrorCode, options?: ErrorOptions) {\n super(code, options);\n this.name = \"ParserError\";\n this.code = code;\n }\n}\n\nexport class InterpreterError extends LanguageError {\n public readonly code: InterpreterErrorCodes;\n\n constructor(code: InterpreterErrorCodes, options?: ErrorOptions) {\n super(code, options);\n this.name = \"InterpreterError\";\n this.code = code;\n }\n}\n\nexport class ProcessorError extends LanguageError {\n public readonly code: ProcessorErrorCode;\n\n constructor(code: ProcessorErrorCode, options?: ErrorOptions) {\n super(code, options);\n this.name = \"ProcessorError\";\n this.code = code;\n }\n}\n","import { InterpreterError, LanguageError, LexerError, ParserError, ProcessorError } from \"./base\";\n\n/**\n * Union type for serialized error data that can be passed in error data objects.\n * Used when wrapping errors from catch blocks.\n */\nexport type SerializedError = Error | LanguageError | string | { message: string; stack?: string };\n\nexport function isLanguageError(error: unknown): error is LanguageError {\n return error instanceof LanguageError;\n}\n\nexport function isLexerError(error: unknown): error is LexerError {\n return error instanceof LexerError;\n}\n\nexport function isParserError(error: unknown): error is ParserError {\n return error instanceof ParserError;\n}\n\nexport function isInterpreterError(error: unknown): error is InterpreterError {\n return error instanceof InterpreterError;\n}\n\nexport function isProcessorError(error: unknown): error is ProcessorError {\n return error instanceof ProcessorError;\n}\n\n/**\n * Serializes an error into a structured format suitable for error data.\n * Preserves error information while ensuring it's serializable.\n */\nexport function serializeError(error: unknown): SerializedError {\n if (error instanceof LanguageError) {\n return error;\n }\n if (error instanceof Error) {\n return error;\n }\n if (typeof error === \"string\") {\n return error;\n }\n if (error && typeof error === \"object\" && \"message\" in error) {\n return error as { message: string; stack?: string };\n }\n return String(error);\n}\n","// Optional --------------------------------------------------------------------\n\nexport const isSome = <T>(v: T | null | undefined): v is T => {\n return v != null;\n};\n\nexport const isNone = (v: unknown): v is null | undefined => {\n return v == null;\n};\n\n// Primitive type guards -------------------------------------------------------\n\nexport const isNull = (v: unknown): v is null => {\n return v === null;\n};\n\nexport const isUndefined = (v: unknown): v is undefined => {\n return v === undefined;\n};\n\nexport const isObject = (v: unknown): v is Record<string, unknown> => {\n return typeof v === \"object\" && v !== null && !Array.isArray(v);\n};\n\nexport const isString = (v: unknown): v is string => {\n return typeof v === \"string\";\n};\n\nexport const isNumber = (v: unknown): v is number => {\n return typeof v === \"number\" && !Number.isNaN(v);\n};\n\nexport const isBoolean = (v: unknown): v is boolean => {\n return typeof v === \"boolean\";\n};\n\nexport const isArray = <T = unknown>(v: unknown): v is T[] => {\n return Array.isArray(v);\n};\n\nexport const isFunction = (v: unknown): v is (...args: unknown[]) => unknown => {\n return typeof v === \"function\";\n};\n\nexport const isDate = (v: unknown): v is Date => {\n return v instanceof Date && !Number.isNaN(v.getTime());\n};\n\n// Object ----------------------------------------------------------------------\n\nexport const isMap = (v: unknown): v is Map<unknown, unknown> => v instanceof Map;\n\nexport const isPlainObject = (v: unknown): v is Record<string, unknown> => {\n if (!isObject(v)) return false;\n\n // Objects created by the Object constructor or with null prototype\n const proto = Object.getPrototypeOf(v);\n return proto === Object.prototype || proto === null;\n};\n\nexport const hasProperty = <K extends string>(obj: unknown, key: K): obj is Record<K, unknown> => {\n return isObject(obj) && key in obj;\n};\n\nexport const getKeyAlt = <K extends string, T>(\n keys: readonly K[],\n record: Partial<Record<K, T>>,\n): T | undefined => {\n for (const key of keys) {\n if (key in record) {\n return record[key];\n }\n }\n return undefined;\n};\n\nexport const isObjectWithKey = <K extends string>(\n value: unknown,\n key: K,\n): value is Record<K, unknown> => {\n return isObject(value) && key in value;\n};\n\nexport const isNonEmptyObject = (v: unknown): boolean => {\n return isObject(v) && Object.keys(v).length > 0;\n};\n\nexport const isSingleEntryObject = (v: unknown): boolean => {\n return isObject(v) && Object.keys(v).length === 1;\n};\n\n// Array -----------------------------------------------------------------------\n\nexport const isNonEmptyArray = <T>(v: unknown): v is [T, ...T[]] => {\n return isArray(v) && v.length > 0;\n};\n\nexport const ensureArray = <T>(v: T | T[] | null | undefined): T[] => {\n if (isNone(v)) return [];\n if (isArray<T>(v)) return v;\n return [v];\n};\n\nexport const isOutOfBounds = <T>(value: unknown, index: number): boolean => {\n if (!isArray<T>(value)) return true;\n return index < 0 || index >= value.length;\n};\n\nexport const isOutOfBoundsInclusive = <T>(value: unknown, index: number): boolean => {\n if (!isArray<T>(value)) return true;\n return index < 0 || index > value.length;\n};\n\nexport const isEmpty = (v: unknown): boolean => {\n if (isNone(v)) return true;\n if (isString(v) || isArray(v)) return v.length === 0;\n if (isObject(v)) return Object.keys(v).length === 0;\n return false;\n};\n\n// Number parsing --------------------------------------------------------------\n\nexport const safeParseInt = (v: unknown): number | null => {\n if (isNumber(v)) return Math.floor(v);\n if (isString(v)) {\n const parsed = parseInt(v, 10);\n return Number.isNaN(parsed) ? null : parsed;\n }\n return null;\n};\n\nexport const safeParseFloat = (v: unknown): number | null => {\n if (isNumber(v)) return v;\n if (isString(v)) {\n const parsed = parseFloat(v);\n return Number.isNaN(parsed) ? null : parsed;\n }\n return null;\n};\n\n// Type Assertion Helpers ------------------------------------------------------\n\nexport const assertIsSome = <T>(v: T | null | undefined, message?: string): T => {\n if (isNone(v)) {\n throw new Error(message || \"Expected value to be defined\");\n }\n return v;\n};\n\nexport const assertIsType = <T>(v: unknown, guard: (v: unknown) => v is T, message?: string): T => {\n if (!guard(v)) {\n throw new Error(message || \"Type assertion failed\");\n }\n return v;\n};\n\nexport const optional = <T, R>(value: T | null | undefined, fn: (v: T) => R): R | undefined => {\n return isSome(value) ? fn(value) : undefined;\n};\n\nexport const when = <A, B>(a: A, b: B): B | undefined => {\n return a !== undefined && a !== null && a !== false ? b : undefined;\n};\n\nexport const withDefault = <T>(v: T | null | undefined, defaultValue: T): T => {\n return isSome(v) ? v : defaultValue;\n};\n\nexport const isEqual = (a: unknown, b: unknown): boolean => {\n if (a === b) return true;\n\n if (isNone(a) || isNone(b)) return a === b;\n\n if (isArray(a) && isArray(b)) {\n if (a.length !== b.length) return false;\n return a.every((item, index) => isEqual(item, b[index]));\n }\n\n if (isObject(a) && isObject(b)) {\n const keysA = Object.keys(a);\n const keysB = Object.keys(b);\n\n if (keysA.length !== keysB.length) return false;\n\n return keysA.every((key) => keysB.includes(key) && isEqual(a[key], b[key]));\n }\n\n return false;\n};\n\n// Conversion ------------------------------------------------------------------\n\nexport const nullToUndefined = <T>(v: T | null | undefined): T | undefined =>\n isNull(v) ? undefined : v;\n","import { ColorErrorCode, InterpreterError, SymbolsErrorCode } from \"../errors\";\nimport { isString } from \"./type\";\n\nexport function isValidHex(value: string): boolean {\n if (!isString(value)) return false;\n if (!value.startsWith(\"#\")) return false;\n const hexPart = value.substring(1);\n // Support hex3 (#RGB), hex4 (#RGBA), hex6 (#RRGGBB), hex8 (#RRGGBBAA)\n if (\n !(hexPart.length === 3 || hexPart.length === 4 || hexPart.length === 6 || hexPart.length === 8)\n )\n return false;\n for (let i = 0; i < hexPart.length; i++) {\n const char = hexPart[i].toLowerCase();\n if (!((char >= \"0\" && char <= \"9\") || (char >= \"a\" && char <= \"f\"))) {\n return false;\n }\n }\n return true;\n}\n\n/**\n * Parses a hex color string and extracts the color value and alpha.\n * Supports hex3 (#RGB), hex4 (#RGBA), hex6 (#RRGGBB), hex8 (#RRGGBBAA) formats.\n *\n * For backwards compatibility:\n * - hex3 and hex6 formats are preserved as-is (no alpha)\n * - hex4 is converted to hex6 with alpha extracted\n * - hex8 is converted to hex6 with alpha extracted\n *\n * Returns the color value and alpha (0-1 range, or null if not specified).\n */\nexport function parseHexWithAlpha(value: string): { color: string; alpha: number | null } {\n if (!isValidHex(value)) {\n throw new InterpreterError(SymbolsErrorCode.INVALID_HEX_COLOR, {\n data: { value },\n });\n }\n\n const hexPart = value.substring(1);\n\n if (hexPart.length === 3) {\n // #RGB - preserve as-is, no alpha\n return { color: value, alpha: null };\n }\n\n if (hexPart.length === 4) {\n // #RGBA -> #RRGGBB with alpha\n const r = hexPart[0];\n const g = hexPart[1];\n const b = hexPart[2];\n const a = hexPart[3];\n const expanded = `${r}${r}${g}${g}${b}${b}`;\n const alphaValue = Number.parseInt(a + a, 16) / 255;\n return { color: `#${expanded}`, alpha: alphaValue };\n }\n\n if (hexPart.length === 6) {\n // #RRGGBB - preserve as-is, no alpha\n return { color: value, alpha: null };\n }\n\n // hexPart.length === 8\n // #RRGGBBAA -> #RRGGBB with alpha\n const colorPart = hexPart.substring(0, 6);\n const alphaPart = hexPart.substring(6, 8);\n const alphaValue = Number.parseInt(alphaPart, 16) / 255;\n return { color: `#${colorPart}`, alpha: alphaValue };\n}\n\nexport function isValidAlpha(alpha: number | null): boolean {\n return alpha === null || (alpha >= 0 && alpha <= 1);\n}\n\nexport function ensureValidAlpha(alpha: number | null): void {\n if (!isValidAlpha(alpha)) {\n throw new InterpreterError(ColorErrorCode.INVALID_ALPHA_VALUE, {\n data: { alpha: alpha as number },\n });\n }\n}\n\nexport function isTransparent(alpha: number | null): alpha is number {\n return alpha !== null && alpha < 1;\n}\n\n/**\n * Formats a hex color with alpha as hex8 format (#RRGGBBAA).\n * Expands hex3 (#RGB) to hex6 (#RRGGBB) before appending alpha.\n */\nexport function formatHex8(hexColor: string, alpha: number): string {\n const alphaHex = Math.round(alpha * 255)\n .toString(16)\n .padStart(2, \"0\");\n\n // Expand 3-char hex to 6-char if needed\n let hex6 = hexColor;\n if (hexColor.length === 4) {\n // #RGB -> #RRGGBB\n hex6 = `#${hexColor[1]}${hexColor[1]}${hexColor[2]}${hexColor[2]}${hexColor[3]}${hexColor[3]}`;\n }\n\n return `${hex6}${alphaHex}`;\n}\n","export enum CodePoint {\n HYPHEN = 45,\n UNDERSCORE = 95,\n FORWARD_TICK = 180,\n BACKWARD_TICK = 96,\n}\n\nexport const isAlpha = (char: string | null): boolean => {\n if (char === null) return false;\n const cp = char.codePointAt(0) ?? 0;\n return (\n (cp >= 65 && cp <= 90) || // A-Z\n (cp >= 97 && cp <= 122) // a-z\n );\n};\n\nexport const isNumber = (char: string | null): boolean => {\n if (char === null) return false;\n const cp = char.codePointAt(0) ?? 0;\n return cp >= 48 && cp <= 57; // 0-9\n};\n\nexport const isAlphaNumeric = (char: string | null): boolean => {\n if (char === null) return false;\n return isAlpha(char) || isNumber(char);\n};\n\nexport const isSpace = (char: string | null) => {\n if (char === null) return false;\n return /\\s/.test(char);\n};\n\nexport const capitalize = (str: string): string =>\n `${str.charAt(0).toUpperCase()}${str.slice(1).toLowerCase()}`;\n","import { type ISymbolType, SupportedFormats, type SymbolMetadata } from \"@src/types\";\nimport type { Config } from \"./config/config\";\nimport { InterpreterError, SymbolsErrorCode } from \"./errors\";\nimport { ensureValidAlpha, formatHex8, isValidHex } from \"./utils/color\";\nimport { capitalize } from \"./utils/string\";\nimport {\n isArray,\n isBoolean,\n isMap,\n isNone,\n isNull,\n isNumber,\n isObject,\n isObjectWithKey,\n isOutOfBounds,\n isOutOfBoundsInclusive,\n isSome,\n isString,\n isUndefined,\n nullToUndefined,\n} from \"./utils/type\";\n\n// Types -----------------------------------------------------------------------\n\nexport interface ToJsOptions {\n /** Whether to recursively convert nested values (default: true) */\n recursive?: boolean;\n /** Whether to use toString() for structured types (default: false) */\n stringify?: boolean;\n}\n\n// Utilities -------------------------------------------------------------------\n\nexport function isTokenscriptSymbol(value: unknown): value is ISymbolType {\n return isObjectWithKey(value, \"getTypeName\");\n}\n\nexport function isList(value: TokenSymbol): boolean {\n return isArray(value.value);\n}\n\nexport function isDictionary(value: TokenSymbol): boolean {\n return isMap(value.value);\n}\n\nexport const typeEquals = (typeA: string | null, typeB: string | null) =>\n typeA?.toLowerCase() === typeB?.toLowerCase();\n\n/**\n * Constructs captialized type name from `base` and `sub?`\n * E.g.: base = color, sub = hex => Color.Hex\n * base = COLOR => Color\n */\nexport const typeName = (base: string, sub?: string): string => {\n const baseStr = capitalize(base);\n if (sub) {\n const subStr = capitalize(sub);\n return `${baseStr}.${subStr}`;\n }\n return baseStr;\n};\n\nexport const getResultTypeName = (result: unknown): string => {\n if (isNull(result)) {\n return \"Null\";\n }\n if (isString(result)) {\n return \"String\";\n }\n if (isTokenscriptSymbol(result)) {\n return result.getTypeName();\n }\n return \"Unknown\";\n};\n\nconst formatObjectEntries = (\n data: Record<string, unknown> | Map<string, unknown> | Array<[string, unknown]>,\n): string => {\n let entries: Array<[string, unknown]>;\n\n if (isArray(data)) {\n entries = data;\n } else if (isMap(data)) {\n entries = Array.from(data.entries());\n } else {\n entries = Object.entries(data);\n }\n\n const formattedEntries = entries.map(([key, value]) => `${key}: ${String(value)}`).join(\", \");\n return `{${formattedEntries}}`;\n};\n\n// Dictionary and List Implementation Functions --------------------------------\n\nconst expectStringKey = (key: StringSymbol | string): string => {\n if (isString(key)) {\n return key;\n }\n if (key instanceof StringSymbol && isSome(key.value)) {\n return key.value;\n }\n throw new InterpreterError(SymbolsErrorCode.KEY_MUST_BE_STRING, {\n data: { type: typeof key },\n });\n};\n\nexport const DictionaryImpl = {\n get(value: Map<string, ISymbolType>, key: StringSymbol | string, config?: Config): ISymbolType {\n const keyStr = expectStringKey(key);\n const result = value.get(keyStr);\n if (isSome(result)) {\n return result;\n }\n return new NullSymbol(config);\n },\n\n set(value: Map<string, ISymbolType>, key: StringSymbol | string, val: ISymbolType): void {\n const keyStr = expectStringKey(key);\n value.set(keyStr, val.cloneIfMutable());\n },\n\n deleteKey(value: Map<string, ISymbolType>, key: StringSymbol | string): void {\n const keyStr = expectStringKey(key);\n value.delete(keyStr);\n },\n\n keys(value: Map<string, ISymbolType>, config?: Config): ListSymbol {\n const keys = Array.from(value.keys()).map((key) => new StringSymbol(key, config));\n return new ListSymbol(keys, false, config);\n },\n\n values(value: Map<string, ISymbolType>, config?: Config): ListSymbol {\n const values = Array.from(value.values());\n return new ListSymbol(values, false, config);\n },\n\n keyExists(\n value: Map<string, ISymbolType>,\n key: StringSymbol | string,\n config?: Config,\n ): BooleanSymbol {\n const keyStr = expectStringKey(key);\n return new BooleanSymbol(value.has(keyStr), config);\n },\n\n length(value: Map<string, ISymbolType>, config?: Config): NumberSymbol {\n return new NumberSymbol(value.size, config);\n },\n\n clear(value: Map<string, ISymbolType>): void {\n value.clear();\n },\n\n deepCopy(value: Map<string, ISymbolType>): Map<string, ISymbolType> {\n const copiedMap = new Map<string, ISymbolType>();\n for (const [key, val] of value.entries()) {\n copiedMap.set(key, val.deepCopy());\n }\n return copiedMap;\n },\n\n toString(value: Map<string, ISymbolType>): string {\n return formatObjectEntries(value);\n },\n\n hasAttribute(value: Map<string, ISymbolType>, attributeName: string): boolean {\n return value.has(attributeName);\n },\n\n getAttribute(value: Map<string, ISymbolType>, attributeName: string): ISymbolType | null {\n const val = value.get(attributeName);\n return val !== undefined ? val : null;\n },\n};\n\nexport const ListImpl = {\n append(value: ISymbolType[], item: ISymbolType): void {\n value.push(item.cloneIfMutable());\n },\n\n extend(value: ISymbolType[], ...items: ISymbolType[]): void {\n for (const item of items) {\n if (item instanceof ListSymbol) {\n value.push(...item.value.map((element: ISymbolType) => element.cloneIfMutable()));\n } else {\n value.push(item.cloneIfMutable());\n }\n }\n },\n\n insert(value: ISymbolType[], indexSymbol: ISymbolType, item: ISymbolType): void {\n const index = indexSymbol.value as number;\n if (isOutOfBoundsInclusive(value, index)) {\n throw new InterpreterError(SymbolsErrorCode.INDEX_OUT_OF_RANGE, {\n data: { operation: \"insert\" },\n });\n }\n value.splice(index, 0, item.cloneIfMutable());\n },\n\n deleteAt(value: ISymbolType[], indexSymbol: ISymbolType): void {\n const index = indexSymbol.value as number;\n if (isOutOfBounds(value, index)) {\n throw new InterpreterError(SymbolsErrorCode.INDEX_OUT_OF_RANGE, {\n data: { operation: \"deletion\" },\n });\n }\n value.splice(index, 1);\n },\n\n length(value: ISymbolType[], config?: Config): NumberSymbol {\n return new NumberSymbol(value.length, config);\n },\n\n indexOf(value: ISymbolType[], item: ISymbolType, config?: Config): NumberSymbol {\n const idx = value.findIndex((el) => el.equals(item));\n return new NumberSymbol(idx, config);\n },\n\n get(value: ISymbolType[], indexSymbol: ISymbolType): ISymbolType {\n let index = indexSymbol.value as number;\n if (index < 0) {\n index = value.length + index;\n }\n if (isOutOfBounds(value, index)) {\n throw new InterpreterError(SymbolsErrorCode.INDEX_OUT_OF_RANGE, {\n data: { operation: \"get\" },\n });\n }\n return value[index];\n },\n\n update(value: ISymbolType[], indexSymbol: ISymbolType, item: ISymbolType): void {\n const index = indexSymbol.value as number;\n if (isOutOfBounds(value, index)) {\n throw new InterpreterError(SymbolsErrorCode.INDEX_OUT_OF_RANGE, {\n data: { operation: \"update\" },\n });\n }\n value[index] = item.cloneIfMutable();\n },\n\n join(value: ISymbolType[], separator: ISymbolType | undefined, config?: Config): StringSymbol {\n const sep = separator?.value || \"\";\n const stringElements = value.map((element) => {\n if (element.value === null) {\n return \"null\";\n }\n return element.toString();\n });\n return new StringSymbol(stringElements.join(sep), config);\n },\n\n deepCopy(value: ISymbolType[]): ISymbolType[] {\n return value.map((element) => element.deepCopy());\n },\n\n toString(value: ISymbolType[], isImplicit: boolean = false): string {\n const delimiter = isImplicit ? \" \" : \", \";\n return value.map((x) => (x.value === null ? \"null\" : x.toString())).join(delimiter);\n },\n};\n\n// Base Type -------------------------------------------------------------------\n\ntype SupportedMethods = Record<string, MethodDefinitionDef>;\n\ninterface MethodArgumentDef {\n name: string;\n type: any; // Could be ISymbolType constructor or a special marker like SymbolSelfType\n optional?: boolean;\n}\n\ninterface MethodDefinitionDef {\n name?: string;\n function: (...args: any[]) => ISymbolType | null | undefined;\n args: MethodArgumentDef[];\n returnType: any; // Could be ISymbolType constructor or a special marker\n}\n\nexport abstract class BaseSymbolType implements ISymbolType {\n abstract type: string;\n public value: any | null;\n public config?: Config;\n static _SUPPORTED_METHODS?: SupportedMethods;\n\n constructor(value: any, config?: Config) {\n this.value = value;\n this.config = config;\n }\n\n abstract validValue(value: any): boolean;\n\n /**\n * Forces creating a deepCopy of provided symbol no matter if it's immutable or not.\n */\n abstract deepCopy(): ISymbolType;\n\n /**\n * Returns a copy of the symbol if it's mutable, otherwise returns the same instance.\n *\n * This method is used to prevent reference sharing issues when storing symbols in\n * containers like lists and dictionaries. Immutable symbols (Number, String, Boolean,\n * NumberWithUnit, Null, hex ColorSymbol) can safely share references since they\n * cannot be modified after creation. Mutable symbols (List, Dictionary, dynamic\n * ColorSymbol) need to be deep copied to prevent unintended mutations.\n *\n * @returns For immutable symbols: returns `this` (same reference)\n * For mutable symbols: returns `this.deepCopy()` (new instance)\n */\n abstract cloneIfMutable(): ISymbolType;\n\n abstract toJs(options?: ToJsOptions): JsValue;\n\n toString(): string {\n return String(this.value);\n }\n\n getTypeName(): string {\n return this.type;\n }\n\n typeEquals(other: ISymbolType): boolean {\n return typeEquals(this.type, other.type);\n }\n\n equals(other: ISymbolType): boolean {\n return this.typeEquals(other) && this.value === other.value;\n }\n\n hasMethod?(methodName: string, args: ISymbolType[]): boolean {\n const methodDefinition = (this.constructor as any)._SUPPORTED_METHODS?.[\n methodName.toLowerCase()\n ];\n if (!methodDefinition) return false;\n if (methodDefinition.args.length === 0) return true;\n\n const requiredArgs = methodDefinition.args.filter((arg: MethodArgumentDef) => !arg.optional);\n\n if (args.length < requiredArgs.length) {\n return false;\n }\n\n if (args.length > methodDefinition.args.length) {\n return false;\n }\n\n return true;\n }\n\n callMethod?(methodName: string, args: ISymbolType[]): ISymbolType | null | undefined {\n const methodDefinition = (this.constructor as any)._SUPPORTED_METHODS?.[\n methodName.toLowerCase()\n ];\n if (!methodDefinition || !this.hasMethod?.(methodName, args)) {\n throw new InterpreterError(SymbolsErrorCode.METHOD_NOT_FOUND, {\n data: { methodName, type: this.type },\n });\n }\n\n if (methodDefinition.args.length === 0) {\n return methodDefinition.function.call(this, ...args);\n }\n\n const processedArgs: ISymbolType[] = [];\n\n methodDefinition.args.forEach((argDef: MethodArgumentDef, index: number) => {\n if (args[index] !== undefined) {\n processedArgs.push(args[index]);\n } else if (!argDef.optional) {\n throw new InterpreterError(SymbolsErrorCode.MISSING_REQUIRED_ARGUMENT, {\n data: { argumentName: argDef.name, methodName },\n });\n }\n });\n\n return methodDefinition.function.call(this, ...processedArgs);\n }\n\n hasAttribute?(_attributeName: string): boolean {\n return false;\n }\n\n getAttribute?(attributeName: string): ISymbolType | null {\n throw new InterpreterError(SymbolsErrorCode.ATTRIBUTE_NOT_FOUND, {\n data: { attributeName, type: this.type },\n });\n }\n\n setAttribute?(attributeName: string, _value: ISymbolType): void {\n throw new InterpreterError(SymbolsErrorCode.CANNOT_SET_ATTRIBUTE, {\n data: { attributeName, type: this.type },\n });\n }\n}\n\n// Concrete Symbol Types -------------------------------------------------------\n\n/**\n * Null type to differentiate from null values from the host language\n * Methods returning `null` should return this type, also as empty variables should keep this.\n * Host language `null` or `undefined` will crash when used as values during intepretation.\n */\nexport class NullSymbol extends BaseSymbolType {\n type = \"Null\";\n static readonly type = \"Null\";\n\n constructor(config?: Config) {\n super(null, config);\n }\n\n validValue(val: any): boolean {\n return isNone(val);\n }\n\n toString(): string {\n return \"null\";\n }\n\n deepCopy(): NullSymbol {\n return new NullSymbol(this.config);\n }\n\n cloneIfMutable(): NullSymbol {\n return this;\n }\n\n equals(other: ISymbolType): boolean {\n return other instanceof NullSymbol;\n }\n\n static empty(): NullSymbol {\n return new NullSymbol();\n }\n\n toJs(_options?: ToJsOptions): null {\n return null;\n }\n}\n\ntype NumberValue = number | null;\n\nexport class NumberSymbol extends BaseSymbolType {\n type = \"Number\";\n static readonly type = \"Number\";\n static _SUPPORTED_METHODS = {\n to_string: {\n name: \"to_string\",\n function: function (this: NumberSymbol, radix?: NumberSymbol) {\n return this.toStringSymbol(radix);\n },\n args: [\n {\n name: \"radix\",\n type: \"Number\",\n optional: true,\n },\n ],\n returnType: \"String\",\n },\n };\n\n public value: NumberValue;\n\n constructor(value: number | NumberSymbol | NumberWithUnitSymbol | null, config?: Config) {\n let safeValue: NumberValue;\n if (isNumber(value)) {\n safeValue = value;\n } else if (value instanceof NumberSymbol || value instanceof NumberWithUnitSymbol) {\n safeValue = value.value as number;\n } else if (isNull(value)) {\n safeValue = null;\n } else {\n throw new InterpreterError(SymbolsErrorCode.VALUE_MUST_BE_TYPE, {\n data: { expectedType: \"int or float\", actualType: typeof value },\n });\n }\n super(safeValue, config);\n this.value = safeValue;\n }\n\n validValue(val: any): boolean {\n return isNumber(val) || val instanceof NumberSymbol;\n }\n\n expectSafeValue(val: any): asserts val is number {\n if (isNone(val)) {\n throw new InterpreterError(SymbolsErrorCode.VALUE_IS_NULL, {\n data: { expectedType: \"int or float\" },\n });\n }\n }\n\n toString(): string {\n return String(this.value);\n }\n\n deepCopy(): NumberSymbol {\n return new NumberSymbol(this.value, this.config);\n }\n\n cloneIfMutable(): NumberSymbol {\n return this;\n }\n\n static empty(): NumberSymbol {\n return new NumberSymbol(null);\n }\n\n hasAttribute(attributeName: string): boolean {\n return attributeName === \"value\";\n }\n\n getAttribute(attributeName: string): ISymbolType | null {\n if (attributeName === \"value\") {\n return new NumberSymbol(this.value, this.config);\n }\n throw new InterpreterError(SymbolsErrorCode.ATTRIBUTE_NOT_FOUND, {\n data: { attributeName, type: \"Number\" },\n });\n }\n\n // Direct translation of to_string method from token_interpreter/symbols.py\n toStringSymbol(radix?: NumberSymbol): StringSymbol {\n this.expectSafeValue(this.value);\n\n if (radix) {\n this.expectSafeValue(radix?.value);\n } else {\n return new StringSymbol(String(this.value), this.config);\n }\n\n const base = radix.value;\n if (!Number.isInteger(base) || base < 2 || base > 36) {\n throw new InterpreterError(SymbolsErrorCode.INVALID_RADIX, {\n data: { radix: base },\n });\n }\n\n let numValue: number;\n if (base === 16) {\n numValue = Math.round(this.value);\n // For hexadecimal, round non-integer values (with .5 rounding down)\n // Otherwise color conversion to hex wont work as expected\n const fractionalPart = Math.abs(this.value % 1);\n if (fractionalPart === 0.5) {\n // .5 cases round down (towards negative infinity)\n numValue = Math.floor(this.value);\n } else {\n // Normal rounding for other fractional parts\n numValue = Math.round(this.value);\n }\n } else {\n numValue = this.value;\n }\n\n try {\n if (Number.isInteger(numValue) && radix) {\n return new StringSymbol(numValue.toString(base), this.config);\n } else {\n return new StringSymbol(String(this.value), this.config);\n }\n } catch (e) {\n throw new InterpreterError(SymbolsErrorCode.RADIX_CONVERSION_ERROR, {\n data: { base, error: String(e) },\n });\n }\n }\n\n toJs(_options?: ToJsOptions): NumberValue {\n return this.value;\n }\n}\n\ntype StringValue = string | null;\n\nexport class StringSymbol extends BaseSymbolType {\n type = \"String\";\n static readonly type = \"String\";\n static _SUPPORTED_METHODS = {\n upper: {\n function: function (this: StringSymbol) {\n return this.upper();\n },\n args: [],\n returnType: \"String\",\n },\n lower: {\n function: function (this: StringSymbol) {\n return this.lower();\n },\n args: [],\n returnType: \"String\",\n },\n length: {\n function: function (this: StringSymbol) {\n return this.length();\n },\n args: [],\n returnType: \"Number\",\n },\n concat: {\n function: function (this: StringSymbol, other: StringSymbol) {\n return this.concat(other);\n },\n args: [{ name: \"other\", type: \"String\" }],\n returnType: \"String\",\n },\n split: {\n function: function (this: StringSymbol, delimiter?: StringSymbol) {\n return this.split(delimiter);\n },\n args: [{ name: \"delimiter\", type: \"String\", optional: true }],\n returnType: \"List\",\n },\n };\n\n public value: StringValue;\n\n constructor(value: string | StringSymbol | null, config?: Config) {\n let safeValue: string | null;\n if (typeof value === \"string\") {\n safeValue = value;\n } else if (value instanceof StringSymbol) {\n safeValue = value.value;\n } else if (value === null) {\n safeValue = null;\n } else {\n throw new InterpreterError(SymbolsErrorCode.VALUE_MUST_BE_TYPE, {\n data: { expectedType: \"string\", actualType: typeof value },\n });\n }\n super(safeValue, config);\n this.value = safeValue;\n }\n\n validValue(val: any): boolean {\n return typeof val === \"string\" || val instanceof StringSymbol;\n }\n\n expectSafeValue(val: any): asserts val is string {\n if (val === null || val === undefined) {\n throw new InterpreterError(SymbolsErrorCode.VALUE_IS_NULL, {\n data: { expectedType: \"string\" },\n });\n }\n }\n\n upper(): StringSymbol {\n this.expectSafeValue(this.value);\n return new StringSymbol(this.value.toUpperCase(), this.config);\n }\n\n deepCopy(): StringSymbol {\n return new StringSymbol(this.value, this.config);\n }\n\n cloneIfMutable(): StringSymbol {\n return this;\n }\n\n static empty(): StringSymbol {\n return new StringSymbol(null);\n }\n\n lower(): StringSymbol {\n this.expectSafeValue(this.value);\n return new StringSymbol(this.value.toLowerCase(), this.config);\n }\n\n length(): NumberSymbol {\n this.expectSafeValue(this.value);\n return new NumberSymbol(this.value.length, this.config);\n }\n\n concat(other: StringSymbol): StringSymbol {\n this.expectSafeValue(this.value);\n if (other instanceof StringSymbol) {\n other.expectSafeValue(other.value);\n return new StringSymbol(this.value + other.value, this.config);\n }\n throw new InterpreterError(SymbolsErrorCode.CANNOT_CONCATENATE, {\n data: { type: `String ${typeof other}` },\n });\n }\n\n split(delimiter?: StringSymbol): ListSymbol {\n this.expectSafeValue(this.value);\n const strValue = this.value;\n\n if (delimiter instanceof StringSymbol) {\n const parts = strValue.split(delimiter.value as string);\n return new ListSymbol(\n parts.map((p) => new StringSymbol(p, this.config)),\n false,\n this.config,\n );\n } else if (typeof delimiter === \"string\") {\n const parts = strValue.split(delimiter);\n return new ListSymbol(\n parts.map((p) => new StringSymbol(p, this.config)),\n false,\n this.config,\n );\n } else if (delimiter === undefined || delimiter === null) {\n const parts = Array.from(strValue);\n return new ListSymbol(\n parts.map((p) => new StringSymbol(p, this.config)),\n false,\n this.config,\n );\n }\n\n throw new InterpreterError(SymbolsErrorCode.CANNOT_SPLIT, {\n data: { type: typeof delimiter },\n });\n }\n\n toJs(_options?: ToJsOptions): StringValue {\n return this.value;\n }\n}\n\ntype BooleanValue = boolean | null;\n\nexport class BooleanSymbol extends BaseSymbolType {\n type = \"Boolean\";\n static readonly type = \"Boolean\";\n\n public value: BooleanValue;\n constructor(value: boolean | BooleanSymbol | null, config?: Config) {\n let safeValue: BooleanValue;\n if (typeof value === \"boolean\") {\n safeValue = value;\n } else if (value instanceof BooleanSymbol) {\n safeValue = value.value;\n } else if (value === null) {\n safeValue = null;\n } else {\n throw new InterpreterError(SymbolsErrorCode.VALUE_MUST_BE_TYPE, {\n data: { expectedType: \"boolean\", actualType: typeof value },\n });\n }\n super(safeValue, config);\n this.value = safeValue;\n }\n\n validValue(val: any): boolean {\n return typeof val === \"boolean\" || val instanceof BooleanSymbol;\n }\n\n expectSafeValue(val: any): asserts val is boolean {\n if (val === null || val === undefined) {\n throw new InterpreterError(SymbolsErrorCode.VALUE_IS_NULL, {\n data: { expectedType: \"boolean\" },\n });\n }\n }\n\n deepCopy(): BooleanSymbol {\n return new BooleanSymbol(this.value, this.config);\n }\n\n cloneIfMutable(): BooleanSymbol {\n return this;\n }\n\n static empty(): BooleanSymbol {\n return new BooleanSymbol(null);\n }\n\n toJs(_options?: ToJsOptions): BooleanValue {\n return this.value;\n }\n}\n\nexport class ListSymbol extends BaseSymbolType {\n type = \"List\";\n static readonly type = \"List\";\n static _SUPPORTED_METHODS = {\n append: {\n function: function (this: ListSymbol, item: ISymbolType) {\n return this.append(item);\n },\n args: [{ name: \"item\", type: \"any\" }],\n returnType: \"List\",\n },\n extend: {\n function: function (this: ListSymbol, ...items: ISymbolType[]) {\n return this.extend(...items);\n },\n args: [],\n returnType: \"List\",\n },\n insert: {\n function: function (this: ListSymbol, index: NumberSymbol, item: ISymbolType) {\n return this.insert(index, item);\n },\n args: [\n { name: \"index\", type: \"Number\" },\n { name: \"item\", type: \"any\" },\n ],\n returnType: \"List\",\n },\n delete: {\n function: function (this: ListSymbol, index: NumberSymbol) {\n return this.delete(index);\n },\n args: [{ name: \"index\", type: \"Number\" }],\n returnType: \"List\",\n },\n length: {\n function: function (this: ListSymbol) {\n return this.length();\n },\n args: [],\n returnType: \"Number\",\n },\n index: {\n function: function (this: ListSymbol, item: ISymbolType) {\n return this.index(item);\n },\n args: [{ name: \"item\", type: \"any\" }],\n returnType: \"Number\",\n },\n get: {\n function: function (this: ListSymbol, index: NumberSymbol) {\n return this.get(index);\n },\n args: [{ name: \"index\", type: \"Number\" }],\n returnType: \"any\",\n },\n update: {\n function: function (this: ListSymbol, index: NumberSymbol, item: ISymbolType) {\n return this.update(index, item);\n },\n args: [\n { name: \"index\", type: \"Number\" },\n { name: \"item\", type: \"any\" },\n ],\n returnType: \"List\",\n },\n join: {\n function: function (this: ListSymbol, separator?: StringSymbol) {\n return this.join(separator);\n },\n args: [{ name: \"separator\", type: \"String\", optional: true }],\n returnType: \"String\",\n },\n };\n\n public value: ISymbolType[];\n public isImplicit: boolean;\n\n constructor(elements: ISymbolType[] | null, isImplicit = false, config?: Config) {\n const safeElements = elements === null ? [] : elements;\n super(safeElements, config);\n this.value = safeElements;\n this.isImplicit = isImplicit;\n }\n\n validValue(val: any): boolean {\n return Array.isArray(val) || val instanceof ListSymbol;\n }\n\n toString(): string {\n return ListImpl.toString(this.value, this.isImplicit);\n }\n\n append(item: ISymbolType): ListSymbol {\n ListImpl.append(this.value, item);\n return this;\n }\n\n extend(...items: ISymbolType[]): ListSymbol {\n ListImpl.extend(this.value, ...items);\n return this;\n }\n\n insert(indexSymbol: NumberSymbol, item: ISymbolType): ListSymbol {\n ListImpl.insert(this.value, indexSymbol, item);\n return this;\n }\n\n delete(indexSymbol: NumberSymbol): ListSymbol {\n ListImpl.deleteAt(this.value, indexSymbol);\n return this;\n }\n\n length(): NumberSymbol {\n return ListImpl.length(this.value, this.config);\n }\n\n index(item: ISymbolType): NumberSymbol {\n return ListImpl.indexOf(this.value, item, this.config);\n }\n\n get(indexSymbol: NumberSymbol): ISymbolType {\n return ListImpl.get(this.value, indexSymbol);\n }\n\n update(indexSymbol: NumberSymbol, item: ISymbolType): ListSymbol {\n ListImpl.update(this.value, indexSymbol, item);\n return this;\n }\n\n join(separator?: StringSymbol): StringSymbol {\n return ListImpl.join(this.value, separator, this.config);\n }\n\n deepCopy(): ListSymbol {\n const copiedElements = ListImpl.deepCopy(this.value);\n return new ListSymbol(copiedElements, this.isImplicit, this.config);\n }\n\n cloneIfMutable(): ListSymbol {\n return this.deepCopy();\n }\n\n static empty(): ListSymbol {\n return new ListSymbol(null);\n }\n\n getTypeName(): string {\n return this.isImplicit ? typeName(this.type, \"Implicit\") : typeName(this.type);\n }\n\n toJs(options?: ToJsOptions): JsValue[] {\n const { recursive = true } = options ?? {};\n if (!recursive) return this.value as any;\n return this.value.map((item) => item.toJs(options));\n }\n}\n\ntype NumberWithUnitValue = number | null;\n\nexport class NumberWithUnitSymbol extends BaseSymbolType {\n type = \"NumberWithUnit\";\n static readonly type = \"NumberWithUnit\";\n static _SUPPORTED_METHODS = {\n to_string: {\n name: \"to_string\",\n function: function (this: NumberWithUnitSymbol) {\n return this.toStringSymbol();\n },\n args: [\n {\n name: \"radix\",\n type: \"Number\",\n optional: true,\n },\n ],\n returnType: \"String\",\n },\n to_number: {\n function: function (this: NumberWithUnitSymbol) {\n return this.to_number();\n },\n args: [],\n returnType: \"Number\",\n },\n };\n\n public value: NumberWithUnitValue;\n public unit: SupportedFormats;\n\n constructor(\n value: number | NumberSymbol | null,\n unit: SupportedFormats | string,\n config?: Config,\n ) {\n let safeValue: NumberWithUnitValue;\n if (typeof value === \"number\") {\n safeValue = value;\n } else if (value instanceof NumberSymbol) {\n safeValue = value.value;\n } else if (value === null) {\n safeValue = null;\n } else {\n throw new InterpreterError(SymbolsErrorCode.VALUE_MUST_BE_TYPE, {\n data: { expectedType: \"number or NumberSymbol\", actualType: typeof value },\n });\n }\n super(safeValue, config);\n this.value = safeValue;\n\n if (typeof unit === \"string\" && !(Object.values(SupportedFormats) as string[]).includes(unit)) {\n throw new InterpreterError(SymbolsErrorCode.ATTRIBUTE_NOT_FOUND, {\n data: { attributeName: unit, type: \"Unit\" },\n });\n }\n this.unit = typeof unit === \"string\" ? (unit as SupportedFormats) : unit;\n }\n\n validValue(val: any): boolean {\n return val instanceof NumberWithUnitSymbol;\n }\n\n static fromRecord(\n record: {\n value: number | string;\n unit: string;\n type?: string;\n },\n config?: Config,\n ): NumberWithUnitSymbol | undefined {\n if (record === null || typeof record !== \"object\") return;\n if (record.type !== \"NumberWithUnit\") return;\n if (!record.value && !record.unit) return;\n if (typeof record.value !== \"number\") return;\n\n return new NumberWithUnitSymbol(record.value, record.unit, config);\n }\n\n toString(): string {\n return `${this.value}${this.unit}`;\n }\n\n expectSafeValue(val: any): asserts val is number {\n if (val === null || val === undefined) {\n throw new InterpreterError(SymbolsErrorCode.VALUE_IS_NULL, {\n data: { expectedType: \"number\" },\n });\n }\n }\n\n toStringSymbol(): StringSymbol {\n this.expectSafeValue(this.value);\n return new StringSymbol(`${this.value}${this.unit}`, this.config);\n }\n\n to_number(): NumberSymbol {\n this.expectSafeValue(this.value);\n return new NumberSymbol(this.value, this.config);\n }\n\n equals(other: ISymbolType): boolean {\n return (\n other instanceof NumberWithUnitSymbol &&\n this.value === other.value &&\n this.unit.toLowerCase() === other?.unit.toLowerCase()\n );\n }\n\n deepCopy(): NumberWithUnitSymbol {\n return new NumberWithUnitSymbol(this.value, this.unit, this.config);\n }\n\n cloneIfMutable(): NumberWithUnitSymbol {\n return this;\n }\n\n static empty(): NumberWithUnitSymbol {\n return new NumberWithUnitSymbol(null, \"px\");\n }\n\n hasAttribute(attributeName: string): boolean {\n return attributeName === \"value\";\n }\n\n getAttribute(attributeName: string): ISymbolType | null {\n if (attributeName === \"value\") {\n return new NumberSymbol(this.value, this.config);\n }\n throw new InterpreterError(SymbolsErrorCode.ATTRIBUTE_NOT_FOUND, {\n data: { attributeName, type: \"NumberWithUnit\" },\n });\n }\n\n getTypeName(): string {\n return `${this.type}.${capitalize(this.unit)}`;\n }\n\n toJs(options?: ToJsOptions): string | { value: number | null; unit: string } {\n const { stringify = false } = options ?? {};\n if (stringify) return this.toString();\n return { value: this.value, unit: this.unit };\n }\n}\n\nexport class DictionarySymbol extends BaseSymbolType {\n type = \"Dictionary\";\n static readonly type = \"Dictionary\";\n static _SUPPORTED_METHODS = {\n get: {\n function: function (this: DictionarySymbol, key: StringSymbol) {\n return this.get(key);\n },\n args: [{ name: \"key\", type: \"String\", optional: false }],\n returnType: \"any\",\n },\n set: {\n function: function (this: DictionarySymbol, key: StringSymbol, value: ISymbolType) {\n return this.set(key, value);\n },\n args: [\n { name: \"key\", type: \"String\", optional: false },\n { name: \"value\", type: \"any\", optional: false },\n ],\n returnType: \"Dictionary\",\n },\n delete: {\n function: function (this: DictionarySymbol, key: StringSymbol) {\n return this.delete(key);\n },\n args: [{ name: \"key\", type: \"String\", optional: false }],\n returnType: \"Dictionary\",\n },\n keys: {\n function: function (this: DictionarySymbol) {\n return this.keys();\n },\n args: [],\n returnType: \"List\",\n },\n values: {\n function: function (this: DictionarySymbol) {\n return this.values();\n },\n args: [],\n returnType: \"List\",\n },\n key_exists: {\n function: function (this: DictionarySymbol, key: StringSymbol) {\n return this.keyExists(key);\n },\n args: [{ name: \"key\", type: \"String\", optional: false }],\n returnType: \"Boolean\",\n },\n length: {\n function: function (this: DictionarySymbol) {\n return this.length();\n },\n args: [],\n returnType: \"Number\",\n },\n clear: {\n function: function (this: DictionarySymbol) {\n return this.clear();\n },\n args: [],\n returnType: \"Dictionary\",\n },\n };\n\n public value: Map<string, ISymbolType>;\n\n constructor(\n value: Map<string, ISymbolType> | Record<string, ISymbolType> | DictionarySymbol | null,\n config?: Config,\n ) {\n let safeValue: Map<string, ISymbolType> | null;\n if (value instanceof DictionarySymbol) {\n safeValue = value.value;\n } else if (isMap(value)) {\n safeValue = value;\n } else if (isNull(value)) {\n safeValue = new Map();\n } else if (isObject(value)) {\n safeValue = new Map(Object.entries(value));\n } else {\n throw new InterpreterError(SymbolsErrorCode.VALUE_MUST_BE_TYPE, {\n data: { expectedType: \"dict\", actualType: typeof value },\n });\n }\n super(safeValue, config);\n this.value = safeValue;\n }\n\n validValue(val: any): boolean {\n return isMap(val) || isNull(val);\n }\n\n toString(): string {\n return DictionaryImpl.toString(this.value);\n }\n\n get(key: StringSymbol): ISymbolType {\n return DictionaryImpl.get(this.value, key, this.config);\n }\n\n set(key: StringSymbol, value: ISymbolType): DictionarySymbol {\n DictionaryImpl.set(this.value, key, value);\n return this;\n }\n\n delete(key: StringSymbol): DictionarySymbol {\n DictionaryImpl.deleteKey(this.value, key);\n return this;\n }\n\n keys(): ListSymbol {\n return DictionaryImpl.keys(this.value, this.config);\n }\n\n values(): ListSymbol {\n return DictionaryImpl.values(this.value, this.config);\n }\n\n keyExists(key: StringSymbol): BooleanSymbol {\n return DictionaryImpl.keyExists(this.value, key, this.config);\n }\n\n length(): NumberSymbol {\n return DictionaryImpl.length(this.value, this.config);\n }\n\n clear(): DictionarySymbol {\n DictionaryImpl.clear(this.value);\n return this;\n }\n\n deepCopy(): DictionarySymbol {\n const copiedMap = DictionaryImpl.deepCopy(this.value);\n return new DictionarySymbol(copiedMap, this.config);\n }\n\n cloneIfMutable(): DictionarySymbol {\n return this.deepCopy();\n }\n\n static empty(): DictionarySymbol {\n return new DictionarySymbol(null);\n }\n\n hasAttribute(attributeName: string): boolean {\n return DictionaryImpl.hasAttribute(this.value, attributeName);\n }\n\n getAttribute(attributeName: string): ISymbolType | null {\n return DictionaryImpl.getAttribute(this.value, attributeName);\n }\n\n toJs(options?: ToJsOptions): Record<string, JsValue> {\n const { recursive = true } = options ?? {};\n const obj: Record<string, JsValue> = {};\n for (const [key, child] of this.value.entries()) {\n obj[key] = recursive ? child.toJs(options) : (child as any);\n }\n return obj;\n }\n}\n\nexport type TokenValue = Map<string, ISymbolType> | ISymbolType[];\n\nexport class TokenSymbol extends BaseSymbolType {\n type = \"Token\";\n static readonly type = \"Token\";\n static _SUPPORTED_METHODS = {\n get: {\n function: function (this: TokenSymbol, keyOrIndex: StringSymbol | NumberSymbol) {\n return this.get(keyOrIndex);\n },\n args: [{ name: \"keyOrIndex\", type: \"String|Number\", optional: false }],\n returnType: \"any\",\n },\n set: {\n function: function (this: TokenSymbol, key: StringSymbol, value: ISymbolType) {\n return this.set(key, value);\n },\n args: [\n { name: \"key\", type: \"String\", optional: false },\n { name: \"value\", type: \"any\", optional: false },\n ],\n returnType: \"Token\",\n },\n keys: {\n function: function (this: TokenSymbol) {\n return this.keys();\n },\n args: [],\n returnType: \"List\",\n },\n values: {\n function: function (this: TokenSymbol) {\n return this.values();\n },\n args: [],\n returnType: \"List\",\n },\n length: {\n function: function (this: TokenSymbol) {\n return this.length();\n },\n args: [],\n returnType: \"Number\",\n },\n // List methods (when value is Array)\n append: {\n function: function (this: TokenSymbol, item: ISymbolType) {\n return this.append(item);\n },\n args: [{ name: \"item\", type: \"any\" }],\n returnType: \"Token\",\n },\n extend: {\n function: function (this: TokenSymbol, ...items: ISymbolType[]) {\n return this.extend(...items);\n },\n args: [],\n returnType: \"Token\",\n },\n insert: {\n function: function (this: TokenSymbol, index: NumberSymbol, item: ISymbolType) {\n return this.insert(index, item);\n },\n args: [\n { name: \"index\", type: \"Number\" },\n { name: \"item\", type: \"any\" },\n ],\n returnType: \"Token\",\n },\n delete: {\n function: function (this: TokenSymbol, index: NumberSymbol) {\n return this.delete(index);\n },\n args: [{ name: \"index\", type: \"Number\" }],\n returnType: \"Token\",\n },\n index: {\n function: function (this: TokenSymbol, item: ISymbolType) {\n return this.index(item);\n },\n args: [{ name: \"item\", type: \"any\" }],\n returnType: \"Number\",\n },\n update: {\n function: function (this: TokenSymbol, index: NumberSymbol, item: ISymbolType) {\n return this.update(index, item);\n },\n args: [\n { name: \"index\", type: \"Number\" },\n { name: \"item\", type: \"any\" },\n ],\n returnType: \"Token\",\n },\n join: {\n function: function (this: TokenSymbol, separator?: StringSymbol) {\n return this.join(separator);\n },\n args: [{ name: \"separator\", type: \"String\", optional: true }],\n returnType: \"String\",\n },\n };\n\n public subType: string;\n public value: TokenValue;\n /**\n * Optional metadata attached to this token.\n * This is a reference that is preserved (not cloned) during deepCopy/cloneIfMutable operations.\n * It is not accessible to the tokenscript language and is intended for external use\n * (e.g., storing token IDs for tracing).\n */\n public metadata?: SymbolMetadata;\n\n constructor(\n subType: string,\n value: TokenValue | Record<string, ISymbolType> | TokenSymbol | null,\n config?: Config,\n metadata?: SymbolMetadata,\n ) {\n let safeValue: TokenValue;\n if (value instanceof TokenSymbol) {\n safeValue = value.value;\n } else if (isMap(value)) {\n safeValue = value;\n } else if (isObject(value)) {\n safeValue = new Map(Object.entries(value));\n } else if (isArray(value)) {\n safeValue = value;\n } else if (isNull(value)) {\n safeValue = new Map();\n } else {\n throw new InterpreterError(SymbolsErrorCode.VALUE_MUST_BE_TYPE, {\n data: { expectedType: \"Record or List\", actualType: typeof value },\n });\n }\n\n super(safeValue, config);\n this.value = safeValue;\n this.subType = subType;\n this.metadata = metadata;\n }\n\n validValue(val: any): boolean {\n return isMap(val) || isArray(val) || isNull(val);\n }\n\n toString(): string {\n if (isMap(this.value)) {\n return DictionaryImpl.toString(this.value);\n }\n return ListImpl.toString(this.value);\n }\n\n get(keyOrIndex: StringSymbol | NumberSymbol | string | number): ISymbolType {\n if (isArray(this.value)) {\n const indexSymbol =\n typeof keyOrIndex === \"number\" ? new NumberSymbol(keyOrIndex, this.config) : keyOrIndex;\n if (!(indexSymbol instanceof NumberSymbol)) {\n throw new InterpreterError(SymbolsErrorCode.CANNOT_OPERATION_ON_TOKEN_TYPE, {\n data: { operation: \"List get\", valueType: \"non-Number index\" },\n });\n }\n return ListImpl.get(this.value, indexSymbol);\n }\n const keySymbol =\n typeof keyOrIndex === \"string\" ? new StringSymbol(keyOrIndex, this.config) : keyOrIndex;\n if (!(keySymbol instanceof StringSymbol)) {\n throw new InterpreterError(SymbolsErrorCode.CANNOT_OPERATION_ON_TOKEN_TYPE, {\n data: { operation: \"Dictionary get\", valueType: \"non-String key\" },\n });\n }\n return DictionaryImpl.get(this.value, keySymbol, this.config);\n }\n\n set(key: StringSymbol, value: ISymbolType): TokenSymbol {\n if (isArray(this.value)) {\n throw new InterpreterError(SymbolsErrorCode.CANNOT_OPERATION_ON_TOKEN_TYPE, {\n data: { operation: \"set key\", valueType: \"List\" },\n });\n }\n DictionaryImpl.set(this.value, key, value);\n return this;\n }\n\n keys(): ListSymbol {\n if (isArray(this.value)) {\n throw new InterpreterError(SymbolsErrorCode.CANNOT_OPERATION_ON_TOKEN_TYPE, {\n data: { operation: \"get keys\", valueType: \"List\" },\n });\n }\n return DictionaryImpl.keys(this.value, this.config);\n }\n\n values(): ListSymbol {\n if (isMap(this.value)) {\n return DictionaryImpl.values(this.value, this.config);\n }\n return new ListSymbol(this.value, false, this.config);\n }\n\n length(): NumberSymbol {\n if (isMap(this.value)) {\n return DictionaryImpl.length(this.value, this.config);\n }\n return ListImpl.length(this.value, this.config);\n }\n\n // List-specific methods\n append(item: ISymbolType): TokenSymbol {\n if (isMap(this.value)) {\n throw new InterpreterError(SymbolsErrorCode.CANNOT_OPERATION_ON_TOKEN_TYPE, {\n data: { operation: \"append\", valueType: \"Dictionary\" },\n });\n }\n ListImpl.append(this.value, item);\n return this;\n }\n\n extend(...items: ISymbolType[]): TokenSymbol {\n if (isMap(this.value)) {\n throw new InterpreterError(SymbolsErrorCode.CANNOT_OPERATION_ON_TOKEN_TYPE, {\n data: { operation: \"extend\", valueType: \"Dictionary\" },\n });\n }\n ListImpl.extend(this.value, ...items);\n return this;\n }\n\n insert(indexSymbol: NumberSymbol, item: ISymbolType): TokenSymbol {\n if (isMap(this.value)) {\n throw new InterpreterError(SymbolsErrorCode.CANNOT_OPERATION_ON_TOKEN_TYPE, {\n data: { operation: \"insert\", valueType: \"Dictionary\" },\n });\n }\n ListImpl.insert(this.value, indexSymbol, item);\n return this;\n }\n\n delete(indexSymbol: NumberSymbol): TokenSymbol {\n if (isMap(this.value)) {\n throw new InterpreterError(SymbolsErrorCode.CANNOT_OPERATION_ON_TOKEN_TYPE, {\n data: { operation: \"delete\", valueType: \"Dictionary\" },\n });\n }\n ListImpl.deleteAt(this.value, indexSymbol);\n return this;\n }\n\n index(item: ISymbolType): NumberSymbol {\n if (isMap(this.value)) {\n throw new InterpreterError(SymbolsErrorCode.CANNOT_OPERATION_ON_TOKEN_TYPE, {\n data: { operation: \"get index\", valueType: \"Dictionary\" },\n });\n }\n return ListImpl.indexOf(this.value, item, this.config);\n }\n\n update(indexSymbol: NumberSymbol, item: ISymbolType): TokenSymbol {\n if (isMap(this.value)) {\n throw new InterpreterError(SymbolsErrorCode.CANNOT_OPERATION_ON_TOKEN_TYPE, {\n data: { operation: \"update\", valueType: \"Dictionary\" },\n });\n }\n ListImpl.update(this.value, indexSymbol, item);\n return this;\n }\n\n join(separator?: StringSymbol): StringSymbol {\n if (isMap(this.value)) {\n throw new InterpreterError(SymbolsErrorCode.CANNOT_OPERATION_ON_TOKEN_TYPE, {\n data: { operation: \"join\", valueType: \"Dictionary\" },\n });\n }\n return ListImpl.join(this.value, separator, this.config);\n }\n\n deepCopy(): TokenSymbol {\n if (isMap(this.value)) {\n return new TokenSymbol(\n this.subType,\n DictionaryImpl.deepCopy(this.value),\n this.config,\n this.metadata,\n );\n }\n return new TokenSymbol(this.subType, ListImpl.deepCopy(this.value), this.config, this.metadata);\n }\n\n cloneIfMutable(): TokenSymbol {\n return this.deepCopy();\n }\n\n static empty(): TokenSymbol {\n return new TokenSymbol(\"unknown\", null);\n }\n\n hasAttribute(attributeName: string): boolean {\n if (attributeName === \"subType\" || attributeName === \"type\") {\n return true;\n }\n if (isMap(this.value)) {\n return DictionaryImpl.hasAttribute(this.value, attributeName);\n }\n return false;\n }\n\n getAttribute(attributeName: string): ISymbolType | null {\n if (attributeName === \"subType\") {\n return new StringSymbol(this.subType, this.config);\n }\n if (attributeName === \"type\") {\n return new StringSymbol(this.type, this.config);\n }\n if (isMap(this.value)) {\n return DictionaryImpl.getAttribute(this.value, attributeName);\n }\n return null;\n }\n\n getTypeName(): string {\n return typeName(this.type, this.subType);\n }\n\n toJs(options?: ToJsOptions): JsValue[] | Record<string, JsValue> {\n const { recursive = true } = options ?? {};\n if (isMap(this.value)) {\n const obj: Record<string, JsValue> = {};\n const mapValue = this.value as Map<string, ISymbolType>;\n for (const [key, child] of mapValue.entries()) {\n obj[key] = recursive ? child.toJs(options) : (child as any);\n }\n return obj;\n }\n if (isArray(this.value)) {\n const arrayValue = this.value as ISymbolType[];\n return recursive ? arrayValue.map((item) => item.toJs(options)) : (arrayValue as any);\n }\n return {};\n }\n}\n\nexport type dynamicColorValue = Record<string, ISymbolType>;\ntype ColorValue = string | dynamicColorValue | null;\n\nexport class ColorSymbol extends BaseSymbolType {\n type = \"Color\";\n static readonly type = \"Color\";\n static _SUPPORTED_METHODS = {\n to_string: {\n name: \"to_string\",\n function: function (this: ColorSymbol) {\n return this.toStringSymbol();\n },\n args: [],\n returnType: \"String\",\n },\n };\n\n public subType: string | null = null;\n public value: ColorValue;\n public alpha: number | null = null;\n\n static empty(): ColorSymbol {\n return new ColorSymbol(null);\n }\n\n constructor(value: ColorValue, subType?: string, alpha?: number | null, config?: Config) {\n const isHex = (isUndefined(subType) || subType?.toLowerCase() === \"hex\") && isString(value);\n const isDynamic = isString(subType) && isObject(value);\n const isValid = isNull(value) || isHex || isDynamic;\n\n if (!isValid) {\n throw new InterpreterError(SymbolsErrorCode.INVALID_COLOR_VALUE, {\n data: { value: String(value), type: typeof value },\n });\n }\n\n if (isHex) {\n if (!isValidHex(value)) {\n throw new InterpreterError(SymbolsErrorCode.INVALID_HEX_COLOR, {\n data: { value: String(value) },\n });\n }\n }\n\n super(value, config);\n\n this.value = value;\n this.subType = isHex ? \"Hex\" : subType || null;\n\n const alphaValue = alpha ?? null;\n ensureValidAlpha(alphaValue);\n this.alpha = alphaValue;\n }\n\n toStringSymbol(): StringSymbol {\n if (this.config?.colorManager) {\n const formatted = this.config.colorManager.formatColorMethod(this);\n return new StringSymbol(formatted, this.config);\n }\n if (isObject(this.value)) {\n return new StringSymbol(formatObjectEntries(this.value), this.config);\n }\n if (isString(this.value)) {\n // For hex colors with alpha, output hex8 format\n if (this.isHex() && this.alpha !== null) {\n return new StringSymbol(formatHex8(this.value, this.alpha), this.config);\n }\n return new StringSymbol(this.value, this.config);\n }\n return new StringSymbol(\"\", this.config);\n }\n\n toString(): string {\n return this.toStringSymbol().toString();\n }\n\n to(targetType: string): ColorSymbol {\n if (!this.config?.colorManager) {\n throw new InterpreterError(SymbolsErrorCode.COLOR_MANAGER_NOT_AVAILABLE);\n }\n return this.config.colorManager.convertToByType(this, targetType);\n }\n\n typeEquals(other: ISymbolType): boolean {\n if (!typeEquals(this.type, other.type)) return false;\n const otherColor = other as ColorSymbol;\n // Edge-Case Color without type is equal to Hex only\n if ((!this.subType && otherColor.isHex()) || (this.isHex() && !otherColor.subType)) return true;\n return typeEquals(this.subType, (other as ColorSymbol).subType);\n }\n\n isHex(): boolean {\n return typeEquals(this.subType, \"hex\");\n }\n\n validValue(val: any): boolean {\n return val instanceof ColorSymbol || isNull(val) || isObject(val) || isValidHex(val);\n }\n\n equals(other: ISymbolType): boolean {\n if (!this.typeEquals(other)) return false;\n\n const otherColor = other as ColorSymbol;\n\n if (this.alpha !== otherColor.alpha) return false;\n\n // Compare non-hex\n if (isObject(this.value) && isObject(otherColor.value)) {\n const thisKeys = Object.keys(this.value);\n const otherKeys = Object.keys(otherColor.value);\n\n if (thisKeys.length !== otherKeys.length) return false;\n\n for (const key of thisKeys) {\n if (!this.value[key].equals(otherColor.value[key])) return false;\n }\n return true;\n }\n\n // Compare hex value directly\n return this.value === otherColor.value;\n }\n\n deepCopy(): ColorSymbol {\n if (isObject(this.value)) {\n // For dynamic colors with object values, deep copy the object\n const copiedValue: dynamicColorValue = {};\n for (const [key, val] of Object.entries(this.value)) {\n copiedValue[key] = val.deepCopy();\n }\n return new ColorSymbol(copiedValue, this.subType || undefined, this.alpha, this.config);\n }\n // For hex colors (string values), no deep copy needed\n return new ColorSymbol(this.value, this.subType || undefined, this.alpha, this.config);\n }\n\n cloneIfMutable(): ColorSymbol {\n if (isObject(this.value)) {\n // Dynamic colors with object values are mutable, need deep copy\n return this.deepCopy();\n }\n // Hex colors (string values) are immutable, return this\n return this;\n }\n\n hasAttribute(attributeName: string): boolean {\n if (attributeName === \"to\" || attributeName === \"alpha\") {\n return true;\n }\n\n // For dynamic colors (object values), check if the attribute exists\n if (isObject(this.value)) {\n return attributeName in this.value;\n }\n\n // For hex colors and null values, no attributes are supported\n return false;\n }\n\n getAttribute(attributeName: string): ISymbolType | null {\n if (attributeName === \"to\") {\n return this;\n }\n\n if (attributeName === \"alpha\") {\n return this.alpha !== null\n ? new NumberSymbol(this.alpha, this.config)\n : new NullSymbol(this.config);\n }\n\n if (isObject(this.value)) {\n const attributeValue = this.value[attributeName];\n if (attributeValue !== undefined) {\n return attributeValue;\n }\n }\n\n throw new InterpreterError(SymbolsErrorCode.ATTRIBUTE_NOT_FOUND, {\n data: { attributeName, type: \"Color\" },\n });\n }\n\n hasMethod(methodName: string, args: ISymbolType[]): boolean {\n // First check if it's a built-in method\n if (super.hasMethod?.(methodName, args)) {\n return true;\n }\n\n // Check if it's a color conversion method\n if (this.config?.colorManager.hasInitializer(methodName)) {\n return true;\n }\n\n return false;\n }\n\n callMethod(methodName: string, args: ISymbolType[]): ISymbolType | null | undefined {\n // First check if it's a built-in method\n const methodDefinition = (this.constructor as any)._SUPPORTED_METHODS?.[\n methodName.toLowerCase()\n ];\n if (methodDefinition && super.hasMethod?.(methodName, args)) {\n return super.callMethod?.(methodName, args);\n }\n\n // Handle color conversion methods\n if (this.config?.colorManager.hasInitializer(methodName)) {\n return this.config.colorManager.convertToByType(this, methodName);\n }\n\n throw new InterpreterError(SymbolsErrorCode.METHOD_NOT_FOUND, {\n data: { methodName, type: this.type },\n });\n }\n\n getTypeName(): string {\n return typeName(this.type, nullToUndefined(this.subType));\n }\n\n toJs(options?: ToJsOptions): string | Record<string, JsValue> {\n const { stringify = false, recursive = true } = options ?? {};\n\n if (stringify) {\n return this.toString();\n }\n\n // For hex colors (string value)\n if (isString(this.value)) {\n return {\n type: this.subType || \"hex\",\n value: this.value,\n alpha: this.alpha,\n };\n }\n\n // For dynamic colors (object value)\n if (isObject(this.value)) {\n const result: Record<string, JsValue> = {\n type: this.subType || \"unknown\",\n alpha: this.alpha,\n };\n\n for (const [key, val] of Object.entries(this.value)) {\n result[key] = recursive ? val.toJs(options) : (val as any);\n }\n\n return result;\n }\n\n // For null values\n return {\n type: this.subType || \"unknown\",\n value: null,\n alpha: this.alpha,\n };\n }\n}\n\n// Symbol Normalization Utilities ----------------------------------------------\n\nexport const jsValueToSymbolType = (value: any, config?: Config): ISymbolType => {\n if (value instanceof BaseSymbolType) {\n value.config = config;\n return value;\n }\n if (isNone(value)) return new NullSymbol(config);\n if (isNumber(value)) return new NumberSymbol(value, config);\n if (isString(value)) {\n if (isValidHex(value)) return new ColorSymbol(value, \"Hex\", null, config);\n return new StringSymbol(value, config);\n }\n if (isBoolean(value)) return new BooleanSymbol(value, config);\n if (isArray(value))\n return new ListSymbol(\n value.map((item) => jsValueToSymbolType(item, config)),\n false,\n config,\n );\n\n // Convert plain object to dictionary\n if (isObject(value)) {\n const dict = new Map<string, ISymbolType>();\n for (const key in value) {\n dict.set(key, jsValueToSymbolType(value[key], config));\n }\n return new DictionarySymbol(dict, config);\n }\n\n throw new InterpreterError(SymbolsErrorCode.VALUE_MUST_BE_TYPE, {\n data: { expectedType: \"valid TokenScript type\", actualType: typeof value },\n });\n};\n\nexport const nullableSymbolTypes = {\n [NumberSymbol.type.toLowerCase()]: NumberSymbol,\n [StringSymbol.type.toLowerCase()]: StringSymbol,\n [BooleanSymbol.type.toLowerCase()]: BooleanSymbol,\n [NumberWithUnitSymbol.type.toLowerCase()]: NumberWithUnitSymbol,\n [ColorSymbol.type.toLowerCase()]: ColorSymbol,\n [NullSymbol.type.toLowerCase()]: NullSymbol,\n} as const;\n\nexport const basicSymbolTypes = {\n ...nullableSymbolTypes,\n [ListSymbol.type.toLowerCase()]: ListSymbol,\n [DictionarySymbol.type.toLowerCase()]: DictionarySymbol,\n [TokenSymbol.type.toLowerCase()]: TokenSymbol,\n} as const;\n\nexport type BasicSymbolTypeConstructor = (typeof basicSymbolTypes)[keyof typeof basicSymbolTypes];\n\nexport const isNullableSymbol = (symbol: ISymbolType): boolean =>\n symbol.type.toLowerCase() in nullableSymbolTypes;\n\nexport const hasNullValue = (symbol: ISymbolType): boolean =>\n isNullableSymbol(symbol) && isNull(symbol.value);\n\n// Symbol to JS Value Conversion -----------------------------------------------\n\n/**\n * Represents a JavaScript value that can be produced from a TokenScript symbol.\n * This includes primitives, arrays, and plain objects (recursively).\n */\nexport type JsValue = string | number | boolean | null | JsValue[] | { [key: string]: JsValue };\n\n/**\n * Serializes an interpreter result (symbol or primitive) to a plain JavaScript value.\n */\nexport function serializeInterpreterResult(\n value: ISymbolType | string | null,\n options?: ToJsOptions,\n): unknown {\n if (isString(value)) return value;\n if (isNull(value)) return null;\n if (isTokenscriptSymbol(value)) return value.toJs(options);\n return value;\n}\n\n/**\n * Converts an interpreter result to a string representation.\n */\nexport function stringifyInterpreterResult(value: ISymbolType | string | null): string {\n if (isString(value)) return value;\n if (isTokenscriptSymbol(value)) return value.toString();\n return String(value);\n}\n"]}
|