{"version":3,"sources":["../../src/types.ts"],"names":["Operations","SupportedFormats","ReservedKeyword","TokenType"],"mappings":"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","file":"chunk-ZMMIYWFF.cjs","sourcesContent":["import type { Config } from \"@interpreter/config/config\";\n\nexport enum Operations {\n  SUBTRACT = \"-\",\n  ADD = \"+\",\n  MULTIPLY = \"*\",\n  DIVIDE = \"/\",\n  POWER = \"^\",\n  LOGIC_AND = \"&&\",\n  LOGIC_OR = \"||\",\n  LOGIC_NOT = \"!\",\n}\n\nexport enum SupportedFormats {\n  PX = \"px\",\n  EM = \"em\",\n  REM = \"rem\",\n  VW = \"vw\",\n  VH = \"vh\",\n  PT = \"pt\",\n  IN = \"in\",\n  CM = \"cm\",\n  MM = \"mm\",\n  DEG = \"deg\",\n  PERCENTAGE = \"%\",\n  // Time units\n  S = \"s\",\n  MS = \"ms\",\n  // Font-relative units\n  CH = \"ch\",\n}\n\nexport enum ReservedKeyword {\n  TRUE = \"true\",\n  FALSE = \"false\",\n  NULL = \"null\",\n  UNDEFINED = \"undefined\",\n  WHILE = \"while\",\n  IF = \"if\",\n  ELSE = \"else\",\n  ELIF = \"elif\",\n  RETURN = \"return\",\n  VARIABLE = \"variable\",\n  FOR = \"for\",\n}\n\nexport enum TokenType {\n  REFERENCE = \"REFERENCE\",\n  NUMBER = \"NUMBER\",\n  OPERATION = \"OPERATION\",\n  FORMAT = \"FORMAT\",\n  LPAREN = \"LPAREN\",\n  RPAREN = \"RPAREN\",\n  EOF = \"EOF\",\n  COMMA = \"COMMA\",\n  HEX_COLOR = \"HEX_COLOR\",\n  STRING = \"STRING\",\n  EXPLICIT_STRING = \"EXPLICIT_STRING\",\n  TEMPLATE_STRING = \"TEMPLATE_STRING\",\n  ASSIGN = \"ASSIGN\",\n  IS_EQ = \"IS_EQ\",\n  IS_GT = \"GT\",\n  IS_LT = \"LT\",\n  IS_GT_EQ = \"IS_GT_EQ\",\n  IS_LT_EQ = \"IS_LT_EQ\",\n  IS_NOT_EQ = \"IS_NOT_EQ\",\n  RESERVED_KEYWORD = \"RESERVED_KEYWORD\",\n  SEMICOLON = \"SEMICOLON\",\n  LOGIC_NOT = \"LOGIC_NOT\",\n  COLON = \"COLON\",\n  DOT = \"DOT\",\n  LOGIC_AND = \"LOGIC_AND\",\n  LOGIC_OR = \"LOGIC_OR\",\n  LBLOCK = \"LBLOCK\",\n  RBLOCK = \"RBLOCK\",\n  // Partial tokens for tolerant parsing\n  PARTIAL_REFERENCE = \"PARTIAL_REFERENCE\",\n  PARTIAL_STRING = \"PARTIAL_STRING\",\n}\n\nexport interface Token {\n  type: TokenType;\n  value: any;\n  line: number;\n  pos: number;\n  endPos: number;\n}\n\nexport interface ASTNode {\n  token?: Token;\n  nodeType: string;\n}\n\n/**\n * Metadata attached to a symbol that is preserved across cloning operations.\n * This data is not accessible to the tokenscript language itself and is intended\n * for external use (e.g., storing token IDs for tracing).\n */\nexport type SymbolMetadata = Record<string, unknown>;\n\nexport interface ISymbolType {\n  type: string;\n  value: any;\n\n  /**\n   * Optional metadata attached to this symbol.\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   */\n  metadata?: SymbolMetadata;\n\n  cloneIfMutable(): ISymbolType;\n  deepCopy(): ISymbolType;\n\n  typeEquals(other: ISymbolType): boolean;\n  equals(other: ISymbolType): boolean;\n  validValue(value: any): boolean;\n\n  toJSON?(): any;\n  toString(): string;\n  getTypeName(): string;\n  toJs(options?: { recursive?: boolean; stringify?: boolean }): any;\n\n  hasMethod?(methodName: string, args: ISymbolType[]): boolean;\n  callMethod?(methodName: string, args: ISymbolType[]): ISymbolType | null | undefined;\n  hasAttribute?(attributeName: string): boolean;\n  getAttribute?(attributeName: string): ISymbolType | null;\n  setAttribute?(attributeName: string, value: ISymbolType, config?: Config): void;\n}\n\n/** Reserved keywords that introduce statements — only valid in script mode, not inline mode. */\nexport const SCRIPT_ONLY_STATEMENT_KEYWORDS: ReadonlySet<string> = new Set([\n  ReservedKeyword.VARIABLE,\n  ReservedKeyword.IF,\n  ReservedKeyword.WHILE,\n  ReservedKeyword.FOR,\n  ReservedKeyword.RETURN,\n]);\n\nexport const UNINTERPRETED_KEYWORDS: string[] = [\n  \"inside\",\n  \"outside\",\n  \"above\",\n  \"below\",\n  \"left\",\n  \"right\",\n  \"top\",\n  \"bottom\",\n  \"before\",\n  \"after\",\n  \"between\",\n  \"uppercase\",\n  \"lowercase\",\n  \"underline\",\n  \"none\",\n  \"innerShadow\",\n  \"outerShadow\",\n  \"shadow\",\n];\n\nexport type ReferenceRecordValue = string | number | ISymbolType;\n\nexport type ReferenceRecord = Record<string, ReferenceRecordValue | Array<ReferenceRecordValue>>;\n"]}