{"version":3,"sources":["../interpreter/utils/variable-migration.ts"],"names":["extractVariableValue","variable","value","type","metadata","customToString","Array","isArray","Object","defineProperty","enumerable","configurable","customToJSON","contentGetter","get","writable","createRenamedContentVariable","items","name","source","directive","syntax","hasInterpolation","isMultiLine","createdAt","Date","now","modifiedAt","arrayType","joinSeparator","join","createLoadContentResultVariable","toStringFunc","map","item","content","toJSONFunc","toJSON","contentGetterFunc","hasVariableMetadata","__variable","getVariableMetadata","undefined","isRenamedContentVariable","isLoadContentResultVariable"],"mappings":"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","file":"chunk-WSDJAWOM.mjs","sourcesContent":["/**\n * Helper utilities for migrating from special array classes to Variables\n * while preserving all special behaviors\n */\n\nimport type { Variable, ArrayVariable } from '@core/types/variable/VariableTypes';\nimport type { LoadContentResult } from '@core/types/load-content';\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  if (variable.type === 'array' && variable.metadata?.customToString) {\n    if (Array.isArray(value)) {\n      // Preserve the custom toString method\n      Object.defineProperty(value, 'toString', {\n        value: variable.metadata.customToString,\n        enumerable: false,\n        configurable: true\n      });\n    }\n  }\n  \n  // For arrays with custom toJSON behavior\n  if (variable.type === 'array' && variable.metadata?.customToJSON) {\n    if (Array.isArray(value)) {\n      Object.defineProperty(value, 'toJSON', {\n        value: variable.metadata.customToJSON,\n        enumerable: false,\n        configurable: true\n      });\n    }\n  }\n  \n  // For LoadContentResultArray, add the content getter\n  if (variable.type === 'array' && variable.metadata?.contentGetter) {\n    if (Array.isArray(value)) {\n      Object.defineProperty(value, 'content', {\n        get: variable.metadata.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 * Creates a Variable that preserves RenamedContentArray behavior\n */\nexport function createRenamedContentVariable(\n  items: string[], \n  metadata?: Partial<ArrayVariable['metadata']>\n): ArrayVariable {\n  return {\n    type: 'array',\n    name: metadata?.name || 'renamed-content',\n    value: items,\n    source: {\n      directive: 'var',\n      syntax: 'array',\n      hasInterpolation: false,\n      isMultiLine: false\n    },\n    createdAt: Date.now(),\n    modifiedAt: Date.now(),\n    metadata: {\n      arrayType: 'renamed-content',\n      joinSeparator: '\\n\\n',\n      customToString: function() { return items.join('\\n\\n'); },\n      customToJSON: function() { return [...items]; },\n      ...metadata\n    }\n  };\n}\n\n/**\n * Creates a Variable that preserves LoadContentResultArray behavior\n */\nexport function createLoadContentResultVariable(\n  items: LoadContentResult[], \n  metadata?: Partial<ArrayVariable['metadata']>\n): ArrayVariable {\n  // Define the functions outside to avoid circular references\n  const toStringFunc = function() {\n    return items.map(item => item.content).join('\\n\\n');\n  };\n  \n  const toJSONFunc = function() {\n    return items.map(item => item.toJSON());\n  };\n  \n  const contentGetterFunc = function() {\n    return items.map(item => item.content).join('\\n\\n');\n  };\n  \n  return {\n    type: 'array',\n    name: metadata?.name || 'load-content-result',\n    value: items,\n    source: {\n      directive: 'var',\n      syntax: 'array',\n      hasInterpolation: false,\n      isMultiLine: false\n    },\n    createdAt: Date.now(),\n    modifiedAt: Date.now(),\n    metadata: {\n      arrayType: 'load-content-result',\n      joinSeparator: '\\n\\n',\n      customToString: toStringFunc,\n      customToJSON: toJSONFunc,\n      contentGetter: contentGetterFunc,\n      ...metadata\n    }\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/**\n * Type guard that checks if a Variable is a RenamedContentArray Variable\n */\nexport function isRenamedContentVariable(variable: Variable): boolean {\n  return variable.type === 'array' && \n         variable.metadata?.arrayType === 'renamed-content';\n}\n\n/**\n * Type guard that checks if a Variable is a LoadContentResultArray Variable\n */\nexport function isLoadContentResultVariable(variable: Variable): boolean {\n  return variable.type === 'array' && \n         variable.metadata?.arrayType === 'load-content-result';\n}"]}