mlld
Version:
mlld: llm scripting language
1 lines • 4.87 kB
Source Map (JSON)
{"version":3,"sources":["../interpreter/utils/variable-migration.ts"],"names":["extractVariableValue","variable","value","internalMeta","internal","customToString","type","Array","isArray","Object","defineProperty","enumerable","configurable","customToJSON","contentGetter","get","writable","hasVariableMetadata","__variable","getVariableMetadata","undefined"],"mappings":";;;AAYO,SAASA,qBAAqBC,QAAkB,EAAA;AACrD,EAAA,IAAIC,QAAQD,QAASC,CAAAA,KAAAA;AAGrB,EAAA,MAAMC,eAAeF,QAASG,CAAAA,QAAAA;AAC9B,EAAA,MAAMC,iBACHF,YAAcE,EAAAA,cAAAA;AACjB,EAAIJ,IAAAA,QAAAA,CAASK,IAAS,KAAA,OAAA,IAAWD,cAAgB,EAAA;AAC/C,IAAIE,IAAAA,KAAAA,CAAMC,OAAQN,CAAAA,KAAAA,CAAQ,EAAA;AAExBO,MAAOC,MAAAA,CAAAA,cAAAA,CAAeR,OAAO,UAAY,EAAA;QACvCA,KAAOG,EAAAA,cAAAA;QACPM,UAAY,EAAA,KAAA;QACZC,YAAc,EAAA;OAChB,CAAA;AACF;AACF;AAGA,EAAA,MAAMC,eACHV,YAAcU,EAAAA,YAAAA;AACjB,EAAIZ,IAAAA,QAAAA,CAASK,IAAS,KAAA,OAAA,IAAWO,YAAc,EAAA;AAC7C,IAAIN,IAAAA,KAAAA,CAAMC,OAAQN,CAAAA,KAAAA,CAAQ,EAAA;AACxBO,MAAOC,MAAAA,CAAAA,cAAAA,CAAeR,OAAO,QAAU,EAAA;QACrCA,KAAOW,EAAAA,YAAAA;QACPF,UAAY,EAAA,KAAA;QACZC,YAAc,EAAA;OAChB,CAAA;AACF;AACF;AAGA,EAAA,MAAME,gBACHX,YAAcW,EAAAA,aAAAA;AACjB,EAAIb,IAAAA,QAAAA,CAASK,IAAS,KAAA,OAAA,IAAWQ,aAAe,EAAA;AAC9C,IAAIP,IAAAA,KAAAA,CAAMC,OAAQN,CAAAA,KAAAA,CAAQ,EAAA;AACxBO,MAAOC,MAAAA,CAAAA,cAAAA,CAAeR,OAAO,SAAW,EAAA;QACtCa,GAAKD,EAAAA,aAAAA;QACLH,UAAY,EAAA,KAAA;QACZC,YAAc,EAAA;OAChB,CAAA;AACF;AACF;AAIA,EAAA,IAAIV,KAAU,KAAA,IAAA,IAAQ,OAAOA,KAAAA,KAAU,QAAU,EAAA;AAC/CO,IAAOC,MAAAA,CAAAA,cAAAA,CAAeR,OAAO,YAAc,EAAA;MACzCA,KAAOD,EAAAA,QAAAA;MACPU,UAAY,EAAA,KAAA;MACZC,YAAc,EAAA,IAAA;MACdI,QAAU,EAAA;KACZ,CAAA;AACF;AAEA,EAAOd,OAAAA,KAAAA;AACT;AAxDgBF,MAAAA,CAAAA,oBAAAA,EAAAA,sBAAAA,CAAAA;AA8DT,SAASiB,oBAAoBf,KAAc,EAAA;AAChD,EAAOA,OAAAA,KAAAA,KAAU,QACV,OAAOA,KAAAA,KAAU,YACjB,YAAgBA,IAAAA,KAAAA,IAChB,OAAQA,KAAAA,CAAcgB,UAAe,KAAA,QAAA;AAC9C;AALgBD,MAAAA,CAAAA,mBAAAA,EAAAA,qBAAAA,CAAAA;AAUT,SAASE,oBAAoBjB,KAAc,EAAA;AAChD,EAAIe,IAAAA,mBAAAA,CAAoBf,KAAAA,CAAQ,EAAA;AAC9B,IAAA,OAAOA,KAAMgB,CAAAA,UAAAA;AACf;AACA,EAAOE,OAAAA,MAAAA;AACT;AALgBD,MAAAA,CAAAA,mBAAAA,EAAAA,qBAAAA,CAAAA","file":"chunk-DFBYCVE5.mjs","sourcesContent":["/**\n * Helper utilities for migrating from special array classes to Variables\n * while preserving all special behaviors\n */\n\nimport type { Variable } from '@core/types/variable/VariableTypes';\n\n/**\n * Extracts the value from a Variable while preserving special behaviors\n * through metadata. This allows us to migrate away from special classes\n * while maintaining backward compatibility.\n */\nexport function extractVariableValue(variable: Variable): any {\n let value = variable.value;\n \n // For arrays with custom toString behavior\n const internalMeta = variable.internal as Record<string, unknown> | undefined;\n const customToString =\n (internalMeta?.customToString as (() => string) | undefined);\n if (variable.type === 'array' && customToString) {\n if (Array.isArray(value)) {\n // Preserve the custom toString method\n Object.defineProperty(value, 'toString', {\n value: customToString,\n enumerable: false,\n configurable: true\n });\n }\n }\n \n // For arrays with custom toJSON behavior\n const customToJSON =\n (internalMeta?.customToJSON as (() => unknown) | undefined);\n if (variable.type === 'array' && customToJSON) {\n if (Array.isArray(value)) {\n Object.defineProperty(value, 'toJSON', {\n value: customToJSON,\n enumerable: false,\n configurable: true\n });\n }\n }\n \n // For arrays of LoadContentResult items, add the content getter\n const contentGetter =\n (internalMeta?.contentGetter as (() => string) | undefined);\n if (variable.type === 'array' && contentGetter) {\n if (Array.isArray(value)) {\n Object.defineProperty(value, 'content', {\n get: contentGetter,\n enumerable: false,\n configurable: true\n });\n }\n }\n \n // Tag the value with the original Variable for type recovery\n // This allows type guards to check metadata instead of using instanceof\n if (value !== null && typeof value === 'object') {\n Object.defineProperty(value, '__variable', {\n value: variable,\n enumerable: false,\n configurable: true,\n writable: false\n });\n }\n \n return value;\n}\n\n\n/**\n * Helper to check if a value has Variable metadata attached\n */\nexport function hasVariableMetadata(value: unknown): value is { __variable: Variable } {\n return value !== null && \n typeof value === 'object' && \n '__variable' in value &&\n typeof (value as any).__variable === 'object';\n}\n\n/**\n * Helper to get Variable metadata from a tagged value\n */\nexport function getVariableMetadata(value: unknown): Variable | undefined {\n if (hasVariableMetadata(value)) {\n return value.__variable;\n }\n return undefined;\n}\n\n"]}