@workglow/tasks 0.0.88 → 0.0.90

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.
@@ -5,21 +5,21 @@
5
5
  "/**\n * @license\n * Copyright 2025 Steven Roussey <sroussey@gmail.com>\n * SPDX-License-Identifier: Apache-2.0\n */\n\nimport { TaskRegistry } from \"@workglow/task-graph\";\nimport { FileLoaderTask } from \"./task/FileLoaderTask\";\n\n// Register browser-specific tasks with the TaskRegistry.\n// Centralized registration ensures tasks are available for JSON deserialization\n// and prevents tree-shaking issues.\n[FileLoaderTask].map(TaskRegistry.registerTask);\n\nexport * from \"./common\";\nexport * from \"./task/FileLoaderTask\";\n",
6
6
  "/**\n * @license\n * Copyright 2025 Steven Roussey <sroussey@gmail.com>\n * SPDX-License-Identifier: Apache-2.0\n */\n\nimport {\n CreateWorkflow,\n IExecuteContext,\n JobQueueTaskConfig,\n Task,\n TaskAbortedError,\n Workflow,\n} from \"@workglow/task-graph\";\nimport { DataPortSchema, FromSchema } from \"@workglow/util\";\nimport Papa from \"papaparse\";\nimport { FetchUrlTask, FetchUrlTaskOutput } from \"./FetchUrlTask\";\n\nconst inputSchema = {\n type: \"object\",\n properties: {\n url: {\n type: \"string\",\n title: \"URL\",\n description: \"URL to load document from (http://, https://)\",\n format: \"uri\",\n },\n format: {\n type: \"string\",\n enum: [\"text\", \"markdown\", \"json\", \"csv\", \"pdf\", \"image\", \"html\", \"auto\"],\n title: \"Format\",\n description: \"File format (auto-detected from URL if 'auto')\",\n default: \"auto\",\n },\n },\n required: [\"url\"],\n additionalProperties: false,\n} as const satisfies DataPortSchema;\n\nconst outputSchema = {\n type: \"object\",\n properties: {\n text: {\n type: \"string\",\n title: \"Text\",\n description: \"Text content (for text, markdown, html formats)\",\n },\n json: {\n title: \"JSON\",\n description: \"Parsed JSON object or array\",\n },\n csv: {\n type: \"array\",\n title: \"CSV\",\n description: \"Parsed CSV data as array of objects\",\n },\n image: {\n type: \"string\",\n title: \"Image\",\n description: \"Base64 data URL for image files\",\n format: \"image:data-uri\",\n },\n pdf: {\n type: \"string\",\n title: \"PDF\",\n description: \"Base64 data URL for PDF files\",\n },\n metadata: {\n type: \"object\",\n properties: {\n url: { type: \"string\" },\n format: { type: \"string\" },\n size: { type: \"number\" },\n title: { type: \"string\" },\n mimeType: { type: \"string\" },\n },\n additionalProperties: false,\n title: \"Metadata\",\n description: \"File metadata\",\n },\n },\n required: [\"metadata\"],\n additionalProperties: false,\n} as const satisfies DataPortSchema;\n\nexport type FileLoaderTaskInput = FromSchema<typeof inputSchema>;\nexport type FileLoaderTaskOutput = FromSchema<typeof outputSchema>;\n\n/**\n * Task for loading documents from URLs (including file:// URLs).\n * Works in all environments (browser, Node.js, Bun) by using fetch API.\n * For server-only filesystem path access, see FileLoaderServerTask.\n */\nexport class FileLoaderTask extends Task<\n FileLoaderTaskInput,\n FileLoaderTaskOutput,\n JobQueueTaskConfig\n> {\n public static type = \"FileLoaderTask\";\n public static category = \"Document\";\n public static title = \"File Loader\";\n public static description = \"Load documents from URLs (http://, https://)\";\n public static cacheable = true;\n\n public static inputSchema(): DataPortSchema {\n return inputSchema as DataPortSchema;\n }\n\n public static outputSchema(): DataPortSchema {\n return outputSchema as DataPortSchema;\n }\n\n async execute(\n input: FileLoaderTaskInput,\n context: IExecuteContext\n ): Promise<FileLoaderTaskOutput> {\n const { url, format = \"auto\" } = input;\n\n if (context.signal.aborted) {\n throw new TaskAbortedError(\"Task aborted\");\n }\n await context.updateProgress(0, \"Detecting file format\");\n\n const detectedFormat = this.detectFormat(url, format);\n const responseType = this.detectResponseType(detectedFormat);\n\n if (context.signal.aborted) {\n throw new TaskAbortedError(\"Task aborted\");\n }\n await context.updateProgress(10, `Fetching ${detectedFormat} file from ${url}`);\n\n const fetchTask = context.own(\n new FetchUrlTask({\n url,\n response_type: responseType,\n queue: false, // Run directly\n })\n );\n const response = await fetchTask.run();\n\n if (context.signal.aborted) {\n throw new TaskAbortedError(\"Task aborted\");\n }\n await context.updateProgress(60, \"Parsing file content\");\n\n const title = url.split(\"/\").pop() || url;\n const { text, json, csv, image, pdf, size, mimeType } = await this.parseResponse(\n response,\n url,\n detectedFormat\n );\n\n if (context.signal.aborted) {\n throw new TaskAbortedError(\"Task aborted\");\n }\n await context.updateProgress(100, \"File loaded successfully\");\n\n return {\n text,\n json,\n csv,\n image,\n pdf,\n metadata: {\n url,\n format: detectedFormat,\n size,\n title,\n mimeType,\n },\n };\n }\n\n /**\n * Parse JSON content\n */\n protected parseJsonContent(content: string): unknown {\n return JSON.parse(content);\n }\n\n /**\n * Parse CSV content into array of objects\n */\n protected parseCsvContent(content: string): Array<Record<string, string>> {\n try {\n const result = Papa.parse<Record<string, string>>(content, {\n header: true,\n skipEmptyLines: true,\n transformHeader: (header) => header.trim(),\n });\n return result.data;\n } catch (error) {\n throw new Error(`Failed to parse CSV: ${error}`);\n }\n }\n\n /**\n * Parse the fetch response into typed outputs\n */\n protected async parseResponse(\n response: FetchUrlTaskOutput,\n url: string,\n detectedFormat: \"text\" | \"markdown\" | \"json\" | \"csv\" | \"pdf\" | \"image\" | \"html\"\n ): Promise<{\n readonly text: string | undefined;\n readonly json: unknown | undefined;\n readonly csv: Array<Record<string, string>> | undefined;\n readonly image: string | undefined;\n readonly pdf: string | undefined;\n readonly size: number;\n readonly mimeType: string;\n }> {\n const responseMimeType = response.metadata?.contentType || \"\";\n\n if (detectedFormat === \"json\") {\n if (!response.json) {\n throw new Error(`Failed to load JSON from ${url}`);\n }\n const jsonData = response.json;\n const content = JSON.stringify(jsonData, null, 2);\n return {\n text: undefined,\n json: jsonData,\n csv: undefined,\n image: undefined,\n pdf: undefined,\n size: content.length,\n mimeType: responseMimeType || \"application/json\",\n };\n }\n\n if (detectedFormat === \"csv\") {\n const content = response.text || \"\";\n if (!content) {\n throw new Error(`Failed to load CSV from ${url}`);\n }\n const csvData = this.parseCsvContent(content);\n return {\n text: undefined,\n json: undefined,\n csv: csvData,\n image: undefined,\n pdf: undefined,\n size: content.length,\n mimeType: responseMimeType || \"text/csv\",\n };\n }\n\n if (detectedFormat === \"image\") {\n if (!response.blob) {\n throw new Error(`Failed to load image from ${url}`);\n }\n const blob = response.blob as Blob;\n const mimeType =\n responseMimeType ||\n (blob.type && blob.type !== \"\" ? blob.type : this.getImageMimeType(url));\n const imageData = await this.blobToBase64DataURL(blob, mimeType);\n return {\n text: undefined,\n json: undefined,\n csv: undefined,\n image: imageData,\n pdf: undefined,\n size: blob.size,\n mimeType,\n };\n }\n\n if (detectedFormat === \"pdf\") {\n if (!response.blob) {\n throw new Error(`Failed to load PDF from ${url}`);\n }\n const blob = response.blob as Blob;\n const mimeType = responseMimeType || \"application/pdf\";\n const pdfData = await this.blobToBase64DataURL(blob, mimeType);\n return {\n text: undefined,\n json: undefined,\n csv: undefined,\n image: undefined,\n pdf: pdfData,\n size: blob.size,\n mimeType,\n };\n }\n\n // text, markdown, or html\n const content = response.text || \"\";\n if (!content) {\n throw new Error(`Failed to load content from ${url}`);\n }\n const mimeType =\n responseMimeType ||\n (detectedFormat === \"markdown\"\n ? \"text/markdown\"\n : detectedFormat === \"html\"\n ? \"text/html\"\n : \"text/plain\");\n return {\n text: content,\n json: undefined,\n csv: undefined,\n image: undefined,\n pdf: undefined,\n size: content.length,\n mimeType,\n };\n }\n\n /**\n * Detect the appropriate response type for fetching based on the detected format\n * @param detectedFormat - The detected format\n * @returns The appropriate response type\n */\n protected detectResponseType(detectedFormat: string): \"text\" | \"json\" | \"blob\" | \"arraybuffer\" {\n // Determine appropriate response type for fetching\n let responseType: \"text\" | \"json\" | \"blob\" | \"arraybuffer\" = \"text\";\n if (detectedFormat === \"json\") {\n responseType = \"json\";\n } else if (detectedFormat === \"image\" || detectedFormat === \"pdf\") {\n responseType = \"blob\";\n } else if (\n detectedFormat === \"csv\" ||\n detectedFormat === \"text\" ||\n detectedFormat === \"markdown\" ||\n detectedFormat === \"html\"\n ) {\n responseType = \"text\";\n }\n return responseType;\n }\n\n /**\n *\n * @param url - The URL to detect the format from\n * @param format - The format (assuming \"auto\" if not provided)\n * @returns\n */\n protected detectFormat(\n url: string,\n format: \"text\" | \"markdown\" | \"json\" | \"csv\" | \"pdf\" | \"image\" | \"html\" | \"auto\"\n ): \"text\" | \"markdown\" | \"json\" | \"csv\" | \"pdf\" | \"image\" | \"html\" {\n if (format === \"auto\") {\n const urlLower = url.toLowerCase();\n if (urlLower.endsWith(\".md\") || urlLower.endsWith(\".markdown\")) {\n return \"markdown\";\n } else if (urlLower.endsWith(\".json\")) {\n return \"json\";\n } else if (urlLower.endsWith(\".csv\")) {\n return \"csv\";\n } else if (urlLower.endsWith(\".pdf\")) {\n return \"pdf\";\n } else if (urlLower.match(/\\.(jpg|jpeg|png|gif|bmp|webp|svg|ico)$/)) {\n return \"image\";\n } else if (urlLower.endsWith(\".html\") || urlLower.endsWith(\".htm\")) {\n return \"html\";\n } else {\n return \"text\";\n }\n }\n return format;\n }\n\n /**\n * Get image MIME type based on URL extension\n */\n protected getImageMimeType(url: string): string {\n const urlLower = url.toLowerCase();\n if (urlLower.endsWith(\".png\")) return \"image/png\";\n if (urlLower.endsWith(\".jpg\") || urlLower.endsWith(\".jpeg\")) return \"image/jpeg\";\n if (urlLower.endsWith(\".gif\")) return \"image/gif\";\n if (urlLower.endsWith(\".webp\")) return \"image/webp\";\n if (urlLower.endsWith(\".bmp\")) return \"image/bmp\";\n if (urlLower.endsWith(\".svg\")) return \"image/svg+xml\";\n if (urlLower.endsWith(\".ico\")) return \"image/x-icon\";\n return \"image/jpeg\"; // default\n }\n\n /**\n * Convert Blob to base64 data URL\n */\n protected async blobToBase64DataURL(blob: Blob, mimeType: string): Promise<string> {\n // For Node.js/Bun environments\n if (typeof Buffer !== \"undefined\") {\n const arrayBuffer = await blob.arrayBuffer();\n const buffer = Buffer.from(arrayBuffer);\n return `data:${mimeType};base64,${buffer.toString(\"base64\")}`;\n }\n\n // For browser environments\n return new Promise<string>((resolve, reject) => {\n const reader = new FileReader();\n reader.onloadend = () => {\n // If blob had no type, replace empty type with provided mimeType\n const result = reader.result as string;\n if (result.startsWith(\"data:;base64,\")) {\n resolve(`data:${mimeType};base64,${result.substring(13)}`);\n } else {\n resolve(result);\n }\n };\n reader.onerror = reject;\n reader.readAsDataURL(blob);\n });\n }\n}\n\nexport const fileLoader = (input: FileLoaderTaskInput, config?: JobQueueTaskConfig) => {\n return new FileLoaderTask({}, config).run(input);\n};\n\ndeclare module \"@workglow/task-graph\" {\n interface Workflow {\n fileLoader: CreateWorkflow<FileLoaderTaskInput, FileLoaderTaskOutput, JobQueueTaskConfig>;\n }\n}\n\nWorkflow.prototype.fileLoader = CreateWorkflow(FileLoaderTask);\n",
7
7
  "/**\n * @license\n * Copyright 2025 Steven Roussey <sroussey@gmail.com>\n * SPDX-License-Identifier: Apache-2.0\n */\n\nimport {\n AbortSignalJobError,\n IJobExecuteContext,\n Job,\n PermanentJobError,\n RetryableJobError,\n} from \"@workglow/job-queue\";\nimport {\n CreateWorkflow,\n JobQueueTask,\n JobQueueTaskConfig,\n TaskConfigurationError,\n TaskInvalidInputError,\n Workflow,\n} from \"@workglow/task-graph\";\nimport { DataPortSchema, FromSchema } from \"@workglow/util\";\n\nconst inputSchema = {\n type: \"object\",\n properties: {\n url: {\n type: \"string\",\n title: \"URL\",\n description: \"The URL to fetch from\",\n format: \"uri\",\n },\n method: {\n enum: [\"GET\", \"POST\", \"PUT\", \"DELETE\", \"PATCH\"],\n title: \"Method\",\n description: \"The HTTP method to use\",\n default: \"GET\",\n },\n headers: {\n type: \"object\",\n additionalProperties: {\n type: \"string\",\n },\n title: \"Headers\",\n description: \"The headers to send with the request\",\n },\n body: {\n type: \"string\",\n title: \"Body\",\n description: \"The body of the request\",\n },\n response_type: {\n anyOf: [{ type: \"null\" }, { enum: [\"json\", \"text\", \"blob\", \"arraybuffer\"] }],\n title: \"Response Type\",\n description:\n \"The forced type of response to return. If null, the response type is inferred from the Content-Type header.\",\n default: null,\n },\n timeout: {\n type: \"number\",\n title: \"Timeout\",\n description: \"Request timeout in milliseconds\",\n },\n queue: {\n oneOf: [{ type: \"boolean\" }, { type: \"string\" }],\n description: \"Queue handling: false=run inline, true=use default, string=explicit queue name\",\n default: true,\n \"x-ui-hidden\": true,\n },\n },\n required: [\"url\"],\n additionalProperties: false,\n} as const satisfies DataPortSchema;\n\nconst outputSchema = {\n type: \"object\",\n properties: {\n json: {\n title: \"JSON\",\n description: \"The JSON response\",\n },\n text: {\n type: \"string\",\n title: \"Text\",\n description: \"The text response\",\n },\n blob: {\n title: \"Blob\",\n description: \"The blob response\",\n },\n arraybuffer: {\n title: \"ArrayBuffer\",\n description: \"The arraybuffer response\",\n },\n metadata: {\n type: \"object\",\n properties: {\n contentType: { type: \"string\" },\n headers: { type: \"object\", additionalProperties: { type: \"string\" } },\n },\n additionalProperties: false,\n title: \"Response Metadata\",\n description: \"HTTP response metadata including content type and headers\",\n },\n },\n additionalProperties: false,\n} as const satisfies DataPortSchema;\n\nexport type FetchUrlTaskInput = FromSchema<typeof inputSchema>;\nexport type FetchUrlTaskOutput = FromSchema<typeof outputSchema>;\n\nexport type FetchUrlTaskConfig = JobQueueTaskConfig;\n\nasync function fetchWithProgress(\n url: string,\n options: RequestInit = {},\n onProgress?: (progress: number) => Promise<void>\n): Promise<Response> {\n if (!options.signal) {\n throw new TaskConfigurationError(\"An AbortSignal must be provided.\");\n }\n\n const response = await globalThis.fetch(url, options);\n if (!response.body) {\n throw new Error(\"ReadableStream not supported in this environment.\");\n }\n\n const contentLength = response.headers.get(\"Content-Length\");\n const totalBytes = contentLength ? parseInt(contentLength, 10) : 0;\n let receivedBytes = 0;\n const reader = response.body.getReader();\n\n // Create a new ReadableStream that supports progress updates\n const stream = new ReadableStream({\n start(controller) {\n async function push() {\n try {\n while (true) {\n // Check if the request was aborted\n if (options.signal?.aborted) {\n controller.error(new AbortSignalJobError(\"Fetch aborted\"));\n reader.cancel();\n return;\n }\n\n const { done, value } = await reader.read();\n if (done) {\n controller.close();\n break;\n }\n controller.enqueue(value);\n receivedBytes += value.length;\n if (onProgress && totalBytes) {\n await onProgress((receivedBytes / totalBytes) * 100);\n }\n }\n } catch (error) {\n controller.error(error);\n }\n }\n push();\n },\n cancel() {\n reader.cancel();\n },\n });\n\n return new Response(stream, {\n headers: response.headers,\n status: response.status,\n statusText: response.statusText,\n });\n}\n\n/**\n * Extends the base Job class to provide custom execution functionality\n * through a provided function.\n */\nexport class FetchUrlJob<\n Input extends FetchUrlTaskInput = FetchUrlTaskInput,\n Output = FetchUrlTaskOutput,\n> extends Job<Input, Output> {\n constructor(config: JobQueueTaskConfig & { input: Input } = { input: {} as Input }) {\n super(config);\n }\n static readonly type: string = \"FetchUrlJob\";\n /**\n * Executes the job using the provided function.\n */\n async execute(input: Input, context: IJobExecuteContext): Promise<Output> {\n const response = await fetchWithProgress(\n input.url!,\n {\n method: input.method,\n headers: input.headers,\n body: input.body,\n signal: context.signal,\n },\n async (progress: number) => await context.updateProgress(progress)\n );\n\n if (response.ok) {\n // Extract metadata from response\n const contentType = response.headers.get(\"content-type\") ?? \"\";\n const headers: Record<string, string> = {};\n response.headers.forEach((value, key) => {\n headers[key] = value;\n });\n\n const metadata = {\n contentType,\n headers,\n };\n\n // Infer response type from response headers if not specified\n let responseType = input.response_type;\n if (!responseType) {\n if (contentType.includes(\"application/json\")) {\n responseType = \"json\";\n } else if (contentType.includes(\"text/\")) {\n responseType = \"text\";\n } else if (contentType.includes(\"application/octet-stream\")) {\n responseType = \"arraybuffer\";\n } else if (\n contentType.includes(\"application/pdf\") ||\n contentType.includes(\"image/\") ||\n contentType.includes(\"application/zip\")\n ) {\n responseType = \"blob\";\n } else {\n responseType = \"json\"; // Default fallback\n }\n input.response_type = responseType;\n }\n if (responseType === \"json\") {\n return { json: await response.json(), metadata } as Output;\n } else if (responseType === \"text\") {\n return { text: await response.text(), metadata } as Output;\n } else if (responseType === \"blob\") {\n return { blob: await response.blob(), metadata } as Output;\n } else if (responseType === \"arraybuffer\") {\n return { arraybuffer: await response.arrayBuffer(), metadata } as Output;\n }\n throw new TaskInvalidInputError(`Invalid response type: ${responseType}`);\n } else {\n if (\n response.status === 429 ||\n response.status === 503 ||\n response.headers.get(\"Retry-After\")\n ) {\n let retryDate: Date | undefined;\n const retryAfterStr = response.headers.get(\"Retry-After\");\n if (retryAfterStr) {\n // Try parsing as HTTP date first\n const parsedDate = new Date(retryAfterStr);\n if (!isNaN(parsedDate.getTime()) && parsedDate > new Date()) {\n // Only use the date if it's in the future\n retryDate = parsedDate;\n } else {\n // If not a valid future date, treat as seconds\n const retryAfterSeconds = parseInt(retryAfterStr) * 1000;\n if (!isNaN(retryAfterSeconds)) {\n retryDate = new Date(Date.now() + retryAfterSeconds);\n }\n }\n }\n\n throw new RetryableJobError(\n `Failed to fetch ${input.url}: ${response.status} ${response.statusText}`,\n retryDate\n );\n } else {\n throw new PermanentJobError(\n `Failed to fetch ${input.url}: ${response.status} ${response.statusText}`\n );\n }\n }\n }\n}\n\n/**\n * FetchUrlTask provides a task for fetching data from a URL.\n */\nexport class FetchUrlTask<\n Input extends FetchUrlTaskInput = FetchUrlTaskInput,\n Output extends FetchUrlTaskOutput = FetchUrlTaskOutput,\n Config extends FetchUrlTaskConfig = FetchUrlTaskConfig,\n> extends JobQueueTask<Input, Output, Config> {\n public static type = \"FetchUrlTask\";\n public static category = \"Input\";\n public static title = \"Fetch\";\n public static description =\n \"Fetches data from a URL with progress tracking and automatic retry handling\";\n public static hasDynamicSchemas: boolean = true;\n\n public static inputSchema() {\n return inputSchema;\n }\n\n public static outputSchema() {\n return outputSchema;\n }\n\n /**\n * Override outputSchema to compute it dynamically based on the current response_type value.\n * If response_type is null, all output types are available.\n * If response_type is a specific value (e.g., \"json\"), only that output type is available.\n */\n public override outputSchema(): DataPortSchema {\n // Get the current response_type value from runInputData (if set) or defaults\n // runInputData takes precedence as it contains the most recent input values\n const responseType = this.runInputData?.response_type ?? this.defaults?.response_type ?? null;\n\n // If response_type is null or undefined, return all output types (static schema)\n if (responseType === null || responseType === undefined) {\n return (this.constructor as typeof FetchUrlTask).outputSchema();\n }\n\n // If response_type is a specific value, return only that output type\n const staticSchema = (this.constructor as typeof FetchUrlTask).outputSchema();\n if (typeof staticSchema === \"boolean\") {\n return staticSchema;\n }\n\n if (!staticSchema.properties) {\n return staticSchema;\n }\n\n // Build properties object with only the selected response type\n const properties: Record<string, any> = {};\n if (responseType === \"json\" && staticSchema.properties.json) {\n properties.json = staticSchema.properties.json;\n } else if (responseType === \"text\" && staticSchema.properties.text) {\n properties.text = staticSchema.properties.text;\n } else if (responseType === \"blob\" && staticSchema.properties.blob) {\n properties.blob = staticSchema.properties.blob;\n } else if (responseType === \"arraybuffer\" && staticSchema.properties.arraybuffer) {\n properties.arraybuffer = staticSchema.properties.arraybuffer;\n }\n\n // Always include metadata\n if (staticSchema.properties.metadata) {\n properties.metadata = staticSchema.properties.metadata;\n }\n\n // If no properties were added (shouldn't happen with valid responseType), return static schema\n if (Object.keys(properties).length === 0) {\n return staticSchema;\n }\n\n return {\n type: \"object\",\n properties,\n additionalProperties: false,\n } as const satisfies DataPortSchema;\n }\n\n constructor(input: Partial<Input> = {} as Input, config: Config = {} as Config) {\n config.queue = input?.queue ?? config.queue;\n if (config.queue === undefined) {\n config.queue = false; // change default to false to run directly\n }\n super(input, config);\n this.jobClass = FetchUrlJob;\n }\n\n /**\n * Override setInput to detect when response_type changes and emit schemaChange event.\n * This ensures that consumers of the task are notified when the output schema changes.\n */\n public override setInput(input: Record<string, any>): void {\n // Only check for changes if response_type is being set\n if (!(\"response_type\" in input)) {\n super.setInput(input);\n return;\n }\n\n // Get the current response_type before updating\n // Check runInputData first (most recent), then defaults, then null\n const getCurrentResponseType = () => {\n return this.runInputData?.response_type ?? this.defaults?.response_type ?? null;\n };\n\n const previousResponseType = getCurrentResponseType();\n\n // Call parent to update the input\n super.setInput(input);\n\n // Get the new response_type after updating (from runInputData, which is what setInput updates)\n const newResponseType = getCurrentResponseType();\n\n // If response_type changed, emit schemaChange event\n // Compare using strict equality (handles null/undefined correctly)\n if (previousResponseType !== newResponseType) {\n this.emitSchemaChange();\n }\n }\n\n protected override async getDefaultQueueName(input: Input): Promise<string | undefined> {\n if (!input.url) {\n return `fetch:${this.type}`;\n }\n try {\n const hostname = new URL(input.url).hostname.toLowerCase();\n const parts = hostname.split(\".\").filter(Boolean);\n if (parts.length === 0) {\n return `fetch:${this.type}`;\n }\n const domain = parts.length <= 2 ? parts.join(\".\") : parts.slice(-2).join(\".\");\n return `fetch:${domain}`;\n } catch {\n return `fetch:${this.type}`;\n }\n }\n}\n\nexport const fetchUrl = async (\n input: FetchUrlTaskInput,\n config: FetchUrlTaskConfig = {}\n): Promise<FetchUrlTaskOutput> => {\n const result = await new FetchUrlTask({}, config).run(input);\n return result as FetchUrlTaskOutput;\n};\n\ndeclare module \"@workglow/task-graph\" {\n interface Workflow {\n fetch: CreateWorkflow<FetchUrlTaskInput, FetchUrlTaskOutput, FetchUrlTaskConfig>;\n }\n}\n\nWorkflow.prototype.fetch = CreateWorkflow(FetchUrlTask);\n",
8
- "/**\n * @license\n * Copyright 2025 Steven Roussey <sroussey@gmail.com>\n * SPDX-License-Identifier: Apache-2.0\n */\n\nimport {\n DataPortSchemaNonBoolean,\n TypedArray,\n uuid4,\n VectorFromSchema,\n type DataPortSchema,\n} from \"@workglow/util\";\n\nimport {\n GraphAsTask,\n GraphAsTaskRunner,\n GraphResultArray,\n JsonTaskItem,\n PROPERTY_ARRAY,\n TaskConfig,\n TaskGraph,\n TaskGraphItemJson,\n TaskInput,\n TaskOutput,\n} from \"@workglow/task-graph\";\n\nexport const TypeReplicateArray = <const T extends DataPortSchemaNonBoolean>(\n type: T,\n annotations: Record<string, unknown> = {}\n) =>\n ({\n oneOf: [type, { type: \"array\", items: type }],\n title: type.title,\n description: type.description,\n ...(type.format ? { format: type.format } : {}),\n ...annotations,\n \"x-replicate\": true,\n }) as const;\n\n/**\n * Removes array types from a union, leaving only non-array types.\n * For example, `string | string[]` becomes `string`.\n * Used to extract the single-value type from schemas with x-replicate annotation.\n * Uses distributive conditional types to filter out arrays from unions.\n * Checks for both array types and types with numeric index signatures (FromSchema array output).\n * Preserves Vector types like Float64Array which also have numeric indices.\n */\ntype UnwrapArrayUnion<T> = T extends readonly any[]\n ? T extends TypedArray\n ? T\n : never\n : number extends keyof T\n ? \"push\" extends keyof T\n ? never\n : T\n : T;\n\n/**\n * Transforms a schema by removing array variants from properties marked with x-replicate.\n * Properties with x-replicate use {@link TypeReplicateArray} which creates a union of\n * `T | T[]`, and this type extracts just `T`.\n */\nexport type DeReplicateFromSchema<S extends { properties: Record<string, any> }> = {\n [K in keyof S[\"properties\"]]: S[\"properties\"][K] extends { \"x-replicate\": true }\n ? UnwrapArrayUnion<VectorFromSchema<S[\"properties\"][K]>>\n : VectorFromSchema<S[\"properties\"][K]>;\n};\n\n/**\n * ArrayTask is a compound task that either:\n * 1. Executes directly if all inputs are non-arrays\n * 2. Creates a subGraph with one task instance per array element if any input is an array\n * 3. Creates all combinations if multiple inputs are arrays\n */\nexport class ArrayTask<\n Input extends TaskInput = TaskInput,\n Output extends TaskOutput = TaskOutput,\n Config extends TaskConfig = TaskConfig,\n> extends GraphAsTask<Input, Output, Config> {\n /**\n * The type identifier for this task class\n */\n public static type = \"ArrayTask\";\n\n /**\n * Make this task have results that look like an array\n */\n public static readonly compoundMerge = PROPERTY_ARRAY;\n\n /**\n * Gets input schema for this task from the static inputSchema property, which is user defined (reverts GraphAsTask's override)\n */\n public inputSchema(): DataPortSchema {\n return (this.constructor as typeof ArrayTask).inputSchema();\n }\n\n /**\n * Gets output schema for this task from the static outputSchema property, which is user defined (reverts GraphAsTask's override)\n */\n public outputSchema(): DataPortSchema {\n return (this.constructor as typeof ArrayTask).outputSchema();\n }\n\n /**\n * Merges the reactive results into the output\n * @param input The input to the task\n * @param output The output of the task\n * @param reactiveResults The reactive results from the subtasks\n * @returns The merged output\n */\n public executeMerge(_input: Input, output: Output): Output {\n return output;\n }\n\n /**\n * Regenerates the task subgraph based on input arrays\n */\n public regenerateGraph(): void {\n // Check if any inputs are arrays\n const arrayInputs = new Map<string, Array<Input[keyof Input]>>();\n let hasArrayInputs = false;\n const inputSchema = this.inputSchema();\n if (typeof inputSchema !== \"boolean\") {\n const keys = Object.keys(inputSchema.properties || {});\n for (const inputId of keys) {\n const inputValue = this.runInputData[inputId];\n const inputDef = inputSchema.properties?.[inputId];\n if (\n typeof inputDef === \"object\" &&\n inputDef !== null &&\n \"x-replicate\" in inputDef &&\n (inputDef as any)[\"x-replicate\"] === true &&\n Array.isArray(inputValue) &&\n inputValue.length > 1\n ) {\n arrayInputs.set(inputId, inputValue);\n hasArrayInputs = true;\n }\n }\n }\n\n // Clear the existing subgraph\n this.subGraph = new TaskGraph();\n\n // If no array inputs, no need to populate the subgraph\n if (!hasArrayInputs) {\n super.regenerateGraph();\n return;\n }\n\n // Create all combinations of inputs\n const inputIds = Array.from(arrayInputs.keys());\n const inputObject = Object.fromEntries(arrayInputs);\n const combinations = this.generateCombinations(inputObject as Input, inputIds);\n\n // Create task instances for each combination\n const tasks = combinations.map((combination) => {\n // Create a new instance of this same class\n const { id, name, ...rest } = this.config;\n const task = new (this.constructor as any)(\n { ...this.defaults, ...this.runInputData, ...combination },\n { ...rest, id: `${id}_${uuid4()}` }\n );\n return task;\n });\n\n // Add tasks to subgraph\n this.subGraph.addTasks(tasks);\n\n // Emit regenerate event\n super.regenerateGraph();\n }\n\n /**\n * Generates all possible combinations of array inputs\n * @param input Input object containing arrays\n * @param inputMakeArray Keys of properties to generate combinations for\n * @returns Array of input objects with all possible combinations\n */\n protected generateCombinations(input: Input, inputMakeArray: Array<keyof Input>): Input[] {\n // Prepare arrays for combination generation\n const arraysToCombine: Array<Array<Input[keyof Input]>> = inputMakeArray.map((key) =>\n Array.isArray(input[key]) ? (input[key] as Array<Input[keyof Input]>) : []\n );\n\n const indices = new Array(arraysToCombine.length).fill(0);\n const combinations: number[][] = [];\n let done = false;\n\n while (!done) {\n combinations.push([...indices]); // Add current combination of indices\n\n // Move to the next combination of indices\n for (let i = indices.length - 1; i >= 0; i--) {\n if (++indices[i] < arraysToCombine[i].length) break; // Increment current index if possible\n if (i === 0)\n done = true; // All combinations have been generated\n else indices[i] = 0; // Reset current index and move to the next position\n }\n }\n\n // Build objects based on the combinations\n const combos = combinations.map((combination) => {\n const result = { ...input }; // Start with a shallow copy of the input\n\n // Set values from the arrays based on the current combination\n combination.forEach((valueIndex, arrayIndex) => {\n const key = inputMakeArray[arrayIndex];\n if (Array.isArray(input[key]))\n result[key] = (input[key] as Array<Input[keyof Input]>)[valueIndex];\n });\n\n return result;\n });\n\n return combos;\n }\n\n toJSON(): TaskGraphItemJson {\n const { subgraph, ...result } = super.toJSON();\n return result;\n }\n\n toDependencyJSON(): JsonTaskItem {\n const { subtasks, ...result } = super.toDependencyJSON();\n return result;\n }\n\n /**\n * Create a custom runner for ArrayTask that overrides input passing behavior\n * as inputs were already distributed to child tasks during graph regeneration\n */\n\n declare _runner: ArrayTaskRunner<Input, Output, Config>;\n\n /**\n * Task runner for handling the task execution\n */\n override get runner(): ArrayTaskRunner<Input, Output, Config> {\n if (!this._runner) {\n this._runner = new ArrayTaskRunner<Input, Output, Config>(this);\n }\n return this._runner;\n }\n}\n\n/**\n * Custom runner for ArrayTask that passes empty input to child tasks.\n * ArrayTask child tasks get their input values from their defaults (set during task creation),\n * not from the parent task's input.\n */\nclass ArrayTaskRunner<\n Input extends TaskInput = TaskInput,\n Output extends TaskOutput = TaskOutput,\n Config extends TaskConfig = TaskConfig,\n> extends GraphAsTaskRunner<Input, Output, Config> {\n declare task: ArrayTask<Input, Output, Config>;\n\n /**\n * Override to pass empty input to subgraph.\n * Child tasks will use their defaults instead of parent input.\n */\n protected async executeTaskChildren(_input: Input): Promise<GraphResultArray<Output>> {\n return super.executeTaskChildren({} as Input);\n }\n\n public async executeTaskReactive(input: Input, output: Output): Promise<Output> {\n await super.executeTaskReactive(input, output);\n if (this.task.hasChildren()) {\n this.task.runOutputData = this.task.executeMerge(input, this.task.runOutputData as Output);\n }\n return this.task.runOutputData as Output;\n }\n public async executeTask(input: Input): Promise<Output> {\n await super.executeTask(input);\n if (this.task.hasChildren()) {\n this.task.runOutputData = this.task.executeMerge(input, this.task.runOutputData as Output);\n }\n return this.task.runOutputData as Output;\n }\n}\n",
8
+ "/**\n * @license\n * Copyright 2025 Steven Roussey <sroussey@gmail.com>\n * SPDX-License-Identifier: Apache-2.0\n */\n\nimport {\n DataPortSchemaNonBoolean,\n TypedArray,\n uuid4,\n VectorFromSchema,\n type DataPortSchema,\n} from \"@workglow/util\";\n\nimport {\n GraphAsTask,\n GraphAsTaskRunner,\n GraphResultArray,\n JsonTaskItem,\n PROPERTY_ARRAY,\n TaskConfig,\n TaskGraph,\n TaskGraphItemJson,\n TaskInput,\n TaskOutput,\n} from \"@workglow/task-graph\";\n\nexport const TypeReplicateArray = <const T extends DataPortSchemaNonBoolean>(\n type: T,\n annotations: Record<string, unknown> = {}\n) =>\n ({\n oneOf: [type, { type: \"array\", items: type }],\n title: type.title,\n description: type.description,\n ...(type.format ? { format: type.format } : {}),\n ...annotations,\n \"x-replicate\": true,\n }) as const;\n\n/**\n * Removes array types from a union, leaving only non-array types.\n * For example, `string | string[]` becomes `string`.\n * Used to extract the single-value type from schemas with x-replicate annotation.\n * Uses distributive conditional types to filter out arrays from unions.\n * Checks for both array types and types with numeric index signatures (FromSchema array output).\n * Preserves Vector types like Float64Array which also have numeric indices.\n */\ntype UnwrapArrayUnion<T> = T extends readonly any[]\n ? T extends TypedArray\n ? T\n : never\n : number extends keyof T\n ? \"push\" extends keyof T\n ? never\n : T\n : T;\n\n/**\n * Transforms a schema by removing array variants from properties marked with x-replicate.\n * Properties with x-replicate use {@link TypeReplicateArray} which creates a union of\n * `T | T[]`, and this type extracts just `T`.\n */\nexport type DeReplicateFromSchema<S extends { properties: Record<string, any> }> = {\n [K in keyof S[\"properties\"]]: S[\"properties\"][K] extends { \"x-replicate\": true }\n ? UnwrapArrayUnion<VectorFromSchema<S[\"properties\"][K]>>\n : VectorFromSchema<S[\"properties\"][K]>;\n};\n\n/**\n * ArrayTask is a compound task that either:\n * 1. Executes directly if all inputs are non-arrays\n * 2. Creates a subGraph with one task instance per array element if any input is an array\n * 3. Creates all combinations if multiple inputs are arrays\n */\nexport abstract class ArrayTask<\n Input extends TaskInput = TaskInput,\n Output extends TaskOutput = TaskOutput,\n Config extends TaskConfig = TaskConfig,\n> extends GraphAsTask<Input, Output, Config> {\n /**\n * The type identifier for this task class\n */\n public static type = \"ArrayTask\";\n\n /**\n * Make this task have results that look like an array\n */\n public static readonly compoundMerge = PROPERTY_ARRAY;\n\n /**\n * Gets input schema for this task from the static inputSchema property, which is user defined (reverts GraphAsTask's override)\n */\n public inputSchema(): DataPortSchema {\n return (this.constructor as typeof ArrayTask).inputSchema();\n }\n\n /**\n * Gets output schema for this task from the static outputSchema property, which is user defined (reverts GraphAsTask's override)\n */\n public outputSchema(): DataPortSchema {\n return (this.constructor as typeof ArrayTask).outputSchema();\n }\n\n /**\n * Merges the reactive results into the output\n * @param input The input to the task\n * @param output The output of the task\n * @param reactiveResults The reactive results from the subtasks\n * @returns The merged output\n */\n public executeMerge(_input: Input, output: Output): Output {\n return output;\n }\n\n /**\n * Regenerates the task subgraph based on input arrays\n */\n public regenerateGraph(): void {\n // Check if any inputs are arrays\n const arrayInputs = new Map<string, Array<Input[keyof Input]>>();\n let hasArrayInputs = false;\n const inputSchema = this.inputSchema();\n if (typeof inputSchema !== \"boolean\") {\n const keys = Object.keys(inputSchema.properties || {});\n for (const inputId of keys) {\n const inputValue = this.runInputData[inputId];\n const inputDef = inputSchema.properties?.[inputId];\n if (\n typeof inputDef === \"object\" &&\n inputDef !== null &&\n \"x-replicate\" in inputDef &&\n (inputDef as any)[\"x-replicate\"] === true &&\n Array.isArray(inputValue) &&\n inputValue.length > 1\n ) {\n arrayInputs.set(inputId, inputValue);\n hasArrayInputs = true;\n }\n }\n }\n\n // Clear the existing subgraph\n this.subGraph = new TaskGraph();\n\n // If no array inputs, no need to populate the subgraph\n if (!hasArrayInputs) {\n super.regenerateGraph();\n return;\n }\n\n // Create all combinations of inputs\n const inputIds = Array.from(arrayInputs.keys());\n const inputObject = Object.fromEntries(arrayInputs);\n const combinations = this.generateCombinations(inputObject as Input, inputIds);\n\n // Create task instances for each combination\n const tasks = combinations.map((combination) => {\n // Create a new instance of this same class\n const { id, name, ...rest } = this.config;\n const task = new (this.constructor as any)(\n { ...this.defaults, ...this.runInputData, ...combination },\n { ...rest, id: `${id}_${uuid4()}` }\n );\n return task;\n });\n\n // Add tasks to subgraph\n this.subGraph.addTasks(tasks);\n\n // Emit regenerate event\n super.regenerateGraph();\n }\n\n /**\n * Generates all possible combinations of array inputs\n * @param input Input object containing arrays\n * @param inputMakeArray Keys of properties to generate combinations for\n * @returns Array of input objects with all possible combinations\n */\n protected generateCombinations(input: Input, inputMakeArray: Array<keyof Input>): Input[] {\n // Prepare arrays for combination generation\n const arraysToCombine: Array<Array<Input[keyof Input]>> = inputMakeArray.map((key) =>\n Array.isArray(input[key]) ? (input[key] as Array<Input[keyof Input]>) : []\n );\n\n const indices = new Array(arraysToCombine.length).fill(0);\n const combinations: number[][] = [];\n let done = false;\n\n while (!done) {\n combinations.push([...indices]); // Add current combination of indices\n\n // Move to the next combination of indices\n for (let i = indices.length - 1; i >= 0; i--) {\n if (++indices[i] < arraysToCombine[i].length) break; // Increment current index if possible\n if (i === 0)\n done = true; // All combinations have been generated\n else indices[i] = 0; // Reset current index and move to the next position\n }\n }\n\n // Build objects based on the combinations\n const combos = combinations.map((combination) => {\n const result = { ...input }; // Start with a shallow copy of the input\n\n // Set values from the arrays based on the current combination\n combination.forEach((valueIndex, arrayIndex) => {\n const key = inputMakeArray[arrayIndex];\n if (Array.isArray(input[key]))\n result[key] = (input[key] as Array<Input[keyof Input]>)[valueIndex];\n });\n\n return result;\n });\n\n return combos;\n }\n\n toJSON(): TaskGraphItemJson {\n const { subgraph, ...result } = super.toJSON();\n return result;\n }\n\n toDependencyJSON(): JsonTaskItem {\n const { subtasks, ...result } = super.toDependencyJSON();\n return result;\n }\n\n /**\n * Create a custom runner for ArrayTask that overrides input passing behavior\n * as inputs were already distributed to child tasks during graph regeneration\n */\n\n declare _runner: ArrayTaskRunner<Input, Output, Config>;\n\n /**\n * Task runner for handling the task execution\n */\n override get runner(): ArrayTaskRunner<Input, Output, Config> {\n if (!this._runner) {\n this._runner = new ArrayTaskRunner<Input, Output, Config>(this);\n }\n return this._runner;\n }\n}\n\n/**\n * Custom runner for ArrayTask that passes empty input to child tasks.\n * ArrayTask child tasks get their input values from their defaults (set during task creation),\n * not from the parent task's input.\n */\nclass ArrayTaskRunner<\n Input extends TaskInput = TaskInput,\n Output extends TaskOutput = TaskOutput,\n Config extends TaskConfig = TaskConfig,\n> extends GraphAsTaskRunner<Input, Output, Config> {\n declare task: ArrayTask<Input, Output, Config>;\n\n /**\n * Override to pass empty input to subgraph.\n * Child tasks will use their defaults instead of parent input.\n */\n protected async executeTaskChildren(_input: Input): Promise<GraphResultArray<Output>> {\n return super.executeTaskChildren({} as Input);\n }\n\n /**\n * Override to pass empty input to subgraph for reactive execution.\n * Child tasks will use their defaults instead of parent input.\n */\n protected async executeTaskChildrenReactive(): Promise<GraphResultArray<Output>> {\n // Don't pass parent input - child tasks have their input set via defaults during creation\n return this.task.subGraph!.runReactive<Output>({});\n }\n\n public async executeTaskReactive(input: Input, output: Output): Promise<Output> {\n await super.executeTaskReactive(input, output);\n if (this.task.hasChildren()) {\n this.task.runOutputData = this.task.executeMerge(input, this.task.runOutputData as Output);\n }\n return this.task.runOutputData as Output;\n }\n public async executeTask(input: Input): Promise<Output> {\n await super.executeTask(input);\n if (this.task.hasChildren()) {\n this.task.runOutputData = this.task.executeMerge(input, this.task.runOutputData as Output);\n }\n return this.task.runOutputData as Output;\n }\n}\n",
9
9
  "/**\n * @license\n * Copyright 2025 Steven Roussey <sroussey@gmail.com>\n * SPDX-License-Identifier: Apache-2.0\n */\n\nimport { CreateWorkflow, Task, TaskConfig, Workflow } from \"@workglow/task-graph\";\nimport { DataPortSchema, FromSchema } from \"@workglow/util\";\n\nconst log_levels = [\"dir\", \"log\", \"debug\", \"info\", \"warn\", \"error\"] as const;\ntype LogLevel = (typeof log_levels)[number];\nconst DEFAULT_LOG_LEVEL: LogLevel = \"log\";\n\nconst inputSchema = {\n type: \"object\",\n properties: {\n console: {\n title: \"Message\",\n description: \"The message to log\",\n },\n log_level: {\n type: \"string\",\n enum: log_levels,\n title: \"Log Level\",\n description: \"The log level to use\",\n default: DEFAULT_LOG_LEVEL,\n },\n },\n additionalProperties: false,\n} as const satisfies DataPortSchema;\n\nconst outputSchema = {\n type: \"object\",\n properties: {\n console: {\n title: \"Messages\",\n description: \"The messages logged by the task\",\n },\n },\n additionalProperties: false,\n} as const satisfies DataPortSchema;\n\nexport type DebugLogTaskInput = FromSchema<typeof inputSchema>;\nexport type DebugLogTaskOutput = FromSchema<typeof outputSchema>;\n\n/**\n * DebugLogTask provides console logging functionality as a task within the system.\n *\n * Features:\n * - Supports multiple log levels (info, warn, error, dir)\n * - Passes through the logged message as output\n * - Configurable logging format and depth\n *\n * This task is particularly useful for debugging task graphs and monitoring\n * data flow between tasks during development and testing.\n */\nexport class DebugLogTask<\n Input extends DebugLogTaskInput = DebugLogTaskInput,\n Output extends DebugLogTaskOutput = DebugLogTaskOutput,\n Config extends TaskConfig = TaskConfig,\n> extends Task<Input, Output, Config> {\n public static type = \"DebugLogTask\";\n public static category = \"Utility\";\n public static title = \"Debug Log\";\n public static description =\n \"Logs messages to the console with configurable log levels for debugging task graphs\";\n static readonly cacheable = false;\n\n public static inputSchema() {\n return inputSchema;\n }\n\n public static outputSchema() {\n return outputSchema;\n }\n\n async executeReactive(input: Input, output: Output) {\n const { log_level = DEFAULT_LOG_LEVEL, console: messages } = input;\n if (log_level == \"dir\") {\n console.dir(messages, { depth: null });\n } else {\n console[log_level](messages);\n }\n output.console = input.console;\n return output;\n }\n}\n\nexport const debugLog = (input: DebugLogTaskInput, config: TaskConfig = {}) => {\n const task = new DebugLogTask({}, config);\n return task.run(input);\n};\n\ndeclare module \"@workglow/task-graph\" {\n interface Workflow {\n debugLog: CreateWorkflow<DebugLogTaskInput, DebugLogTaskOutput, TaskConfig>;\n }\n}\n\nWorkflow.prototype.debugLog = CreateWorkflow(DebugLogTask);\n",
10
10
  "/**\n * @license\n * Copyright 2025 Steven Roussey <sroussey@gmail.com>\n * SPDX-License-Identifier: Apache-2.0\n */\n\nimport {\n CreateWorkflow,\n IExecuteContext,\n Task,\n TaskAbortedError,\n TaskConfig,\n Workflow,\n} from \"@workglow/task-graph\";\nimport { DataPortSchema, FromSchema, sleep } from \"@workglow/util\";\n\nconst inputSchema = {\n type: \"object\",\n properties: {\n delay: {\n type: \"number\",\n title: \"Delay (ms)\",\n default: 1,\n },\n pass_through: {\n title: \"Pass Through\",\n description: \"Pass through data to the output\",\n },\n },\n additionalProperties: false,\n} as const satisfies DataPortSchema;\n\nconst outputSchema = {\n type: \"object\",\n properties: {},\n additionalProperties: true,\n} as const satisfies DataPortSchema;\n\nexport type DelayTaskInput = FromSchema<typeof inputSchema>;\nexport type DelayTaskOutput = FromSchema<typeof outputSchema>;\n\nexport class DelayTask<\n Input extends DelayTaskInput = DelayTaskInput,\n Output extends DelayTaskOutput = DelayTaskOutput,\n Config extends TaskConfig = TaskConfig,\n> extends Task<Input, Output, Config> {\n static readonly type = \"DelayTask\";\n static readonly category = \"Utility\";\n public static title = \"Delay\";\n public static description = \"Delays execution for a specified duration with progress tracking\";\n\n static inputSchema() {\n return inputSchema;\n }\n\n static outputSchema() {\n return outputSchema;\n }\n\n async execute(input: Input, executeContext: IExecuteContext): Promise<Output> {\n const delay = input.delay ?? 0;\n if (delay > 100) {\n const iterations = Math.min(100, Math.floor(delay / 16)); // 1/60fps is about 16ms\n const chunkSize = delay / iterations;\n for (let i = 0; i < iterations; i++) {\n if (executeContext.signal.aborted) {\n throw new TaskAbortedError(\"Task aborted\");\n }\n await sleep(chunkSize);\n await executeContext.updateProgress((100 * i) / iterations, `Delaying for ${delay}ms`);\n }\n } else {\n await sleep(delay);\n }\n return input.pass_through as Output;\n }\n}\n\n/**\n * DelayTask\n *\n * Delays the execution of a task for a specified amount of time\n *\n * @param {delay} - The delay in milliseconds\n */\nexport const delay = (input: DelayTaskInput, config: TaskConfig = {}) => {\n const task = new DelayTask({}, config);\n return task.run(input);\n};\n\ndeclare module \"@workglow/task-graph\" {\n interface Workflow {\n delay: CreateWorkflow<DelayTaskInput, DelayTaskOutput, TaskConfig>;\n }\n}\n\nWorkflow.prototype.delay = CreateWorkflow(DelayTask);\n",
11
11
  "/**\n * @copyright\n * Copyright 2025 Steven Roussey\n * All Rights Reserved\n */\n\nimport { CreateWorkflow, Task, TaskConfig, Workflow } from \"@workglow/task-graph\";\nimport type { DataPortSchema } from \"@workglow/util\";\n\nexport type InputTaskInput = Record<string, unknown>;\nexport type InputTaskOutput = Record<string, unknown>;\nexport type InputTaskConfig = TaskConfig & {\n readonly schema: DataPortSchema;\n};\n\nexport class InputTask extends Task<InputTaskInput, InputTaskOutput, InputTaskConfig> {\n static type = \"InputTask\";\n static category = \"Flow Control\";\n static title = \"Input\";\n static description = \"Starts the workflow\";\n static hasDynamicSchemas = true;\n static cacheable = false;\n\n public static inputSchema(): DataPortSchema {\n return {\n type: \"object\",\n properties: {},\n additionalProperties: true,\n } as const as DataPortSchema;\n }\n\n public static outputSchema(): DataPortSchema {\n return {\n type: \"object\",\n properties: {},\n additionalProperties: true,\n } as const as DataPortSchema;\n }\n\n public inputSchema(): DataPortSchema {\n return (\n (this.config?.extras?.inputSchema as DataPortSchema | undefined) ??\n (this.constructor as typeof InputTask).inputSchema()\n );\n }\n\n public outputSchema(): DataPortSchema {\n return (\n (this.config?.extras?.outputSchema as DataPortSchema | undefined) ??\n (this.constructor as typeof InputTask).outputSchema()\n );\n }\n\n public async execute(input: InputTaskInput) {\n return input as InputTaskOutput;\n }\n\n public async executeReactive(input: InputTaskInput) {\n return input as InputTaskOutput;\n }\n}\n\ndeclare module \"@workglow/task-graph\" {\n interface Workflow {\n input: CreateWorkflow<InputTaskInput, InputTaskOutput, InputTaskConfig>;\n }\n}\n\nWorkflow.prototype.input = CreateWorkflow(InputTask);\n",
12
- "/**\n * @license\n * Copyright 2025 Steven Roussey <sroussey@gmail.com>\n * SPDX-License-Identifier: Apache-2.0\n */\n\nimport { CreateWorkflow, Task, TaskConfig, Workflow } from \"@workglow/task-graph\";\nimport { DataPortSchema, FromSchema } from \"@workglow/util\";\nimport { Interpreter } from \"../util/interpreter\";\n\nconst inputSchema = {\n type: \"object\",\n properties: {\n javascript_code: {\n type: \"string\",\n title: \"Code\",\n minLength: 1,\n description: \"JavaScript code to execute\",\n format: \"code:javascript\",\n },\n },\n required: [\"javascript_code\"],\n additionalProperties: true,\n} as const satisfies DataPortSchema;\n\nconst outputSchema = {\n type: \"object\",\n properties: {\n output: {\n title: \"Output\",\n description: \"The output of the JavaScript code\",\n },\n },\n required: [\"output\"],\n additionalProperties: false,\n} as const satisfies DataPortSchema;\n\nexport type JavaScriptTaskInput = FromSchema<typeof inputSchema>;\nexport type JavaScriptTaskOutput = FromSchema<typeof outputSchema>;\n\nexport class JavaScriptTask extends Task<JavaScriptTaskInput, JavaScriptTaskOutput> {\n public static type = \"JavaScriptTask\";\n public static category = \"Utility\";\n public static title = \"JavaScript Interpreter\";\n public static description = \"Executes JavaScript code in a sandboxed interpreter environment\";\n\n public static inputSchema() {\n return inputSchema;\n }\n\n public static outputSchema() {\n return outputSchema;\n }\n\n async executeReactive(input: JavaScriptTaskInput, output: JavaScriptTaskOutput) {\n if (input.javascript_code) {\n try {\n const inputVariables = Object.keys(input).filter((key) => key !== \"javascript_code\");\n const inputVariablesString = inputVariables\n .map((key) => `var ${key} = ${JSON.stringify(input[key])};`)\n .join(\"\\n\");\n const myInterpreter = new Interpreter(`${inputVariablesString} ${input.javascript_code}`);\n myInterpreter.run();\n output.output = myInterpreter.value;\n console.log(\"output\", output.output);\n } catch (e) {\n console.error(\"error\", e);\n }\n }\n return output;\n }\n}\n\nexport const javaScript = (input: JavaScriptTaskInput, config: TaskConfig = {}) => {\n return new JavaScriptTask({}, config).run(input);\n};\n\ndeclare module \"@workglow/task-graph\" {\n interface Workflow {\n javaScript: CreateWorkflow<JavaScriptTaskInput, JavaScriptTaskOutput, TaskConfig>;\n }\n}\n\nWorkflow.prototype.javaScript = CreateWorkflow(JavaScriptTask);\n",
12
+ "/**\n * @license\n * Copyright 2025 Steven Roussey <sroussey@gmail.com>\n * SPDX-License-Identifier: Apache-2.0\n */\n\nimport { CreateWorkflow, Task, TaskConfig, Workflow } from \"@workglow/task-graph\";\nimport { DataPortSchema, FromSchema } from \"@workglow/util\";\nimport { Interpreter } from \"../util/interpreter\";\n\nconst inputSchema = {\n type: \"object\",\n properties: {\n javascript_code: {\n type: \"string\",\n title: \"Code\",\n minLength: 1,\n description: \"JavaScript code to execute\",\n format: \"code:javascript\",\n },\n },\n required: [\"javascript_code\"],\n additionalProperties: true,\n} as const satisfies DataPortSchema;\n\nconst outputSchema = {\n type: \"object\",\n properties: {\n output: {\n title: \"Output\",\n description: \"The output of the JavaScript code\",\n },\n },\n required: [\"output\"],\n additionalProperties: false,\n} as const satisfies DataPortSchema;\n\nexport type JavaScriptTaskInput = FromSchema<typeof inputSchema>;\nexport type JavaScriptTaskOutput = FromSchema<typeof outputSchema>;\n\nexport class JavaScriptTask extends Task<JavaScriptTaskInput, JavaScriptTaskOutput> {\n public static type = \"JavaScriptTask\";\n public static category = \"Utility\";\n public static title = \"JavaScript Interpreter\";\n public static description = \"Executes JavaScript code in a sandboxed interpreter environment\";\n\n public static inputSchema() {\n return inputSchema;\n }\n\n public static outputSchema() {\n return outputSchema;\n }\n\n async executeReactive(input: JavaScriptTaskInput, output: JavaScriptTaskOutput) {\n if (input.javascript_code) {\n try {\n const inputVariables = Object.keys(input).filter((key) => key !== \"javascript_code\");\n const inputVariablesString = inputVariables\n .map((key) => `var ${key} = ${JSON.stringify(input[key])};`)\n .join(\"\\n\");\n const myInterpreter = new Interpreter(`${inputVariablesString} ${input.javascript_code}`);\n myInterpreter.run();\n output.output = myInterpreter.value;\n // console.log(\"output\", output.output);\n } catch (e) {\n // console.error(\"error\", e);\n }\n }\n return output;\n }\n}\n\nexport const javaScript = (input: JavaScriptTaskInput, config: TaskConfig = {}) => {\n return new JavaScriptTask({}, config).run(input);\n};\n\ndeclare module \"@workglow/task-graph\" {\n interface Workflow {\n javaScript: CreateWorkflow<JavaScriptTaskInput, JavaScriptTaskOutput, TaskConfig>;\n }\n}\n\nWorkflow.prototype.javaScript = CreateWorkflow(JavaScriptTask);\n",
13
13
  "/**\n * @license\n * Copyright 2012 Marijn Haverbeke\n * SPDX-License-Identifier: MIT\n */\n\n// Acorn is a tiny, fast JavaScript parser written in JavaScript.\n//\n// Acorn was written by Marijn Haverbeke and released under an MIT\n// license. The Unicode regexps (for identifiers and whitespace) were\n// taken from [Esprima](http://esprima.org) by Ariya Hidayat.\n//\n// Git repositories for Acorn are available at\n//\n// http://marijnhaverbeke.nl/git/acorn\n// https://github.com/marijnh/acorn.git\n//\n// Please use the [github bug tracker][ghbt] to report issues.\n//\n// [ghbt]: https://github.com/marijnh/acorn/issues\n//\n// This file defines the main parser interface. The library also comes\n// with a [error-tolerant parser][dammit] and an\n// [abstract syntax tree walker][walk], defined in other files.\n//\n// [dammit]: acorn_loose.js\n// [walk]: util/walk.js\n\nvar version = \"0.5.0\";\n// Plus additional edits marked with 'JS-Interpreter change' comments.\n\n// JS-Interpreter change:\n// Added JSDoc type definitions.\n// -- Neil Fraser, July 2023.\n\n// JS-Interpreter change:\n// No longer exporting defaultOptions, getLineInfo, tokenize, tokTypes,\n// isIdentifierStart, and isIdentifierChar. Not used by JS-Interpreter.\n// -- Neil Fraser, February 2023.\n\n// The main exported interface (under `self.acorn` when in the\n// browser) is a `parse` function that takes a code string and\n// returns an abstract syntax tree as specified by [Mozilla parser\n// API][api], with the caveat that the SpiderMonkey-specific syntax\n// (`let`, `yield`, inline XML, etc) is not recognized.\n//\n// [api]: https://developer.mozilla.org/en-US/docs/SpiderMonkey/Parser_API\n\n/** @type {!Object|undefined} */\nvar options;\n\n/** @type {string} */\nvar input = \"\";\n/** @type {number|undefined} */\nvar inputLen;\n/** @type {*} */\nvar sourceFile;\n\n/**\n * @param {string} inpt\n * @param {Object=} opts\n * @returns\n */\nvar parse = function (inpt, opts) {\n input = String(inpt);\n inputLen = input.length;\n setOptions(opts);\n initTokenState();\n return parseTopLevel(options.program);\n};\n\n// A second optional argument can be given to further configure\n// the parser process. These options are recognized:\n\nvar defaultOptions = {\n // JS-Interpreter change:\n // `ecmaVersion` option has been removed along with all cases where\n // it is checked. In this version of Acorn it was limited to 3 or 5,\n // and there's no use case for 3 with JS-Interpreter.\n // -- Neil Fraser, December 2022.\n\n // Turn on `strictSemicolons` to prevent the parser from doing\n // automatic semicolon insertion.\n strictSemicolons: false,\n // When `allowTrailingCommas` is false, the parser will not allow\n // trailing commas in array and object literals.\n allowTrailingCommas: true,\n // By default, reserved words are not enforced. Enable\n // `forbidReserved` to enforce them. When this option has the\n // value \"everywhere\", reserved words and keywords can also not be\n // used as property names.\n forbidReserved: false,\n // When enabled, a return at the top level is not considered an\n // error.\n allowReturnOutsideFunction: false,\n // When `locations` is on, `loc` properties holding objects with\n // `start` and `end` properties in `{line, column}` form (with\n // line being 1-based and column 0-based) will be attached to the\n // nodes.\n locations: false,\n // A function can be passed as `onComment` option, which will\n // cause Acorn to call that function with `(block, text, start,\n // end)` parameters whenever a comment is skipped. `block` is a\n // boolean indicating whether this is a block (`/* */`) comment,\n // `text` is the content of the comment, and `start` and `end` are\n // character offsets that denote the start and end of the comment.\n // When the `locations` option is on, two more parameters are\n // passed, the full `{line, column}` locations of the start and\n // end of the comments. Note that you are not allowed to call the\n // parser from the callback—that will corrupt its internal state.\n onComment: null,\n // Nodes have their start and end characters offsets recorded in\n // `start` and `end` properties (directly on the node, rather than\n // the `loc` object, which holds line/column data. To also add a\n // [semi-standardized][range] `range` property holding a `[start,\n // end]` array with the same numbers, set the `ranges` option to\n // `true`.\n //\n // [range]: https://bugzilla.mozilla.org/show_bug.cgi?id=745678\n ranges: false,\n // It is possible to parse multiple files into a single AST by\n // passing the tree produced by parsing the first file as\n // `program` option in subsequent parses. This will add the\n // toplevel forms of the parsed file to the `Program` (top) node\n // of an existing parse tree.\n program: null,\n // When `locations` is on, you can pass this to record the source\n // file in every node's `loc` object.\n sourceFile: null,\n // This value, if given, is stored in every node, whether\n // `locations` is on or off.\n directSourceFile: null,\n};\n\n/**\n * @param {Object|undefined} opts\n */\nfunction setOptions(opts) {\n options = opts || {};\n for (var opt in defaultOptions) {\n if (!Object.prototype.hasOwnProperty.call(options, opt)) {\n options[opt] = defaultOptions[opt];\n }\n }\n sourceFile = options.sourceFile;\n}\n\n/**\n * The `getLineInfo` function is mostly useful when the\n * `locations` option is off (for performance reasons) and you\n * want to find the line/column position for a given character\n * offset. `input` should be the code string that the offset refers\n * into.\n *\n * @param {string} input\n * @param {number} offset\n * @returns {!Object}\n */\nvar getLineInfo = function (input, offset) {\n for (var line = 1, cur = 0; ; ) {\n lineBreak.lastIndex = cur;\n var match = lineBreak.exec(input);\n if (match && match.index < offset) {\n ++line;\n cur = match.index + match[0].length;\n } else {\n break;\n }\n }\n return { line: line, column: offset - cur };\n};\n\n// JS-Interpreter change:\n// tokenize function never used. Removed.\n// -- Neil Fraser, February 2023.\n\n// State is kept in (closure-)global variables. We already saw the\n// `options`, `input`, and `inputLen` variables above.\n\n/**\n * The current position of the tokenizer in the input.\n * @type {number}\n */\nvar tokPos = 0;\n\n/**\n * The start offset of the current token.\n * @type {number}\n */\nvar tokStart = 0;\n\n/**\n * The end offset of the current token.\n * @type {number}\n */\nvar tokEnd = 0;\n\n/**\n * When `options.locations` is true, holds object\n * containing the token's start line/column pairs.\n * @type {!line_loc_t|undefined}\n */\nvar tokStartLoc;\n\n/**\n * When `options.locations` is true, holds object\n * containing the token's end line/column pairs.\n * @type {!line_loc_t|undefined}\n */\nvar tokEndLoc;\n\n/**\n * The type of the current token. Token types are objects,\n * named by variables against which they can be compared, and\n * holding properties that describe them (indicating, for example,\n * the precedence of an infix operator, and the original name of a\n * keyword token).\n * @type {!Object|undefined}\n */\nvar tokType;\n\n/**\n * The value of the current token. The kind of value that's held in\n * `tokVal` depends on the type of the token. For literals, it is the\n * literal value, for operators, the operator name, and so on.\n * @type {*}\n */\nvar tokVal;\n\n/**\n * Interal state for the tokenizer. To distinguish between division\n * operators and regular expressions, it remembers whether the last\n * token was one that is allowed to be followed by an expression.\n * (If it is, a slash is probably a regexp, if it isn't it's a\n * division operator. See the `parseStatement` function for a caveat.)\n * @type {boolean|undefined}\n */\nvar tokRegexpAllowed;\n\n/**\n * When `options.locations` is true, `tokCurLine` is used to keep\n * track of the current line.\n * @type {number|undefined}\n */\nvar tokCurLine;\n\n/**\n * When `options.locations` is true, `tokLineStart` is used to know\n * when a new line has been entered.\n * @type {number|undefined}\n */\nvar tokLineStart;\n\n/**\n * The start of the position of the previous token, which is useful\n * when finishing a node and assigning its `end` position.\n * @type {number}\n */\nvar lastStart = 0;\n\n/**\n * The end oy the position of the previous token, which is useful\n * when finishing a node and assigning its `end` position.\n * @type {number}\n */\nvar lastEnd = 0;\n\n/**\n * Stores the position of the previous token, which is useful\n * when finishing a node and assigning its `end` position.\n * @type {!line_loc_t|undefined}\n */\nvar lastEndLoc;\n\n/**\n * `inFunction` is used to reject `return` statements outside of functions.\n * @type {boolean|undefined}\n */\nvar inFunction;\n\n/**\n * `labels` is used to verify that `break` and `continue` have somewhere\n * to jump to.\n * @type {!Array<!Object>|undefined}\n */\nvar labels;\n\n/**\n * `strict` indicates whether strict mode is on.\n * @type {boolean|undefined}\n */\nvar strict;\n\n/**\n * This function is used to raise exceptions on parse errors. It\n * takes an offset integer (into the current `input`) to indicate\n * the location of the error, attaches the position to the end\n * of the error message, and then raises a `SyntaxError` with that\n * message.\n *\n * @param {number} pos\n * @param {string} message\n * @throws {SyntaxError}\n */\nfunction raise(pos, message) {\n var loc = getLineInfo(input, pos);\n message += \" (\" + loc.line + \":\" + loc.column + \")\";\n var err = new SyntaxError(message);\n err.pos = pos;\n err.loc = loc;\n err.raisedAt = tokPos;\n throw err;\n}\n\n// Reused empty array added for node fields that are always empty.\n\nvar empty = [];\n\n// ## Token types\n\n// The assignment of fine-grained, information-carrying type objects\n// allows the tokenizer to store the information it has about a\n// token in a way that is very cheap for the parser to look up.\n\n// All token type variables start with an underscore, to make them\n// easy to recognize.\n\n// These are the general types. The `type` property is only used to\n// make them recognizeable when debugging.\n\nvar _num = { type: \"num\" };\nvar _regexp = { type: \"regexp\" };\nvar _string = { type: \"string\" };\nvar _name = { type: \"name\" };\nvar _eof = { type: \"eof\" };\n\n// Keyword tokens. The `keyword` property (also used in keyword-like\n// operators) indicates that the token originated from an\n// identifier-like word, which is used when parsing property names.\n//\n// The `beforeExpr` property is used to disambiguate between regular\n// expressions and divisions. It is set on all token types that can\n// be followed by an expression (thus, a slash after them would be a\n// regular expression).\n//\n// `isLoop` marks a keyword as starting a loop, which is important\n// to know when parsing a label, in order to allow or disallow\n// continue jumps to that label.\n\nvar _break = { keyword: \"break\" };\nvar _case = { keyword: \"case\", beforeExpr: true };\nvar _catch = { keyword: \"catch\" };\nvar _continue = { keyword: \"continue\" };\nvar _debugger = { keyword: \"debugger\" };\nvar _default = { keyword: \"default\" };\nvar _do = { keyword: \"do\", isLoop: true };\nvar _else = { keyword: \"else\", beforeExpr: true };\nvar _finally = { keyword: \"finally\" };\nvar _for = { keyword: \"for\", isLoop: true };\nvar _function = { keyword: \"function\" };\nvar _if = { keyword: \"if\" };\nvar _return = { keyword: \"return\", beforeExpr: true };\nvar _switch = { keyword: \"switch\" };\nvar _throw = { keyword: \"throw\", beforeExpr: true };\nvar _try = { keyword: \"try\" };\nvar _var = { keyword: \"var\" };\nvar _while = { keyword: \"while\", isLoop: true };\nvar _with = { keyword: \"with\" };\nvar _new = { keyword: \"new\", beforeExpr: true };\nvar _this = { keyword: \"this\" };\n\n// The keywords that denote values.\n\nvar _null = { keyword: \"null\", atomValue: null };\nvar _true = { keyword: \"true\", atomValue: true };\nvar _false = { keyword: \"false\", atomValue: false };\n\n// Some keywords are treated as regular operators. `in` sometimes\n// (when parsing `for`) needs to be tested against specifically, so\n// we assign a variable name to it for quick comparing.\n\nvar _in = { keyword: \"in\", binop: 7, beforeExpr: true };\n\n// Map keyword names to token types.\n\nvar keywordTypes = {\n break: _break,\n case: _case,\n catch: _catch,\n continue: _continue,\n debugger: _debugger,\n default: _default,\n do: _do,\n else: _else,\n finally: _finally,\n for: _for,\n function: _function,\n if: _if,\n return: _return,\n switch: _switch,\n throw: _throw,\n try: _try,\n var: _var,\n while: _while,\n with: _with,\n null: _null,\n true: _true,\n false: _false,\n new: _new,\n in: _in,\n instanceof: { keyword: \"instanceof\", binop: 7, beforeExpr: true },\n this: _this,\n typeof: { keyword: \"typeof\", prefix: true, beforeExpr: true },\n void: { keyword: \"void\", prefix: true, beforeExpr: true },\n delete: { keyword: \"delete\", prefix: true, beforeExpr: true },\n};\n\n// Punctuation token types. Again, the `type` property is purely for debugging.\n\nvar _bracketL = { type: \"[\", beforeExpr: true };\nvar _bracketR = { type: \"]\" };\nvar _braceL = { type: \"{\", beforeExpr: true };\nvar _braceR = { type: \"}\" };\nvar _parenL = { type: \"(\", beforeExpr: true };\nvar _parenR = { type: \")\" };\nvar _comma = { type: \",\", beforeExpr: true };\nvar _semi = { type: \";\", beforeExpr: true };\nvar _colon = { type: \":\", beforeExpr: true };\nvar _dot = { type: \".\" };\nvar _question = { type: \"?\", beforeExpr: true };\n\n// Operators. These carry several kinds of properties to help the\n// parser use them properly (the presence of these properties is\n// what categorizes them as operators).\n//\n// `binop`, when present, specifies that this operator is a binary\n// operator, and will refer to its precedence.\n//\n// `prefix` and `postfix` mark the operator as a prefix or postfix\n// unary operator. `isUpdate` specifies that the node produced by\n// the operator should be of type UpdateExpression rather than\n// simply UnaryExpression (`++` and `--`).\n//\n// `isAssign` marks all of `=`, `+=`, `-=` etcetera, which act as\n// binary operators with a very low precedence, that should result\n// in AssignmentExpression nodes.\n\nvar _slash = { binop: 10, beforeExpr: true };\nvar _eq = { isAssign: true, beforeExpr: true };\nvar _assign = { isAssign: true, beforeExpr: true };\nvar _incDec = { postfix: true, prefix: true, isUpdate: true };\nvar _prefix = { prefix: true, beforeExpr: true };\nvar _logicalOR = { binop: 1, beforeExpr: true };\nvar _logicalAND = { binop: 2, beforeExpr: true };\nvar _bitwiseOR = { binop: 3, beforeExpr: true };\nvar _bitwiseXOR = { binop: 4, beforeExpr: true };\nvar _bitwiseAND = { binop: 5, beforeExpr: true };\nvar _equality = { binop: 6, beforeExpr: true };\nvar _relational = { binop: 7, beforeExpr: true };\nvar _bitShift = { binop: 8, beforeExpr: true };\nvar _plusMin = { binop: 9, prefix: true, beforeExpr: true };\nvar _multiplyModulo = { binop: 10, beforeExpr: true };\n\n// JS-Interpreter change:\n// tokTypes map never used. Removed.\n// -- Neil Fraser, February 2023.\n\n// JS-Interpreter change:\n// Acorn's original code built up functions using strings for maximum efficiency.\n// However, this triggered a CSP unsafe-eval requirement. Here's a slower, but\n// simpler approach. -- Neil Fraser, January 2022.\n// https://github.com/NeilFraser/JS-Interpreter/issues/228\n\n/**\n * @param {string} words\n * @returns {function(*): boolean}\n */\nfunction makePredicate(words) {\n var wordList = words.split(\" \");\n var set = Object.create(null);\n for (var i = 0; i < wordList.length; i++) {\n set[wordList[i]] = true;\n }\n return function (str) {\n return set[str] || false;\n };\n}\n\n// ECMAScript 5 reserved words.\n\nvar isReservedWord5 = makePredicate(\"class enum extends super const export import\");\n\n// The additional reserved words in strict mode.\n\nvar isStrictReservedWord = makePredicate(\n \"implements interface var package private protected public static yield\"\n);\n\n// The forbidden variable names in strict mode.\n\nvar isStrictBadIdWord = makePredicate(\"eval arguments\");\n\n// And the keywords.\n\nvar isKeyword = makePredicate(\n \"break case catch continue debugger default do else finally for function if return switch throw try var while with null true false instanceof typeof void delete new in this\"\n);\n\n// ## Character categories\n\n// Big ugly regular expressions that match characters in the\n// whitespace, identifier, and identifier-start categories. These\n// are only applied when a character is found to actually have a\n// code point above 128.\n\nvar nonASCIIwhitespace = /[\\u1680\\u180e\\u2000-\\u200a\\u202f\\u205f\\u3000\\ufeff]/;\nvar nonASCIIidentifierStartChars =\n \"\\xaa\\xb5\\xba\\xc0-\\xd6\\xd8-\\xf6\\xf8-\\u02c1\\u02c6-\\u02d1\\u02e0-\\u02e4\\u02ec\\u02ee\\u0370-\\u0374\\u0376\\u0377\\u037a-\\u037d\\u0386\\u0388-\\u038a\\u038c\\u038e-\\u03a1\\u03a3-\\u03f5\\u03f7-\\u0481\\u048a-\\u0527\\u0531-\\u0556\\u0559\\u0561-\\u0587\\u05d0-\\u05ea\\u05f0-\\u05f2\\u0620-\\u064a\\u066e\\u066f\\u0671-\\u06d3\\u06d5\\u06e5\\u06e6\\u06ee\\u06ef\\u06fa-\\u06fc\\u06ff\\u0710\\u0712-\\u072f\\u074d-\\u07a5\\u07b1\\u07ca-\\u07ea\\u07f4\\u07f5\\u07fa\\u0800-\\u0815\\u081a\\u0824\\u0828\\u0840-\\u0858\\u08a0\\u08a2-\\u08ac\\u0904-\\u0939\\u093d\\u0950\\u0958-\\u0961\\u0971-\\u0977\\u0979-\\u097f\\u0985-\\u098c\\u098f\\u0990\\u0993-\\u09a8\\u09aa-\\u09b0\\u09b2\\u09b6-\\u09b9\\u09bd\\u09ce\\u09dc\\u09dd\\u09df-\\u09e1\\u09f0\\u09f1\\u0a05-\\u0a0a\\u0a0f\\u0a10\\u0a13-\\u0a28\\u0a2a-\\u0a30\\u0a32\\u0a33\\u0a35\\u0a36\\u0a38\\u0a39\\u0a59-\\u0a5c\\u0a5e\\u0a72-\\u0a74\\u0a85-\\u0a8d\\u0a8f-\\u0a91\\u0a93-\\u0aa8\\u0aaa-\\u0ab0\\u0ab2\\u0ab3\\u0ab5-\\u0ab9\\u0abd\\u0ad0\\u0ae0\\u0ae1\\u0b05-\\u0b0c\\u0b0f\\u0b10\\u0b13-\\u0b28\\u0b2a-\\u0b30\\u0b32\\u0b33\\u0b35-\\u0b39\\u0b3d\\u0b5c\\u0b5d\\u0b5f-\\u0b61\\u0b71\\u0b83\\u0b85-\\u0b8a\\u0b8e-\\u0b90\\u0b92-\\u0b95\\u0b99\\u0b9a\\u0b9c\\u0b9e\\u0b9f\\u0ba3\\u0ba4\\u0ba8-\\u0baa\\u0bae-\\u0bb9\\u0bd0\\u0c05-\\u0c0c\\u0c0e-\\u0c10\\u0c12-\\u0c28\\u0c2a-\\u0c33\\u0c35-\\u0c39\\u0c3d\\u0c58\\u0c59\\u0c60\\u0c61\\u0c85-\\u0c8c\\u0c8e-\\u0c90\\u0c92-\\u0ca8\\u0caa-\\u0cb3\\u0cb5-\\u0cb9\\u0cbd\\u0cde\\u0ce0\\u0ce1\\u0cf1\\u0cf2\\u0d05-\\u0d0c\\u0d0e-\\u0d10\\u0d12-\\u0d3a\\u0d3d\\u0d4e\\u0d60\\u0d61\\u0d7a-\\u0d7f\\u0d85-\\u0d96\\u0d9a-\\u0db1\\u0db3-\\u0dbb\\u0dbd\\u0dc0-\\u0dc6\\u0e01-\\u0e30\\u0e32\\u0e33\\u0e40-\\u0e46\\u0e81\\u0e82\\u0e84\\u0e87\\u0e88\\u0e8a\\u0e8d\\u0e94-\\u0e97\\u0e99-\\u0e9f\\u0ea1-\\u0ea3\\u0ea5\\u0ea7\\u0eaa\\u0eab\\u0ead-\\u0eb0\\u0eb2\\u0eb3\\u0ebd\\u0ec0-\\u0ec4\\u0ec6\\u0edc-\\u0edf\\u0f00\\u0f40-\\u0f47\\u0f49-\\u0f6c\\u0f88-\\u0f8c\\u1000-\\u102a\\u103f\\u1050-\\u1055\\u105a-\\u105d\\u1061\\u1065\\u1066\\u106e-\\u1070\\u1075-\\u1081\\u108e\\u10a0-\\u10c5\\u10c7\\u10cd\\u10d0-\\u10fa\\u10fc-\\u1248\\u124a-\\u124d\\u1250-\\u1256\\u1258\\u125a-\\u125d\\u1260-\\u1288\\u128a-\\u128d\\u1290-\\u12b0\\u12b2-\\u12b5\\u12b8-\\u12be\\u12c0\\u12c2-\\u12c5\\u12c8-\\u12d6\\u12d8-\\u1310\\u1312-\\u1315\\u1318-\\u135a\\u1380-\\u138f\\u13a0-\\u13f4\\u1401-\\u166c\\u166f-\\u167f\\u1681-\\u169a\\u16a0-\\u16ea\\u16ee-\\u16f0\\u1700-\\u170c\\u170e-\\u1711\\u1720-\\u1731\\u1740-\\u1751\\u1760-\\u176c\\u176e-\\u1770\\u1780-\\u17b3\\u17d7\\u17dc\\u1820-\\u1877\\u1880-\\u18a8\\u18aa\\u18b0-\\u18f5\\u1900-\\u191c\\u1950-\\u196d\\u1970-\\u1974\\u1980-\\u19ab\\u19c1-\\u19c7\\u1a00-\\u1a16\\u1a20-\\u1a54\\u1aa7\\u1b05-\\u1b33\\u1b45-\\u1b4b\\u1b83-\\u1ba0\\u1bae\\u1baf\\u1bba-\\u1be5\\u1c00-\\u1c23\\u1c4d-\\u1c4f\\u1c5a-\\u1c7d\\u1ce9-\\u1cec\\u1cee-\\u1cf1\\u1cf5\\u1cf6\\u1d00-\\u1dbf\\u1e00-\\u1f15\\u1f18-\\u1f1d\\u1f20-\\u1f45\\u1f48-\\u1f4d\\u1f50-\\u1f57\\u1f59\\u1f5b\\u1f5d\\u1f5f-\\u1f7d\\u1f80-\\u1fb4\\u1fb6-\\u1fbc\\u1fbe\\u1fc2-\\u1fc4\\u1fc6-\\u1fcc\\u1fd0-\\u1fd3\\u1fd6-\\u1fdb\\u1fe0-\\u1fec\\u1ff2-\\u1ff4\\u1ff6-\\u1ffc\\u2071\\u207f\\u2090-\\u209c\\u2102\\u2107\\u210a-\\u2113\\u2115\\u2119-\\u211d\\u2124\\u2126\\u2128\\u212a-\\u212d\\u212f-\\u2139\\u213c-\\u213f\\u2145-\\u2149\\u214e\\u2160-\\u2188\\u2c00-\\u2c2e\\u2c30-\\u2c5e\\u2c60-\\u2ce4\\u2ceb-\\u2cee\\u2cf2\\u2cf3\\u2d00-\\u2d25\\u2d27\\u2d2d\\u2d30-\\u2d67\\u2d6f\\u2d80-\\u2d96\\u2da0-\\u2da6\\u2da8-\\u2dae\\u2db0-\\u2db6\\u2db8-\\u2dbe\\u2dc0-\\u2dc6\\u2dc8-\\u2dce\\u2dd0-\\u2dd6\\u2dd8-\\u2dde\\u2e2f\\u3005-\\u3007\\u3021-\\u3029\\u3031-\\u3035\\u3038-\\u303c\\u3041-\\u3096\\u309d-\\u309f\\u30a1-\\u30fa\\u30fc-\\u30ff\\u3105-\\u312d\\u3131-\\u318e\\u31a0-\\u31ba\\u31f0-\\u31ff\\u3400-\\u4db5\\u4e00-\\u9fcc\\ua000-\\ua48c\\ua4d0-\\ua4fd\\ua500-\\ua60c\\ua610-\\ua61f\\ua62a\\ua62b\\ua640-\\ua66e\\ua67f-\\ua697\\ua6a0-\\ua6ef\\ua717-\\ua71f\\ua722-\\ua788\\ua78b-\\ua78e\\ua790-\\ua793\\ua7a0-\\ua7aa\\ua7f8-\\ua801\\ua803-\\ua805\\ua807-\\ua80a\\ua80c-\\ua822\\ua840-\\ua873\\ua882-\\ua8b3\\ua8f2-\\ua8f7\\ua8fb\\ua90a-\\ua925\\ua930-\\ua946\\ua960-\\ua97c\\ua984-\\ua9b2\\ua9cf\\uaa00-\\uaa28\\uaa40-\\uaa42\\uaa44-\\uaa4b\\uaa60-\\uaa76\\uaa7a\\uaa80-\\uaaaf\\uaab1\\uaab5\\uaab6\\uaab9-\\uaabd\\uaac0\\uaac2\\uaadb-\\uaadd\\uaae0-\\uaaea\\uaaf2-\\uaaf4\\uab01-\\uab06\\uab09-\\uab0e\\uab11-\\uab16\\uab20-\\uab26\\uab28-\\uab2e\\uabc0-\\uabe2\\uac00-\\ud7a3\\ud7b0-\\ud7c6\\ud7cb-\\ud7fb\\uf900-\\ufa6d\\ufa70-\\ufad9\\ufb00-\\ufb06\\ufb13-\\ufb17\\ufb1d\\ufb1f-\\ufb28\\ufb2a-\\ufb36\\ufb38-\\ufb3c\\ufb3e\\ufb40\\ufb41\\ufb43\\ufb44\\ufb46-\\ufbb1\\ufbd3-\\ufd3d\\ufd50-\\ufd8f\\ufd92-\\ufdc7\\ufdf0-\\ufdfb\\ufe70-\\ufe74\\ufe76-\\ufefc\\uff21-\\uff3a\\uff41-\\uff5a\\uff66-\\uffbe\\uffc2-\\uffc7\\uffca-\\uffcf\\uffd2-\\uffd7\\uffda-\\uffdc\";\nvar nonASCIIidentifierChars =\n \"\\u0300-\\u036f\\u0483-\\u0487\\u0591-\\u05bd\\u05bf\\u05c1\\u05c2\\u05c4\\u05c5\\u05c7\\u0610-\\u061a\\u0620-\\u0649\\u0672-\\u06d3\\u06e7-\\u06e8\\u06fb-\\u06fc\\u0730-\\u074a\\u0800-\\u0814\\u081b-\\u0823\\u0825-\\u0827\\u0829-\\u082d\\u0840-\\u0857\\u08e4-\\u08fe\\u0900-\\u0903\\u093a-\\u093c\\u093e-\\u094f\\u0951-\\u0957\\u0962-\\u0963\\u0966-\\u096f\\u0981-\\u0983\\u09bc\\u09be-\\u09c4\\u09c7\\u09c8\\u09d7\\u09df-\\u09e0\\u0a01-\\u0a03\\u0a3c\\u0a3e-\\u0a42\\u0a47\\u0a48\\u0a4b-\\u0a4d\\u0a51\\u0a66-\\u0a71\\u0a75\\u0a81-\\u0a83\\u0abc\\u0abe-\\u0ac5\\u0ac7-\\u0ac9\\u0acb-\\u0acd\\u0ae2-\\u0ae3\\u0ae6-\\u0aef\\u0b01-\\u0b03\\u0b3c\\u0b3e-\\u0b44\\u0b47\\u0b48\\u0b4b-\\u0b4d\\u0b56\\u0b57\\u0b5f-\\u0b60\\u0b66-\\u0b6f\\u0b82\\u0bbe-\\u0bc2\\u0bc6-\\u0bc8\\u0bca-\\u0bcd\\u0bd7\\u0be6-\\u0bef\\u0c01-\\u0c03\\u0c46-\\u0c48\\u0c4a-\\u0c4d\\u0c55\\u0c56\\u0c62-\\u0c63\\u0c66-\\u0c6f\\u0c82\\u0c83\\u0cbc\\u0cbe-\\u0cc4\\u0cc6-\\u0cc8\\u0cca-\\u0ccd\\u0cd5\\u0cd6\\u0ce2-\\u0ce3\\u0ce6-\\u0cef\\u0d02\\u0d03\\u0d46-\\u0d48\\u0d57\\u0d62-\\u0d63\\u0d66-\\u0d6f\\u0d82\\u0d83\\u0dca\\u0dcf-\\u0dd4\\u0dd6\\u0dd8-\\u0ddf\\u0df2\\u0df3\\u0e34-\\u0e3a\\u0e40-\\u0e45\\u0e50-\\u0e59\\u0eb4-\\u0eb9\\u0ec8-\\u0ecd\\u0ed0-\\u0ed9\\u0f18\\u0f19\\u0f20-\\u0f29\\u0f35\\u0f37\\u0f39\\u0f41-\\u0f47\\u0f71-\\u0f84\\u0f86-\\u0f87\\u0f8d-\\u0f97\\u0f99-\\u0fbc\\u0fc6\\u1000-\\u1029\\u1040-\\u1049\\u1067-\\u106d\\u1071-\\u1074\\u1082-\\u108d\\u108f-\\u109d\\u135d-\\u135f\\u170e-\\u1710\\u1720-\\u1730\\u1740-\\u1750\\u1772\\u1773\\u1780-\\u17b2\\u17dd\\u17e0-\\u17e9\\u180b-\\u180d\\u1810-\\u1819\\u1920-\\u192b\\u1930-\\u193b\\u1951-\\u196d\\u19b0-\\u19c0\\u19c8-\\u19c9\\u19d0-\\u19d9\\u1a00-\\u1a15\\u1a20-\\u1a53\\u1a60-\\u1a7c\\u1a7f-\\u1a89\\u1a90-\\u1a99\\u1b46-\\u1b4b\\u1b50-\\u1b59\\u1b6b-\\u1b73\\u1bb0-\\u1bb9\\u1be6-\\u1bf3\\u1c00-\\u1c22\\u1c40-\\u1c49\\u1c5b-\\u1c7d\\u1cd0-\\u1cd2\\u1d00-\\u1dbe\\u1e01-\\u1f15\\u200c\\u200d\\u203f\\u2040\\u2054\\u20d0-\\u20dc\\u20e1\\u20e5-\\u20f0\\u2d81-\\u2d96\\u2de0-\\u2dff\\u3021-\\u3028\\u3099\\u309a\\ua640-\\ua66d\\ua674-\\ua67d\\ua69f\\ua6f0-\\ua6f1\\ua7f8-\\ua800\\ua806\\ua80b\\ua823-\\ua827\\ua880-\\ua881\\ua8b4-\\ua8c4\\ua8d0-\\ua8d9\\ua8f3-\\ua8f7\\ua900-\\ua909\\ua926-\\ua92d\\ua930-\\ua945\\ua980-\\ua983\\ua9b3-\\ua9c0\\uaa00-\\uaa27\\uaa40-\\uaa41\\uaa4c-\\uaa4d\\uaa50-\\uaa59\\uaa7b\\uaae0-\\uaae9\\uaaf2-\\uaaf3\\uabc0-\\uabe1\\uabec\\uabed\\uabf0-\\uabf9\\ufb20-\\ufb28\\ufe00-\\ufe0f\\ufe20-\\ufe26\\ufe33\\ufe34\\ufe4d-\\ufe4f\\uff10-\\uff19\\uff3f\";\nvar nonASCIIidentifierStart = new RegExp(\"[\" + nonASCIIidentifierStartChars + \"]\");\nvar nonASCIIidentifier = new RegExp(\n \"[\" + nonASCIIidentifierStartChars + nonASCIIidentifierChars + \"]\"\n);\n\n// Whether a single character denotes a newline.\n\nvar newline = /[\\n\\r\\u2028\\u2029]/;\n\n// Matches a whole line break (where CRLF is considered a single\n// line break). Used to count lines.\n\nvar lineBreak = /\\r\\n|[\\n\\r\\u2028\\u2029]/g;\n\n/**\n * Test whether a given character code starts an identifier.\n *\n * @param {number} code\n * @returns {boolean}\n */\nvar isIdentifierStart = function (code) {\n if (code < 65) return code === 36;\n if (code < 91) return true;\n if (code < 97) return code === 95;\n if (code < 123) return true;\n return code >= 0xaa && nonASCIIidentifierStart.test(String.fromCharCode(code));\n};\n\n/**\n * Test whether a given character is part of an identifier.\n *\n * @param {number} code\n * @returns {boolean}\n */\nvar isIdentifierChar = function (code) {\n if (code < 48) return code === 36;\n if (code < 58) return true;\n if (code < 65) return false;\n if (code < 91) return true;\n if (code < 97) return code === 95;\n if (code < 123) return true;\n return code >= 0xaa && nonASCIIidentifier.test(String.fromCharCode(code));\n};\n\n// ## Tokenizer\n\n/**\n * These are used when `options.locations` is on, for the\n * `tokStartLoc` and `tokEndLoc` properties.\n * @constructor\n */\nfunction line_loc_t() {\n this.line = tokCurLine;\n this.column = tokPos - tokLineStart;\n}\n\n/**\n * Reset the token state. Used at the start of a parse.\n */\nfunction initTokenState() {\n tokCurLine = 1;\n tokPos = tokLineStart = 0;\n tokRegexpAllowed = true;\n skipSpace();\n}\n\n/**\n * Called at the end of every token. Sets `tokEnd`, `tokVal`, and\n * `tokRegexpAllowed`, and skips the space after the token, so that\n * the next one's `tokStart` will point at the right position.\n *\n * @param {!Object} type\n * @param {*=} val\n */\nfunction finishToken(type, val) {\n tokEnd = tokPos;\n if (options.locations) {\n tokEndLoc = new line_loc_t();\n }\n tokType = type;\n skipSpace();\n tokVal = val;\n tokRegexpAllowed = type.beforeExpr;\n}\n\nfunction skipBlockComment() {\n var startLoc = options.onComment && options.locations && new line_loc_t();\n var start = tokPos;\n var end = input.indexOf(\"*/\", (tokPos += 2));\n if (end === -1) {\n raise(tokPos - 2, \"Unterminated comment\");\n }\n tokPos = end + 2;\n if (options.locations) {\n lineBreak.lastIndex = start;\n var match;\n while ((match = lineBreak.exec(input)) && match.index < tokPos) {\n ++tokCurLine;\n tokLineStart = match.index + match[0].length;\n }\n }\n if (options.onComment) {\n options.onComment(\n true,\n input.slice(start + 2, end),\n start,\n tokPos,\n startLoc,\n options.locations && new line_loc_t()\n );\n }\n}\n\nfunction skipLineComment() {\n var start = tokPos;\n var startLoc = options.onComment && options.locations && new line_loc_t();\n var ch = input.charCodeAt((tokPos += 2));\n while (tokPos < inputLen && ch !== 10 && ch !== 13 && ch !== 8232 && ch !== 8233) {\n ++tokPos;\n ch = input.charCodeAt(tokPos);\n }\n if (options.onComment) {\n options.onComment(\n false,\n input.slice(start + 2, tokPos),\n start,\n tokPos,\n startLoc,\n options.locations && new line_loc_t()\n );\n }\n}\n\n// Called at the start of the parse and after every token. Skips\n// whitespace and comments, and.\n\nfunction skipSpace() {\n while (tokPos < inputLen) {\n var ch = input.charCodeAt(tokPos);\n if (ch === 32) {\n // ' '\n ++tokPos;\n } else if (ch === 13) {\n ++tokPos;\n var next = input.charCodeAt(tokPos);\n if (next === 10) {\n ++tokPos;\n }\n if (options.locations) {\n ++tokCurLine;\n tokLineStart = tokPos;\n }\n } else if (ch === 10 || ch === 8232 || ch === 8233) {\n ++tokPos;\n if (options.locations) {\n ++tokCurLine;\n tokLineStart = tokPos;\n }\n } else if (ch > 8 && ch < 14) {\n ++tokPos;\n } else if (ch === 47) {\n // '/'\n var next = input.charCodeAt(tokPos + 1);\n if (next === 42) {\n // '*'\n skipBlockComment();\n } else if (next === 47) {\n // '/'\n skipLineComment();\n } else break;\n } else if (ch === 160) {\n // '\\xa0'\n ++tokPos;\n } else if (ch >= 5760 && nonASCIIwhitespace.test(String.fromCharCode(ch))) {\n ++tokPos;\n } else {\n break;\n }\n }\n}\n\n// ### Token reading\n\n// This is the function that is called to fetch the next token. It\n// is somewhat obscure, because it works in character codes rather\n// than characters, and because operator parsing has been inlined\n// into it.\n//\n// All in the name of speed.\n//\n// The `forceRegexp` parameter is used in the one case where the\n// `tokRegexpAllowed` trick does not work. See `parseStatement`.\n\nfunction readToken_dot() {\n var next = input.charCodeAt(tokPos + 1);\n if (next >= 48 && next <= 57) {\n readNumber(true);\n } else {\n ++tokPos;\n finishToken(_dot);\n }\n}\n\nfunction readToken_slash() {\n // '/'\n var next = input.charCodeAt(tokPos + 1);\n if (tokRegexpAllowed) {\n ++tokPos;\n readRegexp();\n } else if (next === 61) {\n finishOp(_assign, 2);\n } else {\n finishOp(_slash, 1);\n }\n}\n\nfunction readToken_mult_modulo() {\n // '%*'\n var next = input.charCodeAt(tokPos + 1);\n if (next === 61) {\n finishOp(_assign, 2);\n } else {\n finishOp(_multiplyModulo, 1);\n }\n}\n\n/**\n * @param {number} code\n */\nfunction readToken_pipe_amp(code) {\n // '|&'\n var next = input.charCodeAt(tokPos + 1);\n if (next === code) {\n finishOp(code === 124 ? _logicalOR : _logicalAND, 2);\n } else if (next === 61) {\n finishOp(_assign, 2);\n } else {\n finishOp(code === 124 ? _bitwiseOR : _bitwiseAND, 1);\n }\n}\n\nfunction readToken_caret() {\n // '^'\n var next = input.charCodeAt(tokPos + 1);\n if (next === 61) {\n finishOp(_assign, 2);\n } else {\n finishOp(_bitwiseXOR, 1);\n }\n}\n\n/**\n * @param {number} code\n */\nfunction readToken_plus_min(code) {\n // '+-'\n var next = input.charCodeAt(tokPos + 1);\n if (next === code) {\n if (\n next === 45 &&\n input.charCodeAt(tokPos + 2) === 62 &&\n newline.test(input.slice(lastEnd, tokPos))\n ) {\n // A `-->` line comment\n tokPos += 3;\n skipLineComment();\n skipSpace();\n readToken();\n return;\n }\n finishOp(_incDec, 2);\n } else if (next === 61) {\n finishOp(_assign, 2);\n } else {\n finishOp(_plusMin, 1);\n }\n}\n\n/**\n * @param {number} code\n */\nfunction readToken_lt_gt(code) {\n // '<>'\n var next = input.charCodeAt(tokPos + 1);\n var size = 1;\n if (next === code) {\n size = code === 62 && input.charCodeAt(tokPos + 2) === 62 ? 3 : 2;\n if (input.charCodeAt(tokPos + size) === 61) {\n finishOp(_assign, size + 1);\n } else {\n finishOp(_bitShift, size);\n }\n return;\n }\n if (\n next === 33 &&\n code === 60 &&\n input.charCodeAt(tokPos + 2) === 45 &&\n input.charCodeAt(tokPos + 3) === 45\n ) {\n // `<!--`, an XML-style comment that should be interpreted as a line comment\n tokPos += 4;\n skipLineComment();\n skipSpace();\n readToken();\n return;\n }\n if (next === 61) {\n size = input.charCodeAt(tokPos + 2) === 61 ? 3 : 2;\n }\n finishOp(_relational, size);\n}\n\n/**\n * @param {number} code\n */\nfunction readToken_eq_excl(code) {\n // '=!'\n var next = input.charCodeAt(tokPos + 1);\n if (next === 61) {\n finishOp(_equality, input.charCodeAt(tokPos + 2) === 61 ? 3 : 2);\n } else {\n finishOp(code === 61 ? _eq : _prefix, 1);\n }\n}\n\n/**\n * @param {number} code\n * @returns {boolean|undefined}\n */\nfunction getTokenFromCode(code) {\n switch (code) {\n // The interpretation of a dot depends on whether it is followed\n // by a digit.\n case 46: // '.'\n return readToken_dot();\n\n // Punctuation tokens.\n case 40:\n ++tokPos;\n return finishToken(_parenL);\n case 41:\n ++tokPos;\n return finishToken(_parenR);\n case 59:\n ++tokPos;\n return finishToken(_semi);\n case 44:\n ++tokPos;\n return finishToken(_comma);\n case 91:\n ++tokPos;\n return finishToken(_bracketL);\n case 93:\n ++tokPos;\n return finishToken(_bracketR);\n case 123:\n ++tokPos;\n return finishToken(_braceL);\n case 125:\n ++tokPos;\n return finishToken(_braceR);\n case 58:\n ++tokPos;\n return finishToken(_colon);\n case 63:\n ++tokPos;\n return finishToken(_question);\n\n // '0x' is a hexadecimal number.\n case 48: // '0'\n var next = input.charCodeAt(tokPos + 1);\n if (next === 120 || next === 88) return readHexNumber();\n // Anything else beginning with a digit is an integer, octal\n // number, or float.\n case 49:\n case 50:\n case 51:\n case 52:\n case 53:\n case 54:\n case 55:\n case 56:\n case 57: // 1-9\n return readNumber(false);\n\n // Quotes produce strings.\n case 34:\n case 39: // '\"', \"'\"\n return readString(code);\n\n // Operators are parsed inline in tiny state machines. '=' (61) is\n // often referred to. `finishOp` simply skips the amount of\n // characters it is given as second argument, and returns a token\n // of the type given by its first argument.\n\n case 47: // '/'\n return readToken_slash();\n\n case 37:\n case 42: // '%*'\n return readToken_mult_modulo();\n\n case 124:\n case 38: // '|&'\n return readToken_pipe_amp(code);\n\n case 94: // '^'\n return readToken_caret();\n\n case 43:\n case 45: // '+-'\n return readToken_plus_min(code);\n\n case 60:\n case 62: // '<>'\n return readToken_lt_gt(code);\n\n case 61:\n case 33: // '=!'\n return readToken_eq_excl(code);\n\n case 126: // '~'\n return finishOp(_prefix, 1);\n }\n\n return false;\n}\n\n/**\n * @param {boolean=} forceRegexp\n */\nfunction readToken(forceRegexp) {\n if (!forceRegexp) {\n tokStart = tokPos;\n } else {\n tokPos = tokStart + 1;\n }\n if (options.locations) {\n tokStartLoc = new line_loc_t();\n }\n if (forceRegexp) return readRegexp();\n if (tokPos >= inputLen) return finishToken(_eof);\n\n var code = input.charCodeAt(tokPos);\n // Identifier or keyword. '\\uXXXX' sequences are allowed in\n // identifiers, so '\\' also dispatches to that.\n if (isIdentifierStart(code) || code === 92) {\n // '\\'\n return readWord();\n }\n\n var tok = getTokenFromCode(code);\n\n if (tok === false) {\n // If we are here, we either found a non-ASCII identifier\n // character, or something that's entirely disallowed.\n var ch = String.fromCharCode(code);\n if (ch === \"\\\\\" || nonASCIIidentifierStart.test(ch)) {\n return readWord();\n }\n raise(tokPos, \"Unexpected character '\" + ch + \"'\");\n }\n}\n\n/**\n * @param {!Object} type\n * @param {number} size\n */\nfunction finishOp(type, size) {\n var str = input.slice(tokPos, tokPos + size);\n tokPos += size;\n finishToken(type, str);\n}\n\n/**\n * Parse a regular expression. Some context-awareness is necessary,\n * since a '/' inside a '[]' set does not end the expression.\n */\nfunction readRegexp() {\n // JS-Interpreter change:\n // Removed redundant declaration of 'content' here. Caused lint errors.\n // -- Neil Fraser, June 2022.\n var escaped;\n var inClass;\n var start = tokPos;\n for (;;) {\n if (tokPos >= inputLen) raise(start, \"Unterminated regexp\");\n var ch = input.charAt(tokPos);\n if (newline.test(ch)) raise(start, \"Unterminated regexp\");\n if (!escaped) {\n if (ch === \"[\") {\n inClass = true;\n } else if (ch === \"]\" && inClass) {\n inClass = false;\n } else if (ch === \"/\" && !inClass) {\n break;\n }\n escaped = ch === \"\\\\\";\n } else escaped = false;\n ++tokPos;\n }\n var content = input.slice(start, tokPos);\n ++tokPos;\n // Need to use `readWord1` because '\\uXXXX' sequences are allowed\n // here (don't ask).\n var mods = readWord1();\n // JS-Interpreter change:\n // Acorn used to use 'gmsiy' to check for flags. But 's' and 'y' are ES6.\n // -- Neil Fraser, December 2022.\n // https://github.com/acornjs/acorn/issues/1163\n if (mods && !/^[gmi]*$/.test(mods)) {\n raise(start, \"Invalid regexp flag\");\n }\n try {\n var value = new RegExp(content, mods);\n } catch (e) {\n if (e instanceof SyntaxError) raise(start, e.message);\n // JS-Interpreter change:\n // Acorn used to use raise(e) here which is incorrect.\n // -- Neil Fraser, July 2023.\n throw e;\n }\n finishToken(_regexp, value);\n}\n\n/**\n * Read an integer in the given radix. Return null if zero digits\n * were read, the integer value otherwise. When `len` is given, this\n * will return `null` unless the integer has exactly `len` digits.\n * @param {number} radix\n * @param {number=} len\n * @returns {?number}\n */\nfunction readInt(radix, len) {\n var start = tokPos;\n var total = 0;\n var e = len === undefined ? Infinity : len;\n for (var i = 0; i < e; ++i) {\n var code = input.charCodeAt(tokPos),\n val;\n if (code >= 97) {\n val = code - 97 + 10; // a\n } else if (code >= 65) {\n val = code - 65 + 10; // A\n } else if (code >= 48 && code <= 57) {\n val = code - 48; // 0-9\n } else {\n val = Infinity;\n }\n if (val >= radix) break;\n ++tokPos;\n total = total * radix + val;\n }\n if (tokPos === start || (len !== undefined && tokPos - start !== len)) {\n return null;\n }\n return total;\n}\n\nfunction readHexNumber() {\n tokPos += 2; // 0x\n var val = readInt(16);\n if (val === null) {\n raise(tokStart + 2, \"Expected hexadecimal number\");\n }\n if (isIdentifierStart(input.charCodeAt(tokPos))) {\n raise(tokPos, \"Identifier directly after number\");\n }\n finishToken(_num, val);\n}\n\n/**\n * Read an integer, octal integer, or floating-point number.\n *\n * @param {boolean} startsWithDot\n */\nfunction readNumber(startsWithDot) {\n var start = tokPos;\n var isFloat = false;\n var octal = input.charCodeAt(tokPos) === 48;\n if (!startsWithDot && readInt(10) === null) {\n raise(start, \"Invalid number\");\n }\n if (input.charCodeAt(tokPos) === 46) {\n ++tokPos;\n readInt(10);\n isFloat = true;\n }\n var next = input.charCodeAt(tokPos);\n if (next === 69 || next === 101) {\n // 'eE'\n next = input.charCodeAt(++tokPos);\n if (next === 43 || next === 45) {\n ++tokPos; // '+-'\n }\n if (readInt(10) === null) {\n raise(start, \"Invalid number\");\n }\n isFloat = true;\n }\n if (isIdentifierStart(input.charCodeAt(tokPos))) {\n raise(tokPos, \"Identifier directly after number\");\n }\n\n var str = input.slice(start, tokPos);\n var val;\n if (isFloat) {\n val = parseFloat(str);\n } else if (!octal || str.length === 1) {\n val = parseInt(str, 10);\n } else if (/[89]/.test(str) || strict) {\n raise(start, \"Invalid number\");\n } else {\n val = parseInt(str, 8);\n }\n finishToken(_num, val);\n}\n\n/**\n * Read a string value, interpreting backslash-escapes.\n *\n * @param {number} quote\n */\nfunction readString(quote) {\n tokPos++;\n var out = \"\";\n for (;;) {\n if (tokPos >= inputLen) raise(tokStart, \"Unterminated string constant\");\n var ch = input.charCodeAt(tokPos);\n if (ch === quote) {\n ++tokPos;\n finishToken(_string, out);\n return;\n }\n if (ch === 92) {\n // '\\'\n ch = input.charCodeAt(++tokPos);\n var octal = /^[0-7]+/.exec(input.slice(tokPos, tokPos + 3));\n if (octal) {\n octal = octal[0];\n }\n while (octal && parseInt(octal, 8) > 255) {\n octal = octal.slice(0, -1);\n }\n if (octal === \"0\") {\n octal = null;\n }\n ++tokPos;\n if (octal) {\n if (strict) raise(tokPos - 2, \"Octal literal in strict mode\");\n out += String.fromCharCode(parseInt(octal, 8));\n tokPos += octal.length - 1;\n } else {\n switch (ch) {\n case 110:\n out += \"\\n\";\n break; // 'n' -> '\\n'\n case 114:\n out += \"\\r\";\n break; // 'r' -> '\\r'\n case 120:\n out += String.fromCharCode(readHexChar(2));\n break; // 'x'\n case 117:\n out += String.fromCharCode(readHexChar(4));\n break; // 'u'\n case 85:\n out += String.fromCharCode(readHexChar(8));\n break; // 'U'\n case 116:\n out += \"\\t\";\n break; // 't' -> '\\t'\n case 98:\n out += \"\\b\";\n break; // 'b' -> '\\b'\n case 118:\n out += \"\\u000b\";\n break; // 'v' -> '\\u000b'\n case 102:\n out += \"\\f\";\n break; // 'f' -> '\\f'\n case 48:\n out += \"\\0\";\n break; // 0 -> '\\0'\n case 13: // '\\r'\n if (input.charCodeAt(tokPos) === 10) {\n ++tokPos; // '\\r\\n'\n }\n case 10: // ' \\n'\n if (options.locations) {\n tokLineStart = tokPos;\n ++tokCurLine;\n }\n break;\n default:\n out += String.fromCharCode(ch);\n break;\n }\n }\n } else {\n if (ch === 13 || ch === 10 || ch === 8232 || ch === 8233) {\n raise(tokStart, \"Unterminated string constant\");\n }\n out += String.fromCharCode(ch); // '\\'\n ++tokPos;\n }\n }\n}\n\n/**\n * Used to read character escape sequences ('\\x', '\\u', '\\U').\n *\n * @param {number} len\n * @returns {number}\n */\nfunction readHexChar(len) {\n var n = readInt(16, len);\n if (n === null) raise(tokStart, \"Bad character escape sequence\");\n return /** @type {number} */ (n);\n}\n\n// Used to signal to callers of `readWord1` whether the word\n// contained any escape sequences. This is needed because words with\n// escape sequences must not be interpreted as keywords.\n\n/** @type {boolean|undefined} */\nvar containsEsc;\n\n/**\n * Read an identifier, and return it as a string. Sets `containsEsc`\n * to whether the word contained a '\\u' escape.\n *\n * Only builds up the word character-by-character when it actually\n * containeds an escape, as a micro-optimization.\n *\n * @returns {string|undefined}\n */\nfunction readWord1() {\n containsEsc = false;\n var word;\n var first = true;\n var start = tokPos;\n for (;;) {\n var ch = input.charCodeAt(tokPos);\n if (isIdentifierChar(ch)) {\n if (containsEsc) {\n word += input.charAt(tokPos);\n }\n ++tokPos;\n } else if (ch === 92) {\n // \"\\\"\n if (!containsEsc) {\n word = input.slice(start, tokPos);\n }\n containsEsc = true;\n if (input.charCodeAt(++tokPos) !== 117) {\n // \"u\"\n raise(tokPos, \"Expecting Unicode escape sequence \\\\uXXXX\");\n }\n ++tokPos;\n var esc = readHexChar(4);\n var escStr = String.fromCharCode(esc);\n if (!escStr) raise(tokPos - 1, \"Invalid Unicode escape\");\n if (!(first ? isIdentifierStart(esc) : isIdentifierChar(esc))) {\n raise(tokPos - 4, \"Invalid Unicode escape\");\n }\n word += escStr;\n } else {\n break;\n }\n first = false;\n }\n return containsEsc ? word : input.slice(start, tokPos);\n}\n\n/**\n * Read an identifier or keyword token. Will check for reserved\n * words when necessary.\n */\nfunction readWord() {\n var word = readWord1();\n var type = _name;\n if (!containsEsc && isKeyword(word)) {\n type = keywordTypes[word];\n }\n finishToken(type, word);\n}\n\n// ## Parser\n\n// A recursive descent parser operates by defining functions for all\n// syntactic elements, and recursively calling those, each function\n// advancing the input stream and returning an AST node. Precedence\n// of constructs (for example, the fact that `!x[1]` means `!(x[1])`\n// instead of `(!x)[1]` is handled by the fact that the parser\n// function that parses unary prefix operators is called first, and\n// in turn calls the function that parses `[]` subscripts — that\n// way, it'll receive the node for `x[1]` already parsed, and wraps\n// *that* in the unary operator node.\n//\n// Acorn uses an [operator precedence parser][opp] to handle binary\n// operator precedence, because it is much more compact than using\n// the technique outlined above, which uses different, nesting\n// functions to specify precedence, for all of the ten binary\n// precedence levels that JavaScript defines.\n//\n// [opp]: http://en.wikipedia.org/wiki/Operator-precedence_parser\n\n// ### Parser utilities\n\n/**\n * Continue to the next token.\n */\nfunction next() {\n lastStart = tokStart;\n lastEnd = tokEnd;\n lastEndLoc = tokEndLoc;\n readToken();\n}\n\n/**\n * Enter strict mode. Re-reads the next token to please pedantic\n * tests (\"use strict\"; 010; -- should fail).\n *\n * @param {boolean} strct\n */\nfunction setStrict(strct) {\n strict = strct;\n tokPos = tokStart;\n if (options.locations) {\n while (tokPos < tokLineStart) {\n tokLineStart = input.lastIndexOf(\"\\n\", tokLineStart - 2) + 1;\n --tokCurLine;\n }\n }\n skipSpace();\n readToken();\n}\n\n// Start an AST node, attaching a start offset.\n\n/**\n * @constructor\n */\nfunction node_t() {\n this.type = null;\n this.start = tokStart;\n this.end = null;\n}\n\n/**\n * @constructor\n */\nfunction node_loc_t() {\n this.start = tokStartLoc;\n this.end = null;\n if (sourceFile) {\n this.source = sourceFile;\n }\n}\n\n/**\n * @returns {!node_t}\n */\nfunction startNode() {\n var node = new node_t();\n if (options.locations) {\n node.loc = new node_loc_t();\n }\n if (options.directSourceFile) {\n node.sourceFile = options.directSourceFile;\n }\n if (options.ranges) {\n node.range = [tokStart, 0];\n }\n return node;\n}\n\n/**\n * Start a node whose start offset information should be based on\n * the start of another node. For example, a binary operator node is\n * only started after its left-hand side has already been parsed.\n *\n * @param {!node_t} other\n * @returns {!node_t}\n */\nfunction startNodeFrom(other) {\n var node = new node_t();\n node.start = other.start;\n if (options.locations) {\n node.loc = new node_loc_t();\n node.loc.start = other.loc.start;\n }\n if (options.ranges) {\n node.range = [other.range[0], 0];\n }\n return node;\n}\n\n/**\n * Finish an AST node, adding `type` and `end` properties.\n *\n * @param {!node_t} node\n * @param {string} type\n * @returns {!node_t}\n */\nfunction finishNode(node, type) {\n node.type = type;\n node.end = lastEnd;\n if (options.locations) {\n node.loc.end = lastEndLoc;\n }\n if (options.ranges) {\n node.range[1] = lastEnd;\n }\n return node;\n}\n\n/**\n * Test whether a statement node is the string literal `\"use strict\"`.\n *\n * @param {!node_t} stmt\n * @returns {boolean}\n */\nfunction isUseStrict(stmt) {\n return (\n stmt.type === \"ExpressionStatement\" &&\n stmt.expression.type === \"Literal\" &&\n stmt.expression.value === \"use strict\"\n );\n}\n\n/**\n * Predicate that tests whether the next token is of the given\n * type, and if yes, consumes it as a side effect.\n * @param {!Object} type\n * @returns {boolean}\n */\nfunction eat(type) {\n if (tokType === type) {\n next();\n return true;\n }\n return false;\n}\n\n/**\n * Test whether a semicolon can be inserted at the current position.\n *\n * @returns {boolean}\n */\nfunction canInsertSemicolon() {\n return (\n !options.strictSemicolons &&\n (tokType === _eof || tokType === _braceR || newline.test(input.slice(lastEnd, tokStart)))\n );\n}\n\n/**\n * Consume a semicolon, or, failing that, see if we are allowed to\n * pretend that there is a semicolon at this position.\n */\nfunction semicolon() {\n if (!eat(_semi) && !canInsertSemicolon()) {\n unexpected();\n }\n}\n\n/**\n * Expect a token of a given type. If found, consume it, otherwise,\n * raise an unexpected token error.\n *\n * @param {!Object} type\n */\nfunction expect(type) {\n if (tokType === type) {\n next();\n } else {\n unexpected();\n }\n}\n\n/**\n * Raise an unexpected token error.\n * @throws {SyntaxError}\n */\nfunction unexpected() {\n raise(tokStart, \"Unexpected token\");\n}\n\n/**\n * Verify that a node is an lval — something that can be assigned to.\n *\n * @param {!node_t} expr\n */\nfunction checkLVal(expr) {\n if (expr.type !== \"Identifier\" && expr.type !== \"MemberExpression\") {\n raise(expr.start, \"Assigning to rvalue\");\n }\n if (strict && expr.type === \"Identifier\" && isStrictBadIdWord(expr.name)) {\n raise(expr.start, \"Assigning to \" + expr.name + \" in strict mode\");\n }\n}\n\n// ### Statement parsing\n\n/**\n * Parse a program. Initializes the parser, reads any number of\n * statements, and wraps them in a Program node. Optionally takes a\n * `program` argument. If present, the statements will be appended\n * to its body instead of creating a new node.\n *\n * @param {node_t} program\n * @returns {!node_t}\n */\nfunction parseTopLevel(program) {\n lastStart = lastEnd = tokPos;\n if (options.locations) {\n lastEndLoc = new line_loc_t();\n }\n inFunction = strict = false;\n labels = [];\n readToken();\n\n var node = program || startNode();\n var first = true;\n if (!program) {\n node.body = [];\n }\n while (tokType !== _eof) {\n var stmt = parseStatement();\n node.body.push(stmt);\n if (first && isUseStrict(stmt)) {\n setStrict(true);\n }\n first = false;\n }\n return finishNode(node, \"Program\");\n}\n\nvar loopLabel = { kind: \"loop\" };\nvar switchLabel = { kind: \"switch\" };\n\n/**\n * Parse a single statement.\n *\n * If expecting a statement and finding a slash operator, parse a\n * regular expression literal. This is to handle cases like\n * `if (foo) /blah/.exec(foo);`, where looking at the previous token\n * does not help.\n *\n * @returns {!node_t}\n */\nfunction parseStatement() {\n if (tokType === _slash || (tokType === _assign && tokVal === \"/=\")) {\n readToken(true);\n }\n\n var starttype = tokType;\n var node = startNode();\n\n // Most types of statements are recognized by the keyword they\n // start with. Many are trivial to parse, some require a bit of\n // complexity.\n\n switch (starttype) {\n case _break:\n case _continue:\n next();\n var isBreak = starttype === _break;\n if (eat(_semi) || canInsertSemicolon()) {\n node.label = null;\n } else if (tokType !== _name) {\n unexpected();\n } else {\n node.label = parseIdent();\n semicolon();\n }\n\n // Verify that there is an actual destination to break or\n // continue to.\n for (var i = 0; i < labels.length; ++i) {\n var lab = labels[i];\n if (node.label === null || lab.name === node.label.name) {\n if (lab.kind !== null && (isBreak || lab.kind === \"loop\")) break;\n if (node.label && isBreak) break;\n }\n }\n if (i === labels.length) {\n raise(node.start, \"Unsyntactic \" + starttype.keyword);\n }\n return finishNode(node, isBreak ? \"BreakStatement\" : \"ContinueStatement\");\n\n case _debugger:\n next();\n semicolon();\n return finishNode(node, \"DebuggerStatement\");\n\n case _do:\n next();\n labels.push(loopLabel);\n node.body = parseStatement();\n labels.pop();\n expect(_while);\n node.test = parseParenExpression();\n semicolon();\n return finishNode(node, \"DoWhileStatement\");\n\n // Disambiguating between a `for` and a `for`/`in` loop is\n // non-trivial. Basically, we have to parse the init `var`\n // statement or expression, disallowing the `in` operator (see\n // the second parameter to `parseExpression`), and then check\n // whether the next token is `in`. When there is no init part\n // (semicolon immediately after the opening parenthesis), it is\n // a regular `for` loop.\n\n case _for:\n next();\n labels.push(loopLabel);\n expect(_parenL);\n if (tokType === _semi) return parseFor(node, null);\n if (tokType === _var) {\n var init = startNode();\n next();\n parseVar(init, true);\n finishNode(init, \"VariableDeclaration\");\n if (init.declarations.length === 1 && eat(_in)) return parseForIn(node, init);\n return parseFor(node, init);\n }\n var init = parseExpression(false, true);\n if (eat(_in)) {\n checkLVal(init);\n return parseForIn(node, init);\n }\n return parseFor(node, init);\n\n case _function:\n next();\n return parseFunction(node, true);\n\n case _if:\n next();\n node.test = parseParenExpression();\n node.consequent = parseStatement();\n node.alternate = eat(_else) ? parseStatement() : null;\n return finishNode(node, \"IfStatement\");\n\n case _return:\n if (!inFunction && !options.allowReturnOutsideFunction) {\n raise(tokStart, \"'return' outside of function\");\n }\n next();\n\n // In `return` (and `break`/`continue`), the keywords with\n // optional arguments, we eagerly look for a semicolon or the\n // possibility to insert one.\n\n if (eat(_semi) || canInsertSemicolon()) {\n node.argument = null;\n } else {\n node.argument = parseExpression();\n semicolon();\n }\n return finishNode(node, \"ReturnStatement\");\n\n case _switch:\n next();\n node.discriminant = parseParenExpression();\n node.cases = [];\n expect(_braceL);\n labels.push(switchLabel);\n\n // Statements under must be grouped (by label) in SwitchCase\n // nodes. `cur` is used to keep the node that we are currently\n // adding statements to.\n\n for (var cur, sawDefault; tokType !== _braceR; ) {\n if (tokType === _case || tokType === _default) {\n var isCase = tokType === _case;\n if (cur) {\n finishNode(cur, \"SwitchCase\");\n }\n node.cases.push((cur = startNode()));\n cur.consequent = [];\n next();\n if (isCase) {\n cur.test = parseExpression();\n } else {\n if (sawDefault) {\n raise(lastStart, \"Multiple default clauses\");\n }\n sawDefault = true;\n cur.test = null;\n }\n expect(_colon);\n } else {\n if (!cur) unexpected();\n cur.consequent.push(parseStatement());\n }\n }\n if (cur) finishNode(cur, \"SwitchCase\");\n next(); // Closing brace\n labels.pop();\n return finishNode(node, \"SwitchStatement\");\n\n case _throw:\n next();\n if (newline.test(input.slice(lastEnd, tokStart)))\n raise(lastEnd, \"Illegal newline after throw\");\n node.argument = parseExpression();\n semicolon();\n return finishNode(node, \"ThrowStatement\");\n\n case _try:\n next();\n node.block = parseBlock();\n node.handler = null;\n if (tokType === _catch) {\n var clause = startNode();\n next();\n expect(_parenL);\n clause.param = parseIdent();\n if (strict && isStrictBadIdWord(clause.param.name))\n raise(clause.param.start, \"Binding \" + clause.param.name + \" in strict mode\");\n expect(_parenR);\n // JS-Interpreter change:\n // Obsolete unused property; commenting out.\n // -- Neil Fraser, January 2023.\n // clause.guard = null;\n clause.body = parseBlock();\n node.handler = finishNode(clause, \"CatchClause\");\n }\n // JS-Interpreter change:\n // Obsolete unused property; commenting out.\n // -- Neil Fraser, January 2023.\n // node.guardedHandlers = empty;\n node.finalizer = eat(_finally) ? parseBlock() : null;\n if (!node.handler && !node.finalizer) raise(node.start, \"Missing catch or finally clause\");\n return finishNode(node, \"TryStatement\");\n\n case _var:\n next();\n parseVar(node);\n semicolon();\n return finishNode(node, \"VariableDeclaration\");\n\n case _while:\n next();\n node.test = parseParenExpression();\n labels.push(loopLabel);\n node.body = parseStatement();\n labels.pop();\n return finishNode(node, \"WhileStatement\");\n\n case _with:\n if (strict) raise(tokStart, \"'with' in strict mode\");\n next();\n node.object = parseParenExpression();\n node.body = parseStatement();\n return finishNode(node, \"WithStatement\");\n\n case _braceL:\n return parseBlock();\n\n case _semi:\n next();\n return finishNode(node, \"EmptyStatement\");\n\n // If the statement does not start with a statement keyword or a\n // brace, it's an ExpressionStatement or LabeledStatement. We\n // simply start parsing an expression, and afterwards, if the\n // next token is a colon and the expression was a simple\n // Identifier node, we switch to interpreting it as a label.\n default:\n var maybeName = tokVal;\n var expr = parseExpression();\n if (starttype === _name && expr.type === \"Identifier\" && eat(_colon)) {\n for (var i = 0; i < labels.length; ++i) {\n if (labels[i].name === maybeName) {\n raise(expr.start, \"Label '\" + maybeName + \"' is already declared\");\n }\n }\n var kind = tokType.isLoop ? \"loop\" : tokType === _switch ? \"switch\" : null;\n labels.push({ name: maybeName, kind: kind });\n node.body = parseStatement();\n labels.pop();\n node.label = expr;\n return finishNode(node, \"LabeledStatement\");\n } else {\n node.expression = expr;\n semicolon();\n return finishNode(node, \"ExpressionStatement\");\n }\n }\n}\n\n/**\n * Used for constructs like `switch` and `if` that insist on\n * parentheses around their expression.\n *\n * @returns {!node_t}\n */\nfunction parseParenExpression() {\n expect(_parenL);\n var val = parseExpression();\n expect(_parenR);\n return val;\n}\n\n/**\n * Parse a semicolon-enclosed block of statements, handling `\"use\n * strict\"` declarations when `allowStrict` is true (used for\n * function bodies).\n *\n * @param {boolean=} allowStrict\n * @returns {!node_t}\n */\nfunction parseBlock(allowStrict) {\n var node = startNode();\n var first = true;\n var strict = false;\n var oldStrict;\n node.body = [];\n expect(_braceL);\n while (!eat(_braceR)) {\n var stmt = parseStatement();\n node.body.push(stmt);\n if (first && allowStrict && isUseStrict(stmt)) {\n oldStrict = strict;\n setStrict((strict = true));\n }\n first = false;\n }\n if (strict && !oldStrict) setStrict(false);\n return finishNode(node, \"BlockStatement\");\n}\n\n/**\n * Parse a regular `for` loop. The disambiguation code in `parseStatement`\n * will already have parsed the init statement or expression.\n *\n * @param {!node_t} node\n * @param {node_t} init\n * @returns {!node_t}\n */\nfunction parseFor(node, init) {\n node.init = init;\n expect(_semi);\n node.test = tokType === _semi ? null : parseExpression();\n expect(_semi);\n node.update = tokType === _parenR ? null : parseExpression();\n expect(_parenR);\n node.body = parseStatement();\n labels.pop();\n return finishNode(node, \"ForStatement\");\n}\n\n/**\n * Parse a `for`/`in` loop.\n *\n * @param {!node_t} node\n * @param {!node_t} init\n * @returns {!node_t}\n */\nfunction parseForIn(node, init) {\n node.left = init;\n node.right = parseExpression();\n expect(_parenR);\n node.body = parseStatement();\n labels.pop();\n return finishNode(node, \"ForInStatement\");\n}\n\n/**\n * Parse a list of variable declarations.\n *\n * @param {!node_t} node\n * @param {boolean=} noIn\n */\nfunction parseVar(node, noIn) {\n node.declarations = [];\n node.kind = \"var\";\n for (;;) {\n var decl = startNode();\n decl.id = parseIdent();\n if (strict && isStrictBadIdWord(decl.id.name))\n raise(decl.id.start, \"Binding \" + decl.id.name + \" in strict mode\");\n decl.init = eat(_eq) ? parseExpression(true, noIn) : null;\n node.declarations.push(finishNode(decl, \"VariableDeclarator\"));\n if (!eat(_comma)) break;\n }\n}\n\n// ### Expression parsing\n\n// These nest, from the most general expression type at the top to\n// 'atomic', nondivisible expression types at the bottom. Most of\n// the functions will simply var the function(s) below them parse,\n// and, *if* the syntactic construct they handle is present, wrap\n// the AST node that the inner parser gave them in another node.\n\n/**\n * Parse a full expression. The arguments are used to forbid comma\n * sequences (in argument lists, array literals, or object literals)\n * or the `in` operator (in for loops initalization expressions).\n *\n * @param {boolean=} noComma\n * @param {boolean=} noIn\n * @returns {!node_t}\n */\nfunction parseExpression(noComma, noIn) {\n var expr = parseMaybeAssign(noIn);\n if (!noComma && tokType === _comma) {\n var node = startNodeFrom(expr);\n node.expressions = [expr];\n while (eat(_comma)) node.expressions.push(parseMaybeAssign(noIn));\n return finishNode(node, \"SequenceExpression\");\n }\n return expr;\n}\n\n/**\n * Parse an assignment expression. This includes applications of\n * operators like `+=`.\n *\n * @param {boolean|undefined} noIn\n * @returns {!node_t}\n */\nfunction parseMaybeAssign(noIn) {\n var left = parseMaybeConditional(noIn);\n if (tokType.isAssign) {\n var node = startNodeFrom(left);\n node.operator = tokVal;\n node.left = left;\n next();\n node.right = parseMaybeAssign(noIn);\n checkLVal(left);\n return finishNode(node, \"AssignmentExpression\");\n }\n return left;\n}\n\n/**\n * Parse a ternary conditional (`?:`) operator.\n *\n * @param {boolean|undefined} noIn\n * @returns {!node_t}\n */\nfunction parseMaybeConditional(noIn) {\n var expr = parseExprOps(noIn);\n if (eat(_question)) {\n var node = startNodeFrom(expr);\n node.test = expr;\n node.consequent = parseExpression(true);\n expect(_colon);\n node.alternate = parseExpression(true, noIn);\n return finishNode(node, \"ConditionalExpression\");\n }\n return expr;\n}\n\n/**\n * Start the precedence parser.\n *\n * @param {boolean|undefined} noIn\n * @returns {!node_t}\n */\nfunction parseExprOps(noIn) {\n return parseExprOp(parseMaybeUnary(), -1, noIn);\n}\n\n/**\n * Parse binary operators with the operator precedence parsing\n * algorithm. `left` is the left-hand side of the operator.\n * `minPrec` provides context that allows the function to stop and\n * defer further parser to one of its callers when it encounters an\n * operator that has a lower precedence than the set it is parsing.\n *\n * @param {!node_t} left\n * @param {number} minPrec\n * @param {boolean|undefined} noIn\n * @returns {!node_t}\n */\nfunction parseExprOp(left, minPrec, noIn) {\n var prec = tokType.binop;\n if (prec !== null && (!noIn || tokType !== _in)) {\n if (prec > minPrec) {\n var node = startNodeFrom(left);\n node.left = left;\n node.operator = tokVal;\n var op = tokType;\n next();\n node.right = parseExprOp(parseMaybeUnary(), prec, noIn);\n var exprNode = finishNode(\n node,\n op === _logicalOR || op === _logicalAND ? \"LogicalExpression\" : \"BinaryExpression\"\n );\n return parseExprOp(exprNode, minPrec, noIn);\n }\n }\n return left;\n}\n\n/**\n * Parse unary operators, both prefix and postfix.\n *\n * @returns {!node_t}\n */\nfunction parseMaybeUnary() {\n if (tokType.prefix) {\n var node = startNode();\n var update = tokType.isUpdate;\n node.operator = tokVal;\n node.prefix = true;\n tokRegexpAllowed = true;\n next();\n node.argument = parseMaybeUnary();\n if (update) checkLVal(node.argument);\n else if (strict && node.operator === \"delete\" && node.argument.type === \"Identifier\")\n raise(node.start, \"Deleting local variable in strict mode\");\n return finishNode(node, update ? \"UpdateExpression\" : \"UnaryExpression\");\n }\n var expr = parseExprSubscripts();\n while (tokType.postfix && !canInsertSemicolon()) {\n var node = startNodeFrom(expr);\n node.operator = tokVal;\n node.prefix = false;\n node.argument = expr;\n checkLVal(expr);\n next();\n expr = finishNode(node, \"UpdateExpression\");\n }\n return expr;\n}\n\n/**\n * Parse call, dot, and `[]`-subscript expressions.\n *\n * @returns {!node_t}\n */\nfunction parseExprSubscripts() {\n return parseSubscripts(parseExprAtom());\n}\n\n/**\n * @param {!node_t} base\n * @param {boolean=} noCalls\n * @returns {!node_t}\n */\nfunction parseSubscripts(base, noCalls) {\n var node;\n if (eat(_dot)) {\n node = startNodeFrom(base);\n node.object = base;\n node.property = parseIdent(true);\n node.computed = false;\n return parseSubscripts(finishNode(node, \"MemberExpression\"), noCalls);\n }\n if (eat(_bracketL)) {\n node = startNodeFrom(base);\n node.object = base;\n node.property = parseExpression();\n node.computed = true;\n expect(_bracketR);\n return parseSubscripts(finishNode(node, \"MemberExpression\"), noCalls);\n }\n if (!noCalls && eat(_parenL)) {\n node = startNodeFrom(base);\n node.callee = base;\n node.arguments = parseExprList(_parenR, false);\n return parseSubscripts(finishNode(node, \"CallExpression\"), noCalls);\n }\n return base;\n}\n\n/**\n * Parse an atomic expression — either a single token that is an expression,\n * an expression started by a keyword like `function` or `new`,\n * or an expression wrapped in punctuation like `()`, `[]`, or `{}`.\n *\n * @returns {!node_t}\n * @suppress {missingReturn}\n */\nfunction parseExprAtom() {\n var node;\n switch (tokType) {\n case _this:\n node = startNode();\n next();\n return finishNode(node, \"ThisExpression\");\n case _name:\n return parseIdent();\n case _num:\n case _string:\n case _regexp:\n node = startNode();\n node.value = tokVal;\n node.raw = input.slice(tokStart, tokEnd);\n next();\n return finishNode(node, \"Literal\");\n\n case _null:\n case _true:\n case _false:\n node = startNode();\n node.value = tokType.atomValue;\n node.raw = tokType.keyword;\n next();\n return finishNode(node, \"Literal\");\n\n case _parenL:\n var tokStartLoc1 = tokStartLoc;\n var tokStart1 = tokStart;\n next();\n var val = parseExpression();\n val.start = tokStart1;\n val.end = tokEnd;\n if (options.locations) {\n val.loc.start = tokStartLoc1;\n val.loc.end = tokEndLoc;\n }\n if (options.ranges) {\n val.range = [tokStart1, tokEnd];\n }\n expect(_parenR);\n return val;\n\n case _bracketL:\n node = startNode();\n next();\n node.elements = parseExprList(_bracketR, true, true);\n return finishNode(node, \"ArrayExpression\");\n\n case _braceL:\n return parseObj();\n\n case _function:\n node = startNode();\n next();\n return parseFunction(node, false);\n\n case _new:\n return parseNew();\n }\n unexpected();\n}\n\n/**\n * New's precedence is slightly tricky. It must allow its argument to be\n * a `[]` or dot subscript expression, but not a call — at least, not\n * without wrapping it in parentheses. Thus, it uses the noCalls argument\n * to parseSubscripts to prevent it from consuming the argument list.\n *\n * @returns {!node_t}\n */\nfunction parseNew() {\n var node = startNode();\n next();\n node.callee = parseSubscripts(parseExprAtom(), true);\n node.arguments = eat(_parenL) ? parseExprList(_parenR, false) : empty;\n return finishNode(node, \"NewExpression\");\n}\n\n/**\n * Parse an object literal.\n *\n * @returns {!node_t}\n */\nfunction parseObj() {\n var node = startNode();\n var first = true;\n var sawGetSet = false;\n node.properties = [];\n next();\n while (!eat(_braceR)) {\n if (!first) {\n expect(_comma);\n if (options.allowTrailingCommas && eat(_braceR)) {\n break;\n }\n } else {\n first = false;\n }\n\n var prop = { key: parsePropertyName() };\n var isGetSet = false;\n var kind;\n if (eat(_colon)) {\n prop.value = parseExpression(true);\n kind = prop.kind = \"init\";\n } else if (\n prop.key.type === \"Identifier\" &&\n (prop.key.name === \"get\" || prop.key.name === \"set\")\n ) {\n isGetSet = sawGetSet = true;\n kind = prop.kind = prop.key.name;\n prop.key = parsePropertyName();\n if (tokType !== _parenL) unexpected();\n prop.value = parseFunction(startNode(), false);\n } else {\n unexpected();\n }\n\n // getters and setters are not allowed to clash — either with\n // each other or with an init property — and in strict mode,\n // init properties are also not allowed to be repeated.\n\n if (prop.key.type === \"Identifier\" && (strict || sawGetSet)) {\n for (var i = 0; i < node.properties.length; ++i) {\n var other = node.properties[i];\n if (other.key.name === prop.key.name) {\n var conflict =\n kind === other.kind ||\n (isGetSet && other.kind === \"init\") ||\n (kind === \"init\" && (other.kind === \"get\" || other.kind === \"set\"));\n if (conflict && !strict && kind === \"init\" && other.kind === \"init\") {\n conflict = false;\n }\n if (conflict) {\n raise(prop.key.start, \"Redefinition of property\");\n }\n }\n }\n }\n node.properties.push(prop);\n }\n return finishNode(node, \"ObjectExpression\");\n}\n\n/**\n * @returns {!node_t}\n */\nfunction parsePropertyName() {\n if (tokType === _num || tokType === _string) {\n return parseExprAtom();\n }\n return parseIdent(true);\n}\n\n/**\n * Parse a function declaration or literal (depending on the\n * `isStatement` parameter).\n *\n * @param {!node_t} node\n * @param {boolean} isStatement\n * @returns {!node_t}\n */\nfunction parseFunction(node, isStatement) {\n if (tokType === _name) {\n node.id = parseIdent();\n } else if (isStatement) {\n unexpected();\n } else {\n node.id = null;\n }\n node.params = [];\n var first = true;\n expect(_parenL);\n while (!eat(_parenR)) {\n if (!first) {\n expect(_comma);\n } else {\n first = false;\n }\n node.params.push(parseIdent());\n }\n\n // Start a new scope with regard to labels and the `inFunction`\n // flag (restore them to their old value afterwards).\n var oldInFunc = inFunction;\n var oldLabels = labels;\n inFunction = true;\n labels = [];\n node.body = parseBlock(true);\n inFunction = oldInFunc;\n labels = oldLabels;\n\n // If this is a strict mode function, verify that argument names\n // are not repeated, and it does not try to bind the words `eval`\n // or `arguments`.\n if (strict || (node.body.body.length && isUseStrict(node.body.body[0]))) {\n for (var i = node.id ? -1 : 0; i < node.params.length; ++i) {\n var id = i < 0 ? node.id : node.params[i];\n if (isStrictReservedWord(id.name) || isStrictBadIdWord(id.name)) {\n raise(id.start, \"Defining '\" + id.name + \"' in strict mode\");\n }\n if (i >= 0) {\n for (var j = 0; j < i; ++j) {\n if (id.name === node.params[j].name) {\n raise(id.start, \"Argument name clash in strict mode\");\n }\n }\n }\n }\n }\n\n return finishNode(node, isStatement ? \"FunctionDeclaration\" : \"FunctionExpression\");\n}\n\n/**\n * Parses a comma-separated list of expressions, and returns them as\n * an array. `close` is the token type that ends the list, and\n * `allowEmpty` can be turned on to allow subsequent commas with\n * nothing in between them to be parsed as `null` (which is needed\n * for array literals).\n *\n * @param {!Object} close\n * @param {boolean} allowTrailingComma\n * @param {boolean=} allowEmpty\n * @returns {!Array<!node_t>}\n */\nfunction parseExprList(close, allowTrailingComma, allowEmpty) {\n var elts = [];\n var first = true;\n while (!eat(close)) {\n if (!first) {\n expect(_comma);\n if (allowTrailingComma && options.allowTrailingCommas && eat(close)) {\n break;\n }\n } else {\n first = false;\n }\n\n elts.push(allowEmpty && tokType === _comma ? null : parseExpression(true));\n }\n return elts;\n}\n\n/**\n * Parse the next token as an identifier. If `liberal` is true (used\n * when parsing properties), it will also convert keywords into\n * identifiers.\n *\n * @param {boolean=} liberal\n * @returns {!node_t}\n */\nfunction parseIdent(liberal) {\n var node = startNode();\n if (liberal && options.forbidReserved === \"everywhere\") {\n liberal = false;\n }\n if (tokType === _name) {\n if (\n !liberal &&\n ((options.forbidReserved && isReservedWord5(tokVal)) ||\n (strict && isStrictReservedWord(tokVal))) &&\n input.slice(tokStart, tokEnd).indexOf(\"\\\\\") === -1\n ) {\n raise(tokStart, \"The keyword '\" + tokVal + \"' is reserved\");\n }\n node.name = tokVal;\n } else if (liberal && tokType.keyword) {\n node.name = tokType.keyword;\n } else {\n unexpected();\n }\n tokRegexpAllowed = false;\n next();\n return finishNode(node, \"Identifier\");\n}\n\nexport { version, parse };\n",
14
14
  "/**\n * @license\n * Copyright 2013 Google LLC\n * SPDX-License-Identifier: Apache-2.0\n */\n\n/**\n * @fileoverview Interpreting JavaScript in JavaScript.\n * @author fraser@google.com (Neil Fraser)\n */\nimport * as acorn from \"./acorn\";\n\n/**\n * Create a new interpreter.\n * @param {string|!Object} code Raw JavaScript text or AST.\n * @param {Function=} opt_initFunc Optional initialization function. Used to\n * define APIs. When called it is passed the interpreter object and the\n * global scope object.\n * @type Class\n */\nvar Interpreter = function (code, opt_initFunc) {\n if (typeof code === \"string\") {\n code = this.parse_(code, \"code\");\n }\n // Get a handle on Acorn's node_t object.\n var nodeConstructor = code.constructor;\n this.newNode = function () {\n return new nodeConstructor({ options: {} });\n };\n // Clone the root 'Program' node so that the AST may be modified.\n var ast = this.newNode();\n for (var prop in code) {\n ast[prop] = prop === \"body\" ? code[prop].slice() : code[prop];\n }\n this.ast = ast;\n /**\n * Sorted array of setTimeout/setInterval tasks waiting to execute.\n */\n this.tasks = [];\n this.initFunc_ = opt_initFunc;\n /**\n * True if the interpreter is paused while waiting for an async function.\n */\n this.paused_ = false;\n this.polyfills_ = [];\n // Unique identifier for native functions. Used in serialization.\n this.functionCounter_ = 0;\n // Map node types to our step function names; a property lookup is faster\n // than string concatenation with \"step\" prefix.\n this.stepFunctions_ = Object.create(null);\n var stepMatch = /^step([A-Z]\\w*)$/;\n var m;\n for (var methodName in this) {\n if (typeof this[methodName] === \"function\" && (m = methodName.match(stepMatch))) {\n this.stepFunctions_[m[1]] = this[methodName].bind(this);\n }\n }\n // Create and initialize the global scope.\n this.globalScope = this.createScope(this.ast, null);\n this.globalObject = this.globalScope.object;\n // Run the polyfills.\n this.ast = this.parse_(this.polyfills_.join(\"\\n\"), \"polyfills\");\n this.polyfills_ = undefined; // Allow polyfill strings to garbage collect.\n Interpreter.stripLocations_(this.ast, undefined, undefined);\n var state = new Interpreter.State(this.ast, this.globalScope);\n state.done = false;\n this.stateStack = [state];\n this.run();\n this.value = undefined;\n // Point at the main program.\n this.ast = ast;\n state = new Interpreter.State(this.ast, this.globalScope);\n state.done = false;\n this.stateStack.length = 0;\n this.stateStack[0] = state;\n};\n\n/**\n * Completion Value Types.\n * @enum {number}\n */\nInterpreter.Completion = {\n NORMAL: 0,\n BREAK: 1,\n CONTINUE: 2,\n RETURN: 3,\n THROW: 4,\n};\n\n/**\n * Interpreter status values.\n * @enum {number}\n */\nInterpreter.Status = {\n DONE: 0,\n STEP: 1,\n TASK: 2,\n ASYNC: 3,\n};\n\n/**\n * @const {!Object} Configuration used for all Acorn parsing.\n */\nInterpreter.PARSE_OPTIONS = {\n locations: true,\n ecmaVersion: 5, // Needed in the event a version > 0.5.0 of Acorn is used.\n};\n\n/**\n * Property descriptor of readonly properties.\n */\nInterpreter.READONLY_DESCRIPTOR = {\n configurable: true,\n enumerable: true,\n writable: false,\n};\n\n/**\n * Property descriptor of non-enumerable properties.\n */\nInterpreter.NONENUMERABLE_DESCRIPTOR = {\n configurable: true,\n enumerable: false,\n writable: true,\n};\n\n/**\n * Property descriptor of readonly, non-enumerable properties.\n */\nInterpreter.READONLY_NONENUMERABLE_DESCRIPTOR = {\n configurable: true,\n enumerable: false,\n writable: false,\n};\n\n/**\n * Property descriptor of non-configurable, readonly, non-enumerable properties.\n * E.g. NaN, Infinity.\n */\nInterpreter.NONCONFIGURABLE_READONLY_NONENUMERABLE_DESCRIPTOR = {\n configurable: false,\n enumerable: false,\n writable: false,\n};\n\n/**\n * Property descriptor of variables.\n */\nInterpreter.VARIABLE_DESCRIPTOR = {\n configurable: false,\n enumerable: true,\n writable: true,\n};\n\n/**\n * Unique symbol for indicating that a step has encountered an error, has\n * added it to the stack, and will be thrown within the user's program.\n * When STEP_ERROR is thrown in the JS-Interpreter, the error can be ignored.\n */\nInterpreter.STEP_ERROR = { STEP_ERROR: true };\n\n/**\n * Unique symbol for indicating that a reference is a variable on the scope,\n * not an object property.\n */\nInterpreter.SCOPE_REFERENCE = { SCOPE_REFERENCE: true };\n\n/**\n * Unique symbol for indicating, when used as the value of the value\n * parameter in calls to setProperty and friends, that the value\n * should be taken from the property descriptor instead.\n */\nInterpreter.VALUE_IN_DESCRIPTOR = /** @type {!Interpreter.Value} */ ({\n VALUE_IN_DESCRIPTOR: true,\n});\n\n/**\n * Unique symbol for indicating that a RegExp timeout has occurred in a VM.\n */\nInterpreter.REGEXP_TIMEOUT = { REGEXP_TIMEOUT: true };\n\n/**\n * For cycle detection in array to string and error conversion;\n * see spec bug github.com/tc39/ecma262/issues/289\n * Since this is for atomic actions only, it can be a class property.\n */\nInterpreter.toStringCycles_ = [];\n\n/**\n * Node's vm module, if loaded and required.\n * @type {Object}\n */\nInterpreter.vm = null;\n\n/**\n * Currently executing interpreter. Needed so Interpreter.Object instances\n * can know their environment.\n * @type {Interpreter}\n */\nInterpreter.currentInterpreter_ = null;\n\n/**\n * The global object (`window` in a browser, `global` in node.js) is usually\n * `globalThis`, but older systems use `this`.\n */\nInterpreter.nativeGlobal = typeof globalThis === \"undefined\" ? this : globalThis;\n\n/**\n * Code for executing regular expressions in a thread.\n */\nInterpreter.WORKER_CODE = [\n \"onmessage = function(e) {\",\n \"var result;\",\n \"var data = e.data;\",\n \"switch (data[0]) {\",\n \"case 'split':\",\n // ['split', string, separator, limit]\n \"result = data[1].split(data[2], data[3]);\",\n \"break;\",\n \"case 'match':\",\n // ['match', string, regexp]\n \"result = data[1].match(data[2]);\",\n \"break;\",\n \"case 'search':\",\n // ['search', string, regexp]\n \"result = data[1].search(data[2]);\",\n \"break;\",\n \"case 'replace':\",\n // ['replace', string, regexp, newSubstr]\n \"result = data[1].replace(data[2], data[3]);\",\n \"break;\",\n \"case 'exec':\",\n // ['exec', regexp, lastIndex, string]\n \"var regexp = data[1];\",\n \"regexp.lastIndex = data[2];\",\n \"result = [regexp.exec(data[3]), data[1].lastIndex];\",\n \"break;\",\n \"default:\",\n \"throw Error('Unknown RegExp operation: ' + data[0]);\",\n \"}\",\n \"postMessage(result);\",\n \"close();\",\n \"};\",\n];\n\n/**\n * Is a value a legal integer for an array length?\n * @param {Interpreter.Value} x Value to check.\n * @returns {number} Zero, or a positive integer if the value can be\n * converted to such. NaN otherwise.\n */\nInterpreter.legalArrayLength = function (x) {\n var n = x >>> 0;\n // Array length must be between 0 and 2^32-1 (inclusive).\n return n === Number(x) ? n : NaN;\n};\n\n/**\n * Is a value a legal integer for an array index?\n * @param {Interpreter.Value} x Value to check.\n * @returns {number} Zero, or a positive integer if the value can be\n * converted to such. NaN otherwise.\n */\nInterpreter.legalArrayIndex = function (x) {\n var n = x >>> 0;\n // Array index cannot be 2^32-1, otherwise length would be 2^32.\n // 0xffffffff is 2^32-1.\n return String(n) === String(x) && n !== 0xffffffff ? n : NaN;\n};\n\n/**\n * Remove start and end values from AST, or set start and end values to a\n * constant value. Used to remove highlighting from polyfills and to set\n * highlighting in an eval to cover the entire eval expression.\n * @param {!Object} node AST node.\n * @param {number=} start Starting character of all nodes, or undefined.\n * @param {number=} end Ending character of all nodes, or undefined.\n * @private\n */\nInterpreter.stripLocations_ = function (node, start, end) {\n if (start) {\n node.start = start;\n } else {\n delete node.start;\n }\n if (end) {\n node.end = end;\n } else {\n delete node.end;\n }\n for (var name in node) {\n if (name !== \"loc\" && node.hasOwnProperty(name)) {\n var prop = node[name];\n if (prop && typeof prop === \"object\") {\n Interpreter.stripLocations_(/** @type {!Object} */ (prop), start, end);\n }\n }\n }\n};\n\n/**\n * Some pathological regular expressions can take geometric time.\n * Regular expressions are handled in one of three ways:\n * 0 - throw as invalid.\n * 1 - execute natively (risk of unresponsive program).\n * 2 - execute in separate thread (not supported by IE 9).\n */\nInterpreter.prototype[\"REGEXP_MODE\"] = 2;\n\n/**\n * If REGEXP_MODE = 2, the length of time (in ms) to allow a RegExp\n * thread to execute before terminating it.\n */\nInterpreter.prototype[\"REGEXP_THREAD_TIMEOUT\"] = 1000;\n\n/**\n * Length of time (in ms) to allow a polyfill to run before ending step.\n * If set to 0, polyfills will execute step by step.\n * If set to 1000, polyfills will run for up to a second per step\n * (execution will resume in the polyfill in the next step).\n * If set to Infinity, polyfills will run to completion in a single step.\n */\nInterpreter.prototype[\"POLYFILL_TIMEOUT\"] = 1000;\n\n/**\n * Flag indicating that a getter function needs to be called immediately.\n * @private\n */\nInterpreter.prototype.getterStep_ = false;\n\n/**\n * Flag indicating that a setter function needs to be called immediately.\n * @private\n */\nInterpreter.prototype.setterStep_ = false;\n\n/**\n * Number of code chunks appended to the interpreter.\n * @private\n */\nInterpreter.prototype.appendCodeNumber_ = 0;\n\n/**\n * Number of parsed tasks.\n * @private\n */\nInterpreter.prototype.taskCodeNumber_ = 0;\n\n/**\n * Parse JavaScript code into an AST using Acorn.\n * @param {string} code Raw JavaScript text.\n * @param {string} sourceFile Name of filename (for stack trace).\n * @returns {!Object} AST.\n * @private\n */\nInterpreter.prototype.parse_ = function (code, sourceFile) {\n // Create a new options object, since Acorn will modify this object.\n // Inheritance can't be used since Acorn uses hasOwnProperty.\n // Object.assign can't be used since that's ES6.\n var options = {};\n for (var name in Interpreter.PARSE_OPTIONS) {\n options[name] = Interpreter.PARSE_OPTIONS[name];\n }\n options.sourceFile = sourceFile;\n return acorn.parse(code, options);\n};\n\n/**\n * Add more code to the interpreter.\n * @param {string|!Object} code Raw JavaScript text or AST.\n */\nInterpreter.prototype.appendCode = function (code) {\n var state = this.stateStack[0];\n if (!state || state.node.type !== \"Program\") {\n throw Error(\"Expecting original AST to start with a Program node\");\n }\n if (typeof code === \"string\") {\n code = this.parse_(code, \"appendCode\" + this.appendCodeNumber_++);\n }\n if (!code || code.type !== \"Program\") {\n throw Error(\"Expecting new AST to start with a Program node\");\n }\n this.populateScope_(code, state.scope);\n // Append the new program to the old one.\n Array.prototype.push.apply(state.node.body, code.body);\n state.node.body.variableCache_ = null;\n state.done = false;\n};\n\n/**\n * Execute one step of the interpreter.\n * @returns {boolean} True if a step was executed, false if no more instructions.\n */\nInterpreter.prototype.step = function () {\n var stack = this.stateStack;\n var endTime;\n do {\n var state = stack[stack.length - 1];\n if (this.paused_) {\n // Blocked by an asynchronous function.\n return true;\n } else if (!state || (state.node.type === \"Program\" && state.done)) {\n if (!this.tasks.length) {\n // Main program complete and no queued tasks. We're done!\n return false;\n }\n state = this.nextTask_();\n if (!state) {\n // Main program complete, queued tasks, but nothing to run right now.\n return true;\n }\n // Found a queued task, execute it.\n }\n var node = state.node;\n // Record the interpreter in a global property so calls to toString/valueOf\n // can execute in the proper context.\n var oldInterpreterValue = Interpreter.currentInterpreter_;\n Interpreter.currentInterpreter_ = this;\n try {\n var nextState = this.stepFunctions_[node.type](stack, state, node);\n } catch (e) {\n // Eat any step errors. They have been thrown on the stack.\n if (e !== Interpreter.STEP_ERROR) {\n // This is a real error, either in the JS-Interpreter, or an uncaught\n // error in the interpreted code. Rethrow.\n if (this.value !== e) {\n // Uh oh. Internal error in the JS-Interpreter.\n this.value = undefined;\n }\n throw e;\n }\n } finally {\n // Restore to previous value (probably null, maybe nested toString calls).\n Interpreter.currentInterpreter_ = oldInterpreterValue;\n }\n if (nextState) {\n stack.push(nextState);\n }\n if (this.getterStep_) {\n // Getter from this step was not handled.\n this.value = undefined;\n throw Error(\"Getter not supported in this context\");\n }\n if (this.setterStep_) {\n // Setter from this step was not handled.\n this.value = undefined;\n throw Error(\"Setter not supported in this context\");\n }\n // This may be polyfill code. Keep executing until we arrive at user code.\n if (!endTime && !node.end) {\n // Ideally this would be defined at the top of the function, but that\n // wastes time if the step isn't a polyfill.\n endTime = Date.now() + this[\"POLYFILL_TIMEOUT\"];\n }\n } while (!node.end && endTime > Date.now());\n return true;\n};\n\n/**\n * Execute the interpreter to program completion. Vulnerable to infinite loops.\n * @returns {boolean} True if a execution is asynchronously blocked,\n * false if no more instructions.\n */\nInterpreter.prototype.run = function () {\n while (!this.paused_ && this.step()) {}\n return this.paused_;\n};\n\n/**\n * Current status of the interpreter.\n * @returns {Interpreter.Status} One of DONE, STEP, TASK, or ASYNC.\n */\nInterpreter.prototype.getStatus = function () {\n if (this.paused_) {\n return Interpreter.Status[\"ASYNC\"];\n }\n var stack = this.stateStack;\n var state = stack[stack.length - 1];\n if (state && (state.node.type !== \"Program\" || !state.done)) {\n // There's a step ready to execute.\n return Interpreter.Status[\"STEP\"];\n }\n var task = this.tasks[0];\n if (task) {\n if (task.time > Date.now()) {\n // There's a pending task, but it's not ready.\n return Interpreter.Status[\"TASK\"];\n }\n // There's a task ready to execute.\n return Interpreter.Status[\"STEP\"];\n }\n return Interpreter.Status[\"DONE\"];\n};\n\n/**\n * Initialize the global object with built-in properties and functions.\n * @param {!Interpreter.Object} globalObject Global object.\n */\nInterpreter.prototype.initGlobal = function (globalObject) {\n // Initialize uneditable global properties.\n this.setProperty(\n globalObject,\n \"NaN\",\n NaN,\n Interpreter.NONCONFIGURABLE_READONLY_NONENUMERABLE_DESCRIPTOR\n );\n this.setProperty(\n globalObject,\n \"Infinity\",\n Infinity,\n Interpreter.NONCONFIGURABLE_READONLY_NONENUMERABLE_DESCRIPTOR\n );\n this.setProperty(\n globalObject,\n \"undefined\",\n undefined,\n Interpreter.NONCONFIGURABLE_READONLY_NONENUMERABLE_DESCRIPTOR\n );\n this.setProperty(globalObject, \"window\", globalObject, Interpreter.READONLY_DESCRIPTOR);\n this.setProperty(\n globalObject,\n \"this\",\n globalObject,\n Interpreter.NONCONFIGURABLE_READONLY_NONENUMERABLE_DESCRIPTOR\n );\n this.setProperty(globalObject, \"self\", globalObject); // Editable.\n\n // Create the objects which will become Object.prototype and\n // Function.prototype, which are needed to bootstrap everything else.\n this.OBJECT_PROTO = new Interpreter.Object(null);\n this.FUNCTION_PROTO = new Interpreter.Object(this.OBJECT_PROTO);\n // Initialize global objects.\n this.initFunction(globalObject);\n this.initObject(globalObject);\n // Unable to set globalObject's parent prior (OBJECT did not exist).\n // Note that in a browser this would be `Window`, whereas in Node.js it would\n // be `Object`. This interpreter is closer to Node in that it has no DOM.\n globalObject.proto = this.OBJECT_PROTO;\n this.setProperty(globalObject, \"constructor\", this.OBJECT, Interpreter.NONENUMERABLE_DESCRIPTOR);\n this.initArray(globalObject);\n this.initString(globalObject);\n this.initBoolean(globalObject);\n this.initNumber(globalObject);\n this.initDate(globalObject);\n this.initRegExp(globalObject);\n this.initError(globalObject);\n this.initMath(globalObject);\n this.initJSON(globalObject);\n\n // Initialize global functions.\n var thisInterpreter = this;\n var wrapper;\n var func = this.createNativeFunction(function (_x) {\n throw EvalError(\"Can't happen\");\n }, false);\n func.eval = true;\n this.setProperty(globalObject, \"eval\", func, Interpreter.NONENUMERABLE_DESCRIPTOR);\n\n this.setProperty(\n globalObject,\n \"parseInt\",\n this.createNativeFunction(parseInt, false),\n Interpreter.NONENUMERABLE_DESCRIPTOR\n );\n this.setProperty(\n globalObject,\n \"parseFloat\",\n this.createNativeFunction(parseFloat, false),\n Interpreter.NONENUMERABLE_DESCRIPTOR\n );\n\n this.setProperty(\n globalObject,\n \"isNaN\",\n this.createNativeFunction(isNaN, false),\n Interpreter.NONENUMERABLE_DESCRIPTOR\n );\n\n this.setProperty(\n globalObject,\n \"isFinite\",\n this.createNativeFunction(isFinite, false),\n Interpreter.NONENUMERABLE_DESCRIPTOR\n );\n\n var strFunctions = [\n [escape, \"escape\"],\n [unescape, \"unescape\"],\n [decodeURI, \"decodeURI\"],\n [decodeURIComponent, \"decodeURIComponent\"],\n [encodeURI, \"encodeURI\"],\n [encodeURIComponent, \"encodeURIComponent\"],\n ];\n for (var i = 0; i < strFunctions.length; i++) {\n wrapper = (function (nativeFunc) {\n return function (str) {\n try {\n return nativeFunc(str);\n } catch (e) {\n // decodeURI('%xy') will throw an error. Catch and rethrow.\n thisInterpreter.throwException(thisInterpreter.URI_ERROR, e.message);\n }\n };\n })(strFunctions[i][0]);\n this.setProperty(\n globalObject,\n strFunctions[i][1],\n this.createNativeFunction(wrapper, false),\n Interpreter.NONENUMERABLE_DESCRIPTOR\n );\n }\n\n wrapper = function setTimeout(var_args) {\n return thisInterpreter.createTask_(false, arguments);\n };\n this.setProperty(\n globalObject,\n \"setTimeout\",\n this.createNativeFunction(wrapper, false),\n Interpreter.NONENUMERABLE_DESCRIPTOR\n );\n\n wrapper = function setInterval(var_args) {\n return thisInterpreter.createTask_(true, arguments);\n };\n this.setProperty(\n globalObject,\n \"setInterval\",\n this.createNativeFunction(wrapper, false),\n Interpreter.NONENUMERABLE_DESCRIPTOR\n );\n\n wrapper = function clearTimeout(pid) {\n thisInterpreter.deleteTask_(pid);\n };\n this.setProperty(\n globalObject,\n \"clearTimeout\",\n this.createNativeFunction(wrapper, false),\n Interpreter.NONENUMERABLE_DESCRIPTOR\n );\n\n wrapper = function clearInterval(pid) {\n thisInterpreter.deleteTask_(pid);\n };\n this.setProperty(\n globalObject,\n \"clearInterval\",\n this.createNativeFunction(wrapper, false),\n Interpreter.NONENUMERABLE_DESCRIPTOR\n );\n\n // Preserve public properties from being pruned/renamed by JS compilers.\n // Add others as needed.\n this[\"OBJECT\"] = this.OBJECT;\n this[\"OBJECT_PROTO\"] = this.OBJECT_PROTO;\n this[\"FUNCTION\"] = this.FUNCTION;\n this[\"FUNCTION_PROTO\"] = this.FUNCTION_PROTO;\n this[\"ARRAY\"] = this.ARRAY;\n this[\"ARRAY_PROTO\"] = this.ARRAY_PROTO;\n this[\"REGEXP\"] = this.REGEXP;\n this[\"REGEXP_PROTO\"] = this.REGEXP_PROTO;\n this[\"DATE\"] = this.DATE;\n this[\"DATE_PROTO\"] = this.DATE_PROTO;\n\n // Run any user-provided initialization.\n if (this.initFunc_) {\n this.initFunc_(this, globalObject);\n }\n};\n\n/**\n * Number of functions created by the interpreter.\n * @private\n */\nInterpreter.prototype.functionCodeNumber_ = 0;\n\n/**\n * Initialize the Function class.\n * @param {!Interpreter.Object} globalObject Global object.\n */\nInterpreter.prototype.initFunction = function (globalObject) {\n var thisInterpreter = this;\n var wrapper;\n var identifierRegexp = /^[A-Za-z_$][\\w$]*$/;\n // Function constructor.\n wrapper = function Function(var_args) {\n if (arguments.length) {\n var code = String(arguments[arguments.length - 1]);\n } else {\n var code = \"\";\n }\n var argsStr = Array.prototype.slice.call(arguments, 0, -1).join(\",\").trim();\n if (argsStr) {\n var args = argsStr.split(/\\s*,\\s*/);\n for (var i = 0; i < args.length; i++) {\n var name = args[i];\n if (!identifierRegexp.test(name)) {\n thisInterpreter.throwException(\n thisInterpreter.SYNTAX_ERROR,\n \"Invalid function argument: \" + name\n );\n }\n }\n argsStr = args.join(\", \");\n }\n // Acorn needs to parse code in the context of a function or else `return`\n // statements will be syntax errors.\n try {\n var ast = thisInterpreter.parse_(\n \"(function(\" + argsStr + \") {\" + code + \"})\",\n \"function\" + thisInterpreter.functionCodeNumber_++\n );\n } catch (e) {\n // Acorn threw a SyntaxError. Rethrow as a trappable error.\n thisInterpreter.throwException(thisInterpreter.SYNTAX_ERROR, \"Invalid code: \" + e.message);\n }\n if (ast.body.length !== 1) {\n // Function('a', 'return a + 6;}; {alert(1);');\n thisInterpreter.throwException(thisInterpreter.SYNTAX_ERROR, \"Invalid code in function body\");\n }\n var node = ast.body[0].expression;\n // Note that if this constructor is called as `new Function()` the function\n // object created by stepCallExpression and assigned to `this` is discarded.\n // Interestingly, the scope for constructed functions is the global scope,\n // even if they were constructed in some other scope.\n return thisInterpreter.createFunction(node, thisInterpreter.globalScope, \"anonymous\");\n };\n this.FUNCTION = this.createNativeFunction(wrapper, true);\n\n this.setProperty(globalObject, \"Function\", this.FUNCTION, Interpreter.NONENUMERABLE_DESCRIPTOR);\n // Throw away the created prototype and use the root prototype.\n this.setProperty(\n this.FUNCTION,\n \"prototype\",\n this.FUNCTION_PROTO,\n Interpreter.NONENUMERABLE_DESCRIPTOR\n );\n\n // Configure Function.prototype.\n this.setProperty(\n this.FUNCTION_PROTO,\n \"constructor\",\n this.FUNCTION,\n Interpreter.NONENUMERABLE_DESCRIPTOR\n );\n this.FUNCTION_PROTO.nativeFunc = function () {};\n this.FUNCTION_PROTO.nativeFunc.id = this.functionCounter_++;\n this.FUNCTION_PROTO.illegalConstructor = true;\n this.setProperty(this.FUNCTION_PROTO, \"length\", 0, Interpreter.READONLY_NONENUMERABLE_DESCRIPTOR);\n this.FUNCTION_PROTO.class = \"Function\";\n\n wrapper = function apply(thisArg, args) {\n var state = thisInterpreter.stateStack[thisInterpreter.stateStack.length - 1];\n // Rewrite the current CallExpression state to apply a different function.\n state.func_ = this;\n // Assign the `this` object.\n state.funcThis_ = thisArg;\n // Bind any provided arguments.\n state.arguments_ = [];\n if (args !== null && args !== undefined) {\n if (args instanceof Interpreter.Object) {\n state.arguments_ = thisInterpreter.arrayPseudoToNative(args);\n } else {\n thisInterpreter.throwException(\n thisInterpreter.TYPE_ERROR,\n \"CreateListFromArrayLike called on non-object\"\n );\n }\n }\n state.doneExec_ = false;\n };\n this.setNativeFunctionPrototype(this.FUNCTION, \"apply\", wrapper);\n\n wrapper = function call(thisArg /*, var_args */) {\n var state = thisInterpreter.stateStack[thisInterpreter.stateStack.length - 1];\n // Rewrite the current CallExpression state to call a different function.\n state.func_ = this;\n // Assign the `this` object.\n state.funcThis_ = thisArg;\n // Bind any provided arguments.\n state.arguments_ = [];\n for (var i = 1; i < arguments.length; i++) {\n state.arguments_.push(arguments[i]);\n }\n state.doneExec_ = false;\n };\n this.setNativeFunctionPrototype(this.FUNCTION, \"call\", wrapper);\n\n this.polyfills_.push(\n // Polyfill copied from:\n // developer.mozilla.org/en/docs/Web/JavaScript/Reference/Global_objects/Function/bind\n \"Object.defineProperty(Function.prototype, 'bind',\",\n \"{configurable: true, writable: true, value:\",\n \"function bind(oThis) {\",\n \"if (typeof this !== 'function') {\",\n \"throw TypeError('What is trying to be bound is not callable');\",\n \"}\",\n \"var aArgs = Array.prototype.slice.call(arguments, 1),\",\n \"fToBind = this,\",\n \"fNOP = function() {},\",\n \"fBound = function() {\",\n \"return fToBind.apply(this instanceof fNOP\",\n \"? this\",\n \": oThis,\",\n \"aArgs.concat(Array.prototype.slice.call(arguments)));\",\n \"};\",\n \"if (this.prototype) {\",\n \"fNOP.prototype = this.prototype;\",\n \"}\",\n \"fBound.prototype = new fNOP();\",\n \"return fBound;\",\n \"}\",\n \"});\",\n \"\"\n );\n\n // Function has no parent to inherit from, so it needs its own mandatory\n // toString and valueOf functions.\n wrapper = function toString() {\n return String(this);\n };\n this.setNativeFunctionPrototype(this.FUNCTION, \"toString\", wrapper);\n this.setProperty(\n this.FUNCTION,\n \"toString\",\n this.createNativeFunction(wrapper, false),\n Interpreter.NONENUMERABLE_DESCRIPTOR\n );\n wrapper = function valueOf() {\n return this.valueOf();\n };\n this.setNativeFunctionPrototype(this.FUNCTION, \"valueOf\", wrapper);\n this.setProperty(\n this.FUNCTION,\n \"valueOf\",\n this.createNativeFunction(wrapper, false),\n Interpreter.NONENUMERABLE_DESCRIPTOR\n );\n};\n\n/**\n * Initialize the Object class.\n * @param {!Interpreter.Object} globalObject Global object.\n */\nInterpreter.prototype.initObject = function (globalObject) {\n var thisInterpreter = this;\n var wrapper;\n // Object constructor.\n wrapper = function Object(value) {\n if (value === undefined || value === null) {\n // Create a new object.\n if (thisInterpreter.calledWithNew()) {\n // Called as `new Object()`.\n return this;\n } else {\n // Called as `Object()`.\n return thisInterpreter.createObjectProto(thisInterpreter.OBJECT_PROTO);\n }\n }\n if (!(value instanceof Interpreter.Object)) {\n // Wrap the value as an object.\n var box = thisInterpreter.createObjectProto(thisInterpreter.getPrototype(value));\n box.data = value;\n return box;\n }\n // Return the provided object.\n return value;\n };\n this.OBJECT = this.createNativeFunction(wrapper, true);\n // Throw away the created prototype and use the root prototype.\n this.setProperty(\n this.OBJECT,\n \"prototype\",\n this.OBJECT_PROTO,\n Interpreter.NONENUMERABLE_DESCRIPTOR\n );\n this.setProperty(\n this.OBJECT_PROTO,\n \"constructor\",\n this.OBJECT,\n Interpreter.NONENUMERABLE_DESCRIPTOR\n );\n this.setProperty(globalObject, \"Object\", this.OBJECT, Interpreter.NONENUMERABLE_DESCRIPTOR);\n\n /**\n * Checks if the provided value is null or undefined.\n * If so, then throw an error in the call stack.\n * @param {Interpreter.Value} value Value to check.\n */\n var throwIfNullUndefined = function (value) {\n if (value === undefined || value === null) {\n thisInterpreter.throwException(\n thisInterpreter.TYPE_ERROR,\n \"Cannot convert '\" + value + \"' to object\"\n );\n }\n };\n\n // Static methods on Object.\n wrapper = function getOwnPropertyNames(obj) {\n throwIfNullUndefined(obj);\n var props = obj instanceof Interpreter.Object ? obj.properties : obj;\n return thisInterpreter.arrayNativeToPseudo(Object.getOwnPropertyNames(props));\n };\n this.setProperty(\n this.OBJECT,\n \"getOwnPropertyNames\",\n this.createNativeFunction(wrapper, false),\n Interpreter.NONENUMERABLE_DESCRIPTOR\n );\n\n wrapper = function keys(obj) {\n throwIfNullUndefined(obj);\n if (obj instanceof Interpreter.Object) {\n obj = obj.properties;\n }\n return thisInterpreter.arrayNativeToPseudo(Object.keys(obj));\n };\n this.setProperty(\n this.OBJECT,\n \"keys\",\n this.createNativeFunction(wrapper, false),\n Interpreter.NONENUMERABLE_DESCRIPTOR\n );\n\n wrapper = function create_(proto) {\n // Support for the second argument is the responsibility of a polyfill.\n if (proto === null) {\n return thisInterpreter.createObjectProto(null);\n }\n if (!(proto instanceof Interpreter.Object)) {\n thisInterpreter.throwException(\n thisInterpreter.TYPE_ERROR,\n \"Object prototype may only be an Object or null, not \" + proto\n );\n }\n return thisInterpreter.createObjectProto(proto);\n };\n this.setProperty(\n this.OBJECT,\n \"create\",\n this.createNativeFunction(wrapper, false),\n Interpreter.NONENUMERABLE_DESCRIPTOR\n );\n\n // Add a polyfill to handle create's second argument.\n this.polyfills_.push(\n \"(function() {\",\n \"var create_ = Object.create;\",\n \"Object.create = function create(proto, props) {\",\n \"var obj = create_(proto);\",\n \"props && Object.defineProperties(obj, props);\",\n \"return obj;\",\n \"};\",\n \"})();\",\n \"\"\n );\n\n wrapper = function defineProperty(obj, prop, descriptor) {\n prop = String(prop);\n if (!(obj instanceof Interpreter.Object)) {\n thisInterpreter.throwException(\n thisInterpreter.TYPE_ERROR,\n \"Object.defineProperty called on non-object: \" + obj\n );\n }\n if (!(descriptor instanceof Interpreter.Object)) {\n thisInterpreter.throwException(\n thisInterpreter.TYPE_ERROR,\n \"Property description must be an object\"\n );\n }\n if (obj.preventExtensions && !(prop in obj.properties)) {\n thisInterpreter.throwException(\n thisInterpreter.TYPE_ERROR,\n \"Can't define property '\" + prop + \"', object is not extensible\"\n );\n }\n // The polyfill guarantees no inheritance and no getter functions.\n // Therefore the descriptor properties map is the native object needed.\n thisInterpreter.setProperty(obj, prop, Interpreter.VALUE_IN_DESCRIPTOR, descriptor.properties);\n return obj;\n };\n this.setProperty(\n this.OBJECT,\n \"defineProperty\",\n this.createNativeFunction(wrapper, false),\n Interpreter.NONENUMERABLE_DESCRIPTOR\n );\n\n this.polyfills_.push(\n // Flatten the descriptor to remove any inheritance or getter functions.\n \"(function() {\",\n \"var defineProperty_ = Object.defineProperty;\",\n \"Object.defineProperty = function defineProperty(obj, prop, d1) {\",\n \"var d2 = {};\",\n \"if ('configurable' in d1) d2.configurable = d1.configurable;\",\n \"if ('enumerable' in d1) d2.enumerable = d1.enumerable;\",\n \"if ('writable' in d1) d2.writable = d1.writable;\",\n \"if ('value' in d1) d2.value = d1.value;\",\n \"if ('get' in d1) d2.get = d1.get;\",\n \"if ('set' in d1) d2.set = d1.set;\",\n \"return defineProperty_(obj, prop, d2);\",\n \"};\",\n \"})();\",\n\n \"Object.defineProperty(Object, 'defineProperties',\",\n \"{configurable: true, writable: true, value:\",\n \"function defineProperties(obj, props) {\",\n \"var keys = Object.keys(props);\",\n \"for (var i = 0; i < keys.length; i++) {\",\n \"Object.defineProperty(obj, keys[i], props[keys[i]]);\",\n \"}\",\n \"return obj;\",\n \"}\",\n \"});\",\n \"\"\n );\n\n wrapper = function getOwnPropertyDescriptor(obj, prop) {\n if (!(obj instanceof Interpreter.Object)) {\n thisInterpreter.throwException(\n thisInterpreter.TYPE_ERROR,\n \"Object.getOwnPropertyDescriptor called on non-object: \" + obj\n );\n }\n prop = String(prop);\n if (!(prop in obj.properties)) {\n return undefined;\n }\n var descriptor = Object.getOwnPropertyDescriptor(obj.properties, prop);\n var getter = obj.getter[prop];\n var setter = obj.setter[prop];\n\n var pseudoDescriptor = thisInterpreter.createObjectProto(thisInterpreter.OBJECT_PROTO);\n if (getter || setter) {\n thisInterpreter.setProperty(pseudoDescriptor, \"get\", getter);\n thisInterpreter.setProperty(pseudoDescriptor, \"set\", setter);\n } else {\n thisInterpreter.setProperty(\n pseudoDescriptor,\n \"value\",\n /** @type {!Interpreter.Value} */ (descriptor[\"value\"])\n );\n thisInterpreter.setProperty(pseudoDescriptor, \"writable\", descriptor[\"writable\"]);\n }\n thisInterpreter.setProperty(pseudoDescriptor, \"configurable\", descriptor[\"configurable\"]);\n thisInterpreter.setProperty(pseudoDescriptor, \"enumerable\", descriptor[\"enumerable\"]);\n return pseudoDescriptor;\n };\n this.setProperty(\n this.OBJECT,\n \"getOwnPropertyDescriptor\",\n this.createNativeFunction(wrapper, false),\n Interpreter.NONENUMERABLE_DESCRIPTOR\n );\n\n wrapper = function getPrototypeOf(obj) {\n throwIfNullUndefined(obj);\n return thisInterpreter.getPrototype(obj);\n };\n this.setProperty(\n this.OBJECT,\n \"getPrototypeOf\",\n this.createNativeFunction(wrapper, false),\n Interpreter.NONENUMERABLE_DESCRIPTOR\n );\n\n wrapper = function isExtensible(obj) {\n return Boolean(obj) && !obj.preventExtensions;\n };\n this.setProperty(\n this.OBJECT,\n \"isExtensible\",\n this.createNativeFunction(wrapper, false),\n Interpreter.NONENUMERABLE_DESCRIPTOR\n );\n\n wrapper = function preventExtensions(obj) {\n if (obj instanceof Interpreter.Object) {\n obj.preventExtensions = true;\n }\n return obj;\n };\n this.setProperty(\n this.OBJECT,\n \"preventExtensions\",\n this.createNativeFunction(wrapper, false),\n Interpreter.NONENUMERABLE_DESCRIPTOR\n );\n\n // Instance methods on Object.\n this.setNativeFunctionPrototype(this.OBJECT, \"toString\", Interpreter.Object.prototype.toString);\n this.setNativeFunctionPrototype(\n this.OBJECT,\n \"toLocaleString\",\n Interpreter.Object.prototype.toString\n );\n this.setNativeFunctionPrototype(this.OBJECT, \"valueOf\", Interpreter.Object.prototype.valueOf);\n\n wrapper = function hasOwnProperty(prop) {\n throwIfNullUndefined(this);\n if (this instanceof Interpreter.Object) {\n return String(prop) in this.properties;\n }\n // Primitive.\n return this.hasOwnProperty(prop);\n };\n this.setNativeFunctionPrototype(this.OBJECT, \"hasOwnProperty\", wrapper);\n\n wrapper = function propertyIsEnumerable(prop) {\n throwIfNullUndefined(this);\n if (this instanceof Interpreter.Object) {\n return Object.prototype.propertyIsEnumerable.call(this.properties, prop);\n }\n // Primitive.\n return this.propertyIsEnumerable(prop);\n };\n this.setNativeFunctionPrototype(this.OBJECT, \"propertyIsEnumerable\", wrapper);\n\n wrapper = function isPrototypeOf(obj) {\n while (true) {\n // Note, circular loops shouldn't be possible.\n obj = thisInterpreter.getPrototype(obj);\n if (!obj) {\n // No parent; reached the top.\n return false;\n }\n if (obj === this) {\n return true;\n }\n }\n };\n this.setNativeFunctionPrototype(this.OBJECT, \"isPrototypeOf\", wrapper);\n};\n\n/**\n * Initialize the Array class.\n * @param {!Interpreter.Object} globalObject Global object.\n */\nInterpreter.prototype.initArray = function (globalObject) {\n var thisInterpreter = this;\n var wrapper;\n // Array constructor.\n wrapper = function Array(var_args) {\n if (thisInterpreter.calledWithNew()) {\n // Called as `new Array()`.\n var newArray = this;\n } else {\n // Called as `Array()`.\n var newArray = thisInterpreter.createArray();\n }\n var first = arguments[0];\n if (arguments.length === 1 && typeof first === \"number\") {\n if (isNaN(Interpreter.legalArrayLength(first))) {\n thisInterpreter.throwException(\n thisInterpreter.RANGE_ERROR,\n \"Invalid array length: \" + first\n );\n }\n newArray.properties.length = first;\n } else {\n for (var i = 0; i < arguments.length; i++) {\n newArray.properties[i] = arguments[i];\n }\n newArray.properties.length = i;\n }\n return newArray;\n };\n this.ARRAY = this.createNativeFunction(wrapper, true);\n this.ARRAY_PROTO = this.ARRAY.properties[\"prototype\"];\n this.setProperty(globalObject, \"Array\", this.ARRAY, Interpreter.NONENUMERABLE_DESCRIPTOR);\n\n // Static methods on Array.\n wrapper = function isArray(obj) {\n return obj && obj.class === \"Array\";\n };\n this.setProperty(\n this.ARRAY,\n \"isArray\",\n this.createNativeFunction(wrapper, false),\n Interpreter.NONENUMERABLE_DESCRIPTOR\n );\n\n // Instance methods on Array.\n this.setProperty(this.ARRAY_PROTO, \"length\", 0, {\n configurable: false,\n enumerable: false,\n writable: true,\n });\n this.ARRAY_PROTO.class = \"Array\";\n\n this.polyfills_.push(\n \"(function() {\",\n \"function createArrayMethod_(f) {\",\n \"Object.defineProperty(Array.prototype, f.name,\",\n \"{configurable: true, writable: true, value: f});\",\n \"}\",\n\n \"createArrayMethod_(\",\n \"function pop() {\",\n \"if (!this) throw TypeError();\",\n \"var o = Object(this), len = o.length >>> 0;\",\n \"if (!len || len < 0) {\",\n \"o.length = 0;\",\n \"return undefined;\",\n \"}\",\n \"len--;\",\n \"var x = o[len];\",\n \"delete o[len];\", // Needed for non-arrays.\n \"o.length = len;\",\n \"return x;\",\n \"}\",\n \");\",\n\n \"createArrayMethod_(\",\n \"function push(var_args) {\",\n \"if (!this) throw TypeError();\",\n \"var o = Object(this), len = o.length >>> 0;\",\n \"for (var i = 0; i < arguments.length; i++) {\",\n \"o[len] = arguments[i];\",\n \"len++;\",\n \"}\",\n \"o.length = len;\",\n \"return len;\",\n \"}\",\n \");\",\n\n \"createArrayMethod_(\",\n \"function shift() {\",\n \"if (!this) throw TypeError();\",\n \"var o = Object(this), len = o.length >>> 0;\",\n \"if (!len || len < 0) {\",\n \"o.length = 0;\",\n \"return undefined;\",\n \"}\",\n \"var value = o[0];\",\n \"for (var i = 0; i < len - 1; i++) {\",\n \"if ((i + 1) in o) {\",\n \"o[i] = o[i + 1];\",\n \"} else {\",\n \"delete o[i];\",\n \"}\",\n \"}\",\n \"delete o[i];\", // Needed for non-arrays.\n \"o.length = len - 1;\",\n \"return value;\",\n \"}\",\n \");\",\n\n \"createArrayMethod_(\",\n \"function unshift(var_args) {\",\n \"if (!this) throw TypeError();\",\n \"var o = Object(this), len = o.length >>> 0;\",\n \"if (!len || len < 0) {\",\n \"len = 0;\",\n \"}\",\n \"for (var i = len - 1; i >= 0; i--) {\",\n \"if (i in o) {\",\n \"o[i + arguments.length] = o[i];\",\n \"} else {\",\n \"delete o[i + arguments.length];\",\n \"}\",\n \"}\",\n \"for (var i = 0; i < arguments.length; i++) {\",\n \"o[i] = arguments[i];\",\n \"}\",\n \"return (o.length = len + arguments.length);\",\n \"}\",\n \");\",\n\n \"createArrayMethod_(\",\n \"function reverse() {\",\n \"if (!this) throw TypeError();\",\n \"var o = Object(this), len = o.length >>> 0;\",\n \"if (!len || len < 2) {\",\n \"return o;\", // Not an array, or too short to reverse.\n \"}\",\n \"for (var i = 0; i < len / 2 - 0.5; i++) {\",\n \"var x = o[i];\",\n \"var hasX = i in o;\",\n \"if ((len - i - 1) in o) {\",\n \"o[i] = o[len - i - 1];\",\n \"} else {\",\n \"delete o[i];\",\n \"}\",\n \"if (hasX) {\",\n \"o[len - i - 1] = x;\",\n \"} else {\",\n \"delete o[len - i - 1];\",\n \"}\",\n \"}\",\n \"return o;\",\n \"}\",\n \");\",\n\n \"createArrayMethod_(\",\n \"function indexOf(searchElement, fromIndex) {\",\n \"if (!this) throw TypeError();\",\n \"var o = Object(this), len = o.length >>> 0;\",\n \"var n = fromIndex | 0;\",\n \"if (!len || n >= len) {\",\n \"return -1;\",\n \"}\",\n \"var i = Math.max(n >= 0 ? n : len - Math.abs(n), 0);\",\n \"while (i < len) {\",\n \"if (i in o && o[i] === searchElement) {\",\n \"return i;\",\n \"}\",\n \"i++;\",\n \"}\",\n \"return -1;\",\n \"}\",\n \");\",\n\n \"createArrayMethod_(\",\n \"function lastIndexOf(searchElement, fromIndex) {\",\n \"if (!this) throw TypeError();\",\n \"var o = Object(this), len = o.length >>> 0;\",\n \"if (!len) {\",\n \"return -1;\",\n \"}\",\n \"var n = len - 1;\",\n \"if (arguments.length > 1) {\",\n \"n = fromIndex | 0;\",\n \"if (n) {\",\n \"n = (n > 0 || -1) * Math.floor(Math.abs(n));\",\n \"}\",\n \"}\",\n \"var i = n >= 0 ? Math.min(n, len - 1) : len - Math.abs(n);\",\n \"while (i >= 0) {\",\n \"if (i in o && o[i] === searchElement) {\",\n \"return i;\",\n \"}\",\n \"i--;\",\n \"}\",\n \"return -1;\",\n \"}\",\n \");\",\n\n \"createArrayMethod_(\",\n \"function slice(start, end) {\",\n \"if (!this) throw TypeError();\",\n \"var o = Object(this), len = o.length >>> 0;\",\n // Handle negative value for \"start\"\n \"start |= 0;\",\n \"start = (start >= 0) ? start : Math.max(0, len + start);\",\n // Handle negative value for \"end\"\n \"if (typeof end !== 'undefined') {\",\n \"if (end !== Infinity) {\",\n \"end |= 0;\",\n \"}\",\n \"if (end < 0) {\",\n \"end = len + end;\",\n \"} else {\",\n \"end = Math.min(end, len);\",\n \"}\",\n \"} else {\",\n \"end = len;\",\n \"}\",\n \"var size = end - start;\",\n \"var cloned = new Array(size);\",\n \"for (var i = 0; i < size; i++) {\",\n \"if ((start + i) in o) {\",\n \"cloned[i] = o[start + i];\",\n \"}\",\n \"}\",\n \"return cloned;\",\n \"}\",\n \");\",\n\n \"createArrayMethod_(\",\n \"function splice(start, deleteCount, var_args) {\",\n \"if (!this) throw TypeError();\",\n \"var o = Object(this), len = o.length >>> 0;\",\n \"start |= 0;\",\n \"if (start < 0) {\",\n \"start = Math.max(len + start, 0);\",\n \"} else {\",\n \"start = Math.min(start, len);\",\n \"}\",\n \"if (arguments.length < 1) {\",\n \"deleteCount = len - start;\",\n \"} else {\",\n \"deleteCount |= 0;\",\n \"deleteCount = Math.max(0, Math.min(deleteCount, len - start));\",\n \"}\",\n \"var removed = [];\",\n // Remove specified elements.\n \"for (var i = start; i < start + deleteCount; i++) {\",\n \"if (i in o) {\",\n \"removed.push(o[i]);\",\n \"} else {\",\n \"removed.length++;\",\n \"}\",\n \"if ((i + deleteCount) in o) {\",\n \"o[i] = o[i + deleteCount];\",\n \"} else {\",\n \"delete o[i];\",\n \"}\",\n \"}\",\n // Move other element to fill the gap.\n \"for (var i = start + deleteCount; i < len - deleteCount; i++) {\",\n \"if ((i + deleteCount) in o) {\",\n \"o[i] = o[i + deleteCount];\",\n \"} else {\",\n \"delete o[i];\",\n \"}\",\n \"}\",\n // Delete superfluous properties.\n \"for (var i = len - deleteCount; i < len; i++) {\",\n \"delete o[i];\",\n \"}\",\n \"len -= deleteCount;\",\n // Insert specified items.\n \"var arl = arguments.length - 2;\",\n \"for (var i = len - 1; i >= start; i--) {\",\n \"if (i in o) {\",\n \"o[i + arl] = o[i];\",\n \"} else {\",\n \"delete o[i + arl];\",\n \"}\",\n \"}\",\n \"len += arl;\",\n \"for (var i = 2; i < arguments.length; i++) {\",\n \"o[start + i - 2] = arguments[i];\",\n \"}\",\n \"o.length = len;\",\n \"return removed;\",\n \"}\",\n \");\",\n\n \"createArrayMethod_(\",\n \"function concat(var_args) {\",\n \"if (!this) throw TypeError();\",\n \"var o = Object(this);\",\n \"var cloned = [];\",\n \"for (var i = -1; i < arguments.length; i++) {\",\n \"var value = (i === -1) ? o : arguments[i];\",\n \"if (Array.isArray(value)) {\",\n \"for (var j = 0, l = value.length; j < l; j++) {\",\n \"if (j in value) {\",\n \"cloned.push(value[j]);\",\n \"} else {\",\n \"cloned.length++;\",\n \"}\",\n \"}\",\n \"} else {\",\n \"cloned.push(value);\",\n \"}\",\n \"}\",\n \"return cloned;\",\n \"}\",\n \");\",\n\n \"createArrayMethod_(\",\n \"function join(opt_separator) {\",\n \"if (!this) throw TypeError();\",\n \"var o = Object(this), len = o.length >>> 0;\",\n \"var sep = typeof opt_separator === 'undefined' ?\",\n \"',' : ('' + opt_separator);\",\n \"var str = '';\",\n \"for (var i = 0; i < len; i++) {\",\n \"if (i && sep) str += sep;\",\n \"str += (o[i] === null || o[i] === undefined) ? '' : o[i];\",\n \"}\",\n \"return str;\",\n \"}\",\n \");\",\n\n // Polyfill copied from:\n // developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Array/every\n \"createArrayMethod_(\",\n \"function every(callbackfn, thisArg) {\",\n \"if (!this || typeof callbackfn !== 'function') throw TypeError();\",\n \"var t, k = 0;\",\n \"var o = Object(this), len = o.length >>> 0;\",\n \"if (arguments.length > 1) t = thisArg;\",\n \"while (k < len) {\",\n \"if (k in o && !callbackfn.call(t, o[k], k, o)) return false;\",\n \"k++;\",\n \"}\",\n \"return true;\",\n \"}\",\n \");\",\n\n // Polyfill copied from:\n // developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Array/filter\n \"createArrayMethod_(\",\n \"function filter(fun, var_args) {\",\n \"if (this === void 0 || this === null || typeof fun !== 'function') throw TypeError();\",\n \"var o = Object(this), len = o.length >>> 0;\",\n \"var res = [];\",\n \"var thisArg = arguments.length >= 2 ? arguments[1] : void 0;\",\n \"for (var i = 0; i < len; i++) {\",\n \"if (i in o) {\",\n \"var val = o[i];\",\n \"if (fun.call(thisArg, val, i, o)) res.push(val);\",\n \"}\",\n \"}\",\n \"return res;\",\n \"}\",\n \");\",\n\n // Polyfill copied from:\n // developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Array/forEach\n \"createArrayMethod_(\",\n \"function forEach(callback, thisArg) {\",\n \"if (!this || typeof callback !== 'function') throw TypeError();\",\n \"var t, k = 0;\",\n \"var o = Object(this), len = o.length >>> 0;\",\n \"if (arguments.length > 1) t = thisArg;\",\n \"while (k < len) {\",\n \"if (k in o) callback.call(t, o[k], k, o);\",\n \"k++;\",\n \"}\",\n \"}\",\n \");\",\n\n // Polyfill copied from:\n // developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Array/map\n \"createArrayMethod_(\",\n \"function map(callback, thisArg) {\",\n \"if (!this || typeof callback !== 'function') throw TypeError();\",\n \"var t, k = 0;\",\n \"var o = Object(this), len = o.length >>> 0;\",\n \"if (arguments.length > 1) t = thisArg;\",\n \"var a = new Array(len);\",\n \"while (k < len) {\",\n \"if (k in o) a[k] = callback.call(t, o[k], k, o);\",\n \"k++;\",\n \"}\",\n \"return a;\",\n \"}\",\n \");\",\n\n // Polyfill copied from:\n // developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Array/Reduce\n \"createArrayMethod_(\",\n \"function reduce(callback /*, initialValue*/) {\",\n \"if (!this || typeof callback !== 'function') throw TypeError();\",\n \"var o = Object(this), len = o.length >>> 0;\",\n \"var k = 0, value;\",\n \"if (arguments.length === 2) {\",\n \"value = arguments[1];\",\n \"} else {\",\n \"while (k < len && !(k in o)) k++;\",\n \"if (k >= len) {\",\n \"throw TypeError('Reduce of empty array with no initial value');\",\n \"}\",\n \"value = o[k++];\",\n \"}\",\n \"for (; k < len; k++) {\",\n \"if (k in o) value = callback(value, o[k], k, o);\",\n \"}\",\n \"return value;\",\n \"}\",\n \");\",\n\n // Polyfill copied from:\n // developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Array/ReduceRight\n \"createArrayMethod_(\",\n \"function reduceRight(callback /*, initialValue*/) {\",\n \"if (null === this || 'undefined' === typeof this || 'function' !== typeof callback) throw TypeError();\",\n \"var o = Object(this), len = o.length >>> 0;\",\n \"var k = len - 1, value;\",\n \"if (arguments.length >= 2) {\",\n \"value = arguments[1];\",\n \"} else {\",\n \"while (k >= 0 && !(k in o)) k--;\",\n \"if (k < 0) {\",\n \"throw TypeError('Reduce of empty array with no initial value');\",\n \"}\",\n \"value = o[k--];\",\n \"}\",\n \"for (; k >= 0; k--) {\",\n \"if (k in o) value = callback(value, o[k], k, o);\",\n \"}\",\n \"return value;\",\n \"}\",\n \");\",\n\n // Polyfill copied from:\n // developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Array/some\n \"createArrayMethod_(\",\n \"function some(fun/*, thisArg*/) {\",\n \"if (!this || typeof fun !== 'function') throw TypeError();\",\n \"var o = Object(this), len = o.length >>> 0;\",\n \"var thisArg = arguments.length >= 2 ? arguments[1] : void 0;\",\n \"for (var i = 0; i < len; i++) {\",\n \"if (i in o && fun.call(thisArg, o[i], i, o)) return true;\",\n \"}\",\n \"return false;\",\n \"}\",\n \");\",\n\n \"createArrayMethod_(\",\n \"function sort(opt_comp) {\", // Bubble sort!\n \"if (!this) throw TypeError();\",\n \"if (typeof opt_comp !== 'function') {\",\n \"opt_comp = undefined;\",\n \"}\",\n \"for (var i = 0; i < this.length; i++) {\",\n \"var changes = 0;\",\n \"for (var j = 0; j < this.length - i - 1; j++) {\",\n \"if (opt_comp ? (opt_comp(this[j], this[j + 1]) > 0) :\",\n \"(String(this[j]) > String(this[j + 1]))) {\",\n \"var swap = this[j];\",\n \"var hasSwap = j in this;\",\n \"if ((j + 1) in this) {\",\n \"this[j] = this[j + 1];\",\n \"} else {\",\n \"delete this[j];\",\n \"}\",\n \"if (hasSwap) {\",\n \"this[j + 1] = swap;\",\n \"} else {\",\n \"delete this[j + 1];\",\n \"}\",\n \"changes++;\",\n \"}\",\n \"}\",\n \"if (!changes) break;\",\n \"}\",\n \"return this;\",\n \"}\",\n \");\",\n\n \"createArrayMethod_(\",\n \"function toLocaleString() {\",\n \"if (!this) throw TypeError();\",\n \"var o = Object(this), len = o.length >>> 0;\",\n \"var out = [];\",\n \"for (var i = 0; i < len; i++) {\",\n \"out[i] = (o[i] === null || o[i] === undefined) ? '' : o[i].toLocaleString();\",\n \"}\",\n \"return out.join(',');\",\n \"}\",\n \");\",\n \"})();\",\n \"\"\n );\n};\n\n/**\n * Initialize the String class.\n * @param {!Interpreter.Object} globalObject Global object.\n */\nInterpreter.prototype.initString = function (globalObject) {\n var thisInterpreter = this;\n var wrapper;\n // String constructor.\n wrapper = function String(value) {\n value = arguments.length ? Interpreter.nativeGlobal.String(value) : \"\";\n if (thisInterpreter.calledWithNew()) {\n // Called as `new String()`.\n this.data = value;\n return this;\n } else {\n // Called as `String()`.\n return value;\n }\n };\n this.STRING = this.createNativeFunction(wrapper, true);\n this.setProperty(globalObject, \"String\", this.STRING, Interpreter.NONENUMERABLE_DESCRIPTOR);\n\n // Static methods on String.\n this.setProperty(\n this.STRING,\n \"fromCharCode\",\n this.createNativeFunction(String.fromCharCode, false),\n Interpreter.NONENUMERABLE_DESCRIPTOR\n );\n\n // Instance methods on String.\n // Methods with exclusively primitive arguments.\n var functions = [\n \"charAt\",\n \"charCodeAt\",\n \"concat\",\n \"indexOf\",\n \"lastIndexOf\",\n \"slice\",\n \"substr\",\n \"substring\",\n \"toLocaleLowerCase\",\n \"toLocaleUpperCase\",\n \"toLowerCase\",\n \"toUpperCase\",\n \"trim\",\n ];\n for (var i = 0; i < functions.length; i++) {\n this.setNativeFunctionPrototype(this.STRING, functions[i], String.prototype[functions[i]]);\n }\n\n wrapper = function localeCompare(compareString, locales, options) {\n locales = thisInterpreter.pseudoToNative(locales);\n options = thisInterpreter.pseudoToNative(options);\n try {\n return String(this).localeCompare(\n compareString,\n /** @type {?} */ (locales),\n /** @type {?} */ (options)\n );\n } catch (e) {\n thisInterpreter.throwException(thisInterpreter.ERROR, \"localeCompare: \" + e.message);\n }\n };\n this.setNativeFunctionPrototype(this.STRING, \"localeCompare\", wrapper);\n\n wrapper = function split(separator, limit, callback) {\n var string = String(this);\n limit = limit ? Number(limit) : undefined;\n // Example of catastrophic split RegExp:\n // 'aaaaaaaaaaaaaaaaaaaaaaaaaaaaaac'.split(/^(a+)+b/)\n if (thisInterpreter.isa(separator, thisInterpreter.REGEXP)) {\n separator = separator.data;\n thisInterpreter.maybeThrowRegExp(separator, callback);\n if (thisInterpreter[\"REGEXP_MODE\"] === 2) {\n if (Interpreter.vm) {\n // Run split in vm.\n var sandbox = {\n string: string,\n separator: separator,\n limit: limit,\n };\n var code = \"string.split(separator, limit)\";\n var jsList = thisInterpreter.vmCall(code, sandbox, separator, callback);\n if (jsList !== Interpreter.REGEXP_TIMEOUT) {\n callback(thisInterpreter.arrayNativeToPseudo(jsList));\n }\n } else {\n // Run split in separate thread.\n var splitWorker = thisInterpreter.createWorker();\n var pid = thisInterpreter.regExpTimeout(separator, splitWorker, callback);\n splitWorker.onmessage = function (e) {\n clearTimeout(pid);\n callback(thisInterpreter.arrayNativeToPseudo(e.data));\n };\n splitWorker.postMessage([\"split\", string, separator, limit]);\n }\n return;\n }\n }\n // Run split natively.\n var jsList = string.split(separator, limit);\n callback(thisInterpreter.arrayNativeToPseudo(jsList));\n };\n this.setAsyncFunctionPrototype(this.STRING, \"split\", wrapper);\n\n wrapper = function match(regexp, callback) {\n var string = String(this);\n regexp = thisInterpreter.isa(regexp, thisInterpreter.REGEXP) ? regexp.data : new RegExp(regexp);\n // Example of catastrophic match RegExp:\n // 'aaaaaaaaaaaaaaaaaaaaaaaaaaaaaac'.match(/^(a+)+b/)\n thisInterpreter.maybeThrowRegExp(regexp, callback);\n if (thisInterpreter[\"REGEXP_MODE\"] === 2) {\n if (Interpreter.vm) {\n // Run match in vm.\n var sandbox = {\n string: string,\n regexp: regexp,\n };\n var code = \"string.match(regexp)\";\n var m = thisInterpreter.vmCall(code, sandbox, regexp, callback);\n if (m !== Interpreter.REGEXP_TIMEOUT) {\n callback(m && thisInterpreter.arrayNativeToPseudo(m));\n }\n } else {\n // Run match in separate thread.\n var matchWorker = thisInterpreter.createWorker();\n var pid = thisInterpreter.regExpTimeout(regexp, matchWorker, callback);\n matchWorker.onmessage = function (e) {\n clearTimeout(pid);\n callback(e.data && thisInterpreter.arrayNativeToPseudo(e.data));\n };\n matchWorker.postMessage([\"match\", string, regexp]);\n }\n return;\n }\n // Run match natively.\n var m = string.match(regexp);\n callback(m && thisInterpreter.arrayNativeToPseudo(m));\n };\n this.setAsyncFunctionPrototype(this.STRING, \"match\", wrapper);\n\n wrapper = function search(regexp, callback) {\n var string = String(this);\n if (thisInterpreter.isa(regexp, thisInterpreter.REGEXP)) {\n regexp = regexp.data;\n } else {\n regexp = new RegExp(regexp);\n }\n // Example of catastrophic search RegExp:\n // 'aaaaaaaaaaaaaaaaaaaaaaaaaaaaaac'.search(/^(a+)+b/)\n thisInterpreter.maybeThrowRegExp(regexp, callback);\n if (thisInterpreter[\"REGEXP_MODE\"] === 2) {\n if (Interpreter.vm) {\n // Run search in vm.\n var sandbox = {\n string: string,\n regexp: regexp,\n };\n var code = \"string.search(regexp)\";\n var n = thisInterpreter.vmCall(code, sandbox, regexp, callback);\n if (n !== Interpreter.REGEXP_TIMEOUT) {\n callback(n);\n }\n } else {\n // Run search in separate thread.\n var searchWorker = thisInterpreter.createWorker();\n var pid = thisInterpreter.regExpTimeout(regexp, searchWorker, callback);\n searchWorker.onmessage = function (e) {\n clearTimeout(pid);\n callback(e.data);\n };\n searchWorker.postMessage([\"search\", string, regexp]);\n }\n return;\n }\n // Run search natively.\n callback(string.search(regexp));\n };\n this.setAsyncFunctionPrototype(this.STRING, \"search\", wrapper);\n\n wrapper = function replace_(substr, newSubstr, callback) {\n // Support for function replacements is the responsibility of a polyfill.\n var string = String(this);\n newSubstr = String(newSubstr);\n // Example of catastrophic replace RegExp:\n // 'aaaaaaaaaaaaaaaaaaaaaaaaaaaaaac'.replace(/^(a+)+b/, '')\n if (thisInterpreter.isa(substr, thisInterpreter.REGEXP)) {\n substr = substr.data;\n thisInterpreter.maybeThrowRegExp(substr, callback);\n if (thisInterpreter[\"REGEXP_MODE\"] === 2) {\n if (Interpreter.vm) {\n // Run replace in vm.\n var sandbox = {\n string: string,\n substr: substr,\n newSubstr: newSubstr,\n };\n var code = \"string.replace(substr, newSubstr)\";\n var str = thisInterpreter.vmCall(code, sandbox, substr, callback);\n if (str !== Interpreter.REGEXP_TIMEOUT) {\n callback(str);\n }\n } else {\n // Run replace in separate thread.\n var replaceWorker = thisInterpreter.createWorker();\n var pid = thisInterpreter.regExpTimeout(substr, replaceWorker, callback);\n replaceWorker.onmessage = function (e) {\n clearTimeout(pid);\n callback(e.data);\n };\n replaceWorker.postMessage([\"replace\", string, substr, newSubstr]);\n }\n return;\n }\n }\n // Run replace natively.\n callback(string.replace(substr, newSubstr));\n };\n this.setAsyncFunctionPrototype(this.STRING, \"replace\", wrapper);\n // Add a polyfill to handle replace's second argument being a function.\n this.polyfills_.push(\n \"(function() {\",\n \"var replace_ = String.prototype.replace;\",\n \"String.prototype.replace = function replace(substr, newSubstr) {\",\n \"if (typeof newSubstr !== 'function') {\",\n // string.replace(string|regexp, string)\n \"return replace_.call(this, substr, newSubstr);\",\n \"}\",\n \"var str = this;\",\n \"if (substr instanceof RegExp) {\", // string.replace(regexp, function)\n \"var subs = [];\",\n \"var m = substr.exec(str);\",\n \"while (m) {\",\n \"m.push(m.index, str);\",\n \"var inject = newSubstr.apply(null, m);\",\n \"subs.push([m.index, m[0].length, inject]);\",\n \"m = substr.global ? substr.exec(str) : null;\",\n \"}\",\n \"for (var i = subs.length - 1; i >= 0; i--) {\",\n \"str = str.substring(0, subs[i][0]) + subs[i][2] + \" +\n \"str.substring(subs[i][0] + subs[i][1]);\",\n \"}\",\n \"} else {\", // string.replace(string, function)\n \"var i = str.indexOf(substr);\",\n \"if (i !== -1) {\",\n \"var inject = newSubstr(str.substr(i, substr.length), i, str);\",\n \"str = str.substring(0, i) + inject + \" + \"str.substring(i + substr.length);\",\n \"}\",\n \"}\",\n \"return str;\",\n \"};\",\n \"})();\",\n \"\"\n );\n};\n\n/**\n * Initialize the Boolean class.\n * @param {!Interpreter.Object} globalObject Global object.\n */\nInterpreter.prototype.initBoolean = function (globalObject) {\n var thisInterpreter = this;\n var wrapper;\n // Boolean constructor.\n wrapper = function Boolean(value) {\n value = Interpreter.nativeGlobal.Boolean(value);\n if (thisInterpreter.calledWithNew()) {\n // Called as `new Boolean()`.\n this.data = value;\n return this;\n } else {\n // Called as `Boolean()`.\n return value;\n }\n };\n this.BOOLEAN = this.createNativeFunction(wrapper, true);\n this.setProperty(globalObject, \"Boolean\", this.BOOLEAN, Interpreter.NONENUMERABLE_DESCRIPTOR);\n};\n\n/**\n * Initialize the Number class.\n * @param {!Interpreter.Object} globalObject Global object.\n */\nInterpreter.prototype.initNumber = function (globalObject) {\n var thisInterpreter = this;\n var wrapper;\n // Number constructor.\n wrapper = function Number(value) {\n value = arguments.length ? Interpreter.nativeGlobal.Number(value) : 0;\n if (thisInterpreter.calledWithNew()) {\n // Called as `new Number()`.\n this.data = value;\n return this;\n } else {\n // Called as `Number()`.\n return value;\n }\n };\n this.NUMBER = this.createNativeFunction(wrapper, true);\n this.setProperty(globalObject, \"Number\", this.NUMBER, Interpreter.NONENUMERABLE_DESCRIPTOR);\n\n var numConsts = [\"MAX_VALUE\", \"MIN_VALUE\", \"NaN\", \"NEGATIVE_INFINITY\", \"POSITIVE_INFINITY\"];\n for (var i = 0; i < numConsts.length; i++) {\n this.setProperty(\n this.NUMBER,\n numConsts[i],\n Number[numConsts[i]],\n Interpreter.NONCONFIGURABLE_READONLY_NONENUMERABLE_DESCRIPTOR\n );\n }\n\n // Instance methods on Number.\n wrapper = function toExponential(fractionDigits) {\n try {\n return Number(this).toExponential(fractionDigits);\n } catch (e) {\n // Throws if fractionDigits isn't within 0-20.\n thisInterpreter.throwException(thisInterpreter.ERROR, e.message);\n }\n };\n this.setNativeFunctionPrototype(this.NUMBER, \"toExponential\", wrapper);\n\n wrapper = function toFixed(digits) {\n try {\n return Number(this).toFixed(digits);\n } catch (e) {\n // Throws if digits isn't within 0-20.\n thisInterpreter.throwException(thisInterpreter.ERROR, e.message);\n }\n };\n this.setNativeFunctionPrototype(this.NUMBER, \"toFixed\", wrapper);\n\n wrapper = function toPrecision(precision) {\n try {\n return Number(this).toPrecision(precision);\n } catch (e) {\n // Throws if precision isn't within range (depends on implementation).\n thisInterpreter.throwException(thisInterpreter.ERROR, e.message);\n }\n };\n this.setNativeFunctionPrototype(this.NUMBER, \"toPrecision\", wrapper);\n\n wrapper = function toString(radix) {\n try {\n return Number(this).toString(radix);\n } catch (e) {\n // Throws if radix isn't within 2-36.\n thisInterpreter.throwException(thisInterpreter.ERROR, e.message);\n }\n };\n this.setNativeFunctionPrototype(this.NUMBER, \"toString\", wrapper);\n\n wrapper = function toLocaleString(locales, options) {\n locales = locales ? thisInterpreter.pseudoToNative(locales) : undefined;\n options = options ? thisInterpreter.pseudoToNative(options) : undefined;\n try {\n return Number(this).toLocaleString(/** @type {?} */ (locales), /** @type {?} */ (options));\n } catch (e) {\n thisInterpreter.throwException(thisInterpreter.ERROR, \"toLocaleString: \" + e.message);\n }\n };\n this.setNativeFunctionPrototype(this.NUMBER, \"toLocaleString\", wrapper);\n};\n\n/**\n * Initialize the Date class.\n * @param {!Interpreter.Object} globalObject Global object.\n */\nInterpreter.prototype.initDate = function (globalObject) {\n var thisInterpreter = this;\n var wrapper;\n // Date constructor.\n wrapper = function Date(_value, var_args) {\n if (!thisInterpreter.calledWithNew()) {\n // Called as `Date()`.\n // Calling Date() as a function returns a string, no arguments are heeded.\n return Interpreter.nativeGlobal.Date();\n }\n // Called as `new Date(...)`.\n var args = [null].concat(Array.from(arguments));\n this.data = new (Function.prototype.bind.apply(Interpreter.nativeGlobal.Date, args))();\n return this;\n };\n this.DATE = this.createNativeFunction(wrapper, true);\n this.DATE_PROTO = this.DATE.properties[\"prototype\"];\n this.setProperty(globalObject, \"Date\", this.DATE, Interpreter.NONENUMERABLE_DESCRIPTOR);\n\n // Static methods on Date.\n this.setProperty(\n this.DATE,\n \"now\",\n this.createNativeFunction(Date.now, false),\n Interpreter.NONENUMERABLE_DESCRIPTOR\n );\n\n this.setProperty(\n this.DATE,\n \"parse\",\n this.createNativeFunction(Date.parse, false),\n Interpreter.NONENUMERABLE_DESCRIPTOR\n );\n\n this.setProperty(\n this.DATE,\n \"UTC\",\n this.createNativeFunction(Date.UTC, false),\n Interpreter.NONENUMERABLE_DESCRIPTOR\n );\n\n // Instance methods on Date.\n var functions = [\n \"getDate\",\n \"getDay\",\n \"getFullYear\",\n \"getHours\",\n \"getMilliseconds\",\n \"getMinutes\",\n \"getMonth\",\n \"getSeconds\",\n \"getTime\",\n \"getTimezoneOffset\",\n \"getUTCDate\",\n \"getUTCDay\",\n \"getUTCFullYear\",\n \"getUTCHours\",\n \"getUTCMilliseconds\",\n \"getUTCMinutes\",\n \"getUTCMonth\",\n \"getUTCSeconds\",\n \"getYear\",\n \"setDate\",\n \"setFullYear\",\n \"setHours\",\n \"setMilliseconds\",\n \"setMinutes\",\n \"setMonth\",\n \"setSeconds\",\n \"setTime\",\n \"setUTCDate\",\n \"setUTCFullYear\",\n \"setUTCHours\",\n \"setUTCMilliseconds\",\n \"setUTCMinutes\",\n \"setUTCMonth\",\n \"setUTCSeconds\",\n \"setYear\",\n \"toDateString\",\n \"toISOString\",\n \"toJSON\",\n \"toGMTString\",\n \"toLocaleDateString\",\n \"toLocaleString\",\n \"toLocaleTimeString\",\n \"toTimeString\",\n \"toUTCString\",\n ];\n for (var i = 0; i < functions.length; i++) {\n wrapper = (function (nativeFunc) {\n return function (var_args) {\n var date = this.data;\n if (!(date instanceof Date)) {\n thisInterpreter.throwException(\n thisInterpreter.TYPE_ERROR,\n nativeFunc + \" not called on a Date\"\n );\n }\n var args = [];\n for (var i = 0; i < arguments.length; i++) {\n args[i] = thisInterpreter.pseudoToNative(arguments[i]);\n }\n return date[nativeFunc].apply(date, args);\n };\n })(functions[i]);\n this.setNativeFunctionPrototype(this.DATE, functions[i], wrapper);\n }\n};\n\n/**\n * Initialize Regular Expression object.\n * @param {!Interpreter.Object} globalObject Global object.\n */\nInterpreter.prototype.initRegExp = function (globalObject) {\n var thisInterpreter = this;\n var wrapper;\n // RegExp constructor.\n wrapper = function RegExp(pattern, flags) {\n if (thisInterpreter.calledWithNew()) {\n // Called as `new RegExp()`.\n var rgx = this;\n } else {\n // Called as `RegExp()`.\n if (flags === undefined && thisInterpreter.isa(pattern, thisInterpreter.REGEXP)) {\n // Regexp(/foo/) returns the same obj.\n return pattern;\n }\n var rgx = thisInterpreter.createObjectProto(thisInterpreter.REGEXP_PROTO);\n }\n pattern = pattern === undefined ? \"\" : String(pattern);\n flags = flags ? String(flags) : \"\";\n if (!/^[gmi]*$/.test(flags)) {\n // Don't allow ES6 flags 'y' and 's' to pass through.\n thisInterpreter.throwException(thisInterpreter.SYNTAX_ERROR, \"Invalid regexp flag: \" + flags);\n }\n try {\n var nativeRegExp = new Interpreter.nativeGlobal.RegExp(pattern, flags);\n } catch (e) {\n // Throws if flags are repeated.\n thisInterpreter.throwException(thisInterpreter.SYNTAX_ERROR, e.message);\n }\n thisInterpreter.populateRegExp(rgx, nativeRegExp);\n return rgx;\n };\n this.REGEXP = this.createNativeFunction(wrapper, true);\n this.REGEXP_PROTO = this.REGEXP.properties[\"prototype\"];\n this.setProperty(globalObject, \"RegExp\", this.REGEXP, Interpreter.NONENUMERABLE_DESCRIPTOR);\n\n this.setProperty(\n this.REGEXP.properties[\"prototype\"],\n \"global\",\n undefined,\n Interpreter.READONLY_NONENUMERABLE_DESCRIPTOR\n );\n this.setProperty(\n this.REGEXP.properties[\"prototype\"],\n \"ignoreCase\",\n undefined,\n Interpreter.READONLY_NONENUMERABLE_DESCRIPTOR\n );\n this.setProperty(\n this.REGEXP.properties[\"prototype\"],\n \"multiline\",\n undefined,\n Interpreter.READONLY_NONENUMERABLE_DESCRIPTOR\n );\n this.setProperty(\n this.REGEXP.properties[\"prototype\"],\n \"source\",\n \"(?:)\",\n Interpreter.READONLY_NONENUMERABLE_DESCRIPTOR\n );\n\n // Use polyfill to avoid complexity of regexp threads.\n this.polyfills_.push(\n \"Object.defineProperty(RegExp.prototype, 'test',\",\n \"{configurable: true, writable: true, value:\",\n \"function test(str) {\",\n \"return !!this.exec(str);\",\n \"}\",\n \"});\"\n );\n\n wrapper = function exec(string, callback) {\n var regexp = this.data;\n string = String(string);\n // Get lastIndex from wrapped regexp, since this is settable.\n regexp.lastIndex = Number(thisInterpreter.getProperty(this, \"lastIndex\"));\n // Example of catastrophic exec RegExp:\n // /^(a+)+b/.exec('aaaaaaaaaaaaaaaaaaaaaaaaaaaaaac')\n thisInterpreter.maybeThrowRegExp(regexp, callback);\n if (thisInterpreter[\"REGEXP_MODE\"] === 2) {\n if (Interpreter.vm) {\n // Run exec in vm.\n var sandbox = {\n string: string,\n regexp: regexp,\n };\n var code = \"regexp.exec(string)\";\n var match = thisInterpreter.vmCall(code, sandbox, regexp, callback);\n if (match !== Interpreter.REGEXP_TIMEOUT) {\n thisInterpreter.setProperty(this, \"lastIndex\", regexp.lastIndex);\n callback(matchToPseudo(match));\n }\n } else {\n // Run exec in separate thread.\n // Note that lastIndex is not preserved when a RegExp is passed to a\n // Web Worker. Thus it needs to be passed back and forth separately.\n var execWorker = thisInterpreter.createWorker();\n var pid = thisInterpreter.regExpTimeout(regexp, execWorker, callback);\n var thisPseudoRegExp = this;\n execWorker.onmessage = function (e) {\n clearTimeout(pid);\n // Return tuple: [result, lastIndex]\n thisInterpreter.setProperty(thisPseudoRegExp, \"lastIndex\", e.data[1]);\n callback(matchToPseudo(e.data[0]));\n };\n execWorker.postMessage([\"exec\", regexp, regexp.lastIndex, string]);\n }\n return;\n }\n // Run exec natively.\n var match = regexp.exec(string);\n thisInterpreter.setProperty(this, \"lastIndex\", regexp.lastIndex);\n callback(matchToPseudo(match));\n\n function matchToPseudo(match) {\n if (match) {\n var result = thisInterpreter.arrayNativeToPseudo(match);\n // match has additional properties.\n thisInterpreter.setProperty(result, \"index\", match.index);\n thisInterpreter.setProperty(result, \"input\", match.input);\n return result;\n }\n return null;\n }\n };\n this.setAsyncFunctionPrototype(this.REGEXP, \"exec\", wrapper);\n};\n\n/**\n * Initialize the Error class.\n * @param {!Interpreter.Object} globalObject Global object.\n */\nInterpreter.prototype.initError = function (globalObject) {\n var thisInterpreter = this;\n // Error constructor.\n this.ERROR = this.createNativeFunction(function Error(opt_message) {\n if (thisInterpreter.calledWithNew()) {\n // Called as `new Error()`.\n var newError = this;\n } else {\n // Called as `Error()`.\n var newError = thisInterpreter.createObject(thisInterpreter.ERROR);\n }\n thisInterpreter.populateError(newError, opt_message);\n return newError;\n }, true);\n this.setProperty(globalObject, \"Error\", this.ERROR, Interpreter.NONENUMERABLE_DESCRIPTOR);\n this.setProperty(\n this.ERROR.properties[\"prototype\"],\n \"message\",\n \"\",\n Interpreter.NONENUMERABLE_DESCRIPTOR\n );\n this.setProperty(\n this.ERROR.properties[\"prototype\"],\n \"name\",\n \"Error\",\n Interpreter.NONENUMERABLE_DESCRIPTOR\n );\n\n var createErrorSubclass = function (name) {\n var constructor = thisInterpreter.createNativeFunction(function (opt_message) {\n if (thisInterpreter.calledWithNew()) {\n // Called as `new XyzError()`.\n var newError = this;\n } else {\n // Called as `XyzError()`.\n var newError = thisInterpreter.createObject(constructor);\n }\n thisInterpreter.populateError(newError, opt_message);\n return newError;\n }, true);\n thisInterpreter.setProperty(\n constructor,\n \"prototype\",\n thisInterpreter.createObject(thisInterpreter.ERROR),\n Interpreter.NONENUMERABLE_DESCRIPTOR\n );\n thisInterpreter.setProperty(\n constructor.properties[\"prototype\"],\n \"name\",\n name,\n Interpreter.NONENUMERABLE_DESCRIPTOR\n );\n thisInterpreter.setProperty(\n globalObject,\n name,\n constructor,\n Interpreter.NONENUMERABLE_DESCRIPTOR\n );\n\n return constructor;\n };\n\n this.EVAL_ERROR = createErrorSubclass(\"EvalError\");\n this.RANGE_ERROR = createErrorSubclass(\"RangeError\");\n this.REFERENCE_ERROR = createErrorSubclass(\"ReferenceError\");\n this.SYNTAX_ERROR = createErrorSubclass(\"SyntaxError\");\n this.TYPE_ERROR = createErrorSubclass(\"TypeError\");\n this.URI_ERROR = createErrorSubclass(\"URIError\");\n};\n\n/**\n * Initialize Math object.\n * @param {!Interpreter.Object} globalObject Global object.\n */\nInterpreter.prototype.initMath = function (globalObject) {\n var myMath = this.createObjectProto(this.OBJECT_PROTO);\n this.setProperty(globalObject, \"Math\", myMath, Interpreter.NONENUMERABLE_DESCRIPTOR);\n var mathConsts = [\"E\", \"LN2\", \"LN10\", \"LOG2E\", \"LOG10E\", \"PI\", \"SQRT1_2\", \"SQRT2\"];\n for (var i = 0; i < mathConsts.length; i++) {\n this.setProperty(\n myMath,\n mathConsts[i],\n Math[mathConsts[i]],\n Interpreter.READONLY_NONENUMERABLE_DESCRIPTOR\n );\n }\n var numFunctions = [\n \"abs\",\n \"acos\",\n \"asin\",\n \"atan\",\n \"atan2\",\n \"ceil\",\n \"cos\",\n \"exp\",\n \"floor\",\n \"log\",\n \"max\",\n \"min\",\n \"pow\",\n \"random\",\n \"round\",\n \"sin\",\n \"sqrt\",\n \"tan\",\n ];\n for (var i = 0; i < numFunctions.length; i++) {\n this.setProperty(\n myMath,\n numFunctions[i],\n this.createNativeFunction(Math[numFunctions[i]], false),\n Interpreter.NONENUMERABLE_DESCRIPTOR\n );\n }\n};\n\n/**\n * Initialize JSON object.\n * @param {!Interpreter.Object} globalObject Global object.\n */\nInterpreter.prototype.initJSON = function (globalObject) {\n var wrapper;\n var thisInterpreter = this;\n var myJSON = thisInterpreter.createObjectProto(this.OBJECT_PROTO);\n this.setProperty(globalObject, \"JSON\", myJSON, Interpreter.NONENUMERABLE_DESCRIPTOR);\n\n wrapper = function parse(text) {\n try {\n var nativeObj = JSON.parse(String(text));\n } catch (e) {\n thisInterpreter.throwException(thisInterpreter.SYNTAX_ERROR, e.message);\n }\n return thisInterpreter.nativeToPseudo(nativeObj);\n };\n this.setProperty(myJSON, \"parse\", this.createNativeFunction(wrapper, false));\n\n wrapper = function stringify(value, replacer, space) {\n if (replacer && replacer.class === \"Function\") {\n thisInterpreter.throwException(\n thisInterpreter.TYPE_ERROR,\n \"Function replacer on JSON.stringify not supported\"\n );\n } else if (replacer && replacer.class === \"Array\") {\n replacer = thisInterpreter.arrayPseudoToNative(replacer);\n replacer = replacer.filter(function (word) {\n // Spec says we should also support boxed primitives here.\n return typeof word === \"string\" || typeof word === \"number\";\n });\n } else {\n replacer = null;\n }\n // Spec says we should also support boxed primitives here.\n if (typeof space !== \"string\" && typeof space !== \"number\") {\n space = undefined;\n }\n\n var nativeObj = thisInterpreter.pseudoToNative(value);\n try {\n var str = JSON.stringify(nativeObj, replacer, space);\n } catch (e) {\n thisInterpreter.throwException(thisInterpreter.TYPE_ERROR, e.message);\n }\n return str;\n };\n this.setProperty(myJSON, \"stringify\", this.createNativeFunction(wrapper, false));\n};\n\n/**\n * Is an object of a certain class?\n * @param {Interpreter.Value} child Object to check.\n * @param {Interpreter.Object} constructor Constructor of object.\n * @returns {boolean} True if object is the class or inherits from it.\n * False otherwise.\n */\nInterpreter.prototype.isa = function (child, constructor) {\n if (child === null || child === undefined || !constructor) {\n return false;\n }\n var proto = constructor.properties[\"prototype\"];\n if (child === proto) {\n return true;\n }\n // The first step up the prototype chain is harder since the child might be\n // a primitive value. Subsequent steps can just follow the .proto property.\n child = this.getPrototype(child);\n while (child) {\n if (child === proto) {\n return true;\n }\n child = child.proto;\n }\n return false;\n};\n\n/**\n * Initialize a pseudo regular expression object based on a native regular\n * expression object.\n * @param {!Interpreter.Object} pseudoRegexp The existing object to set.\n * @param {!RegExp} nativeRegexp The native regular expression.\n */\nInterpreter.prototype.populateRegExp = function (pseudoRegexp, nativeRegexp) {\n pseudoRegexp.data = new RegExp(nativeRegexp.source, nativeRegexp.flags);\n // lastIndex is settable, all others are read-only attributes\n this.setProperty(\n pseudoRegexp,\n \"lastIndex\",\n nativeRegexp.lastIndex,\n Interpreter.NONENUMERABLE_DESCRIPTOR\n );\n this.setProperty(\n pseudoRegexp,\n \"source\",\n nativeRegexp.source,\n Interpreter.READONLY_NONENUMERABLE_DESCRIPTOR\n );\n this.setProperty(\n pseudoRegexp,\n \"global\",\n nativeRegexp.global,\n Interpreter.READONLY_NONENUMERABLE_DESCRIPTOR\n );\n this.setProperty(\n pseudoRegexp,\n \"ignoreCase\",\n nativeRegexp.ignoreCase,\n Interpreter.READONLY_NONENUMERABLE_DESCRIPTOR\n );\n this.setProperty(\n pseudoRegexp,\n \"multiline\",\n nativeRegexp.multiline,\n Interpreter.READONLY_NONENUMERABLE_DESCRIPTOR\n );\n};\n\n/**\n * Initialize a pseudo error object.\n * @param {!Interpreter.Object} pseudoError The existing object to set.\n * @param {string=} opt_message Error's message.\n */\nInterpreter.prototype.populateError = function (pseudoError, opt_message) {\n if (opt_message) {\n this.setProperty(\n pseudoError,\n \"message\",\n String(opt_message),\n Interpreter.NONENUMERABLE_DESCRIPTOR\n );\n }\n var tracebackData = [];\n for (var i = this.stateStack.length - 1; i >= 0; i--) {\n var state = this.stateStack[i];\n var node = state.node;\n if (node.type === \"CallExpression\") {\n var func = state.func_;\n if (func && tracebackData.length) {\n tracebackData[tracebackData.length - 1].datumName = this.getProperty(func, \"name\");\n }\n }\n if (node.loc && (!tracebackData.length || node.type === \"CallExpression\")) {\n tracebackData.push({ datumLoc: node.loc });\n }\n }\n var errorName = String(this.getProperty(pseudoError, \"name\"));\n var errorMessage = String(this.getProperty(pseudoError, \"message\"));\n var stackString = errorName + \": \" + errorMessage + \"\\n\";\n for (var i = 0; i < tracebackData.length; i++) {\n var loc = tracebackData[i].datumLoc;\n var name = tracebackData[i].datumName;\n var locString = loc.source + \":\" + loc.start.line + \":\" + loc.start.column;\n if (name) {\n stackString += \" at \" + name + \" (\" + locString + \")\\n\";\n } else {\n stackString += \" at \" + locString + \"\\n\";\n }\n }\n this.setProperty(pseudoError, \"stack\", stackString.trim(), Interpreter.NONENUMERABLE_DESCRIPTOR);\n};\n\n/**\n * Create a Web Worker to execute regular expressions.\n * Using a separate file fails in Chrome when run locally on a file:// URI.\n * Using a data encoded URI fails in IE and Edge.\n * Using a blob works in IE11 and all other browsers.\n * @returns {!Worker} Web Worker with regexp execution code loaded.\n */\nInterpreter.prototype.createWorker = function () {\n var blob = this.createWorker.blob_;\n if (!blob) {\n blob = new Blob([Interpreter.WORKER_CODE.join(\"\\n\")], { type: \"application/javascript\" });\n // Cache the blob, so it doesn't need to be created next time.\n this.createWorker.blob_ = blob;\n }\n return new Worker(URL.createObjectURL(blob));\n};\n\n/**\n * Execute regular expressions in a node vm.\n * @param {string} code Code to execute.\n * @param {!Object} sandbox Global variables for new vm.\n * @param {!RegExp} nativeRegExp Regular expression.\n * @param {!Function} callback Asynchronous callback function.\n */\nInterpreter.prototype.vmCall = function (code, sandbox, nativeRegExp, callback) {\n var options = { timeout: this[\"REGEXP_THREAD_TIMEOUT\"] };\n try {\n return Interpreter.vm[\"runInNewContext\"](code, sandbox, options);\n } catch (_e) {\n callback(null);\n this.throwException(this.ERROR, \"RegExp Timeout: \" + nativeRegExp);\n }\n return Interpreter.REGEXP_TIMEOUT;\n};\n\n/**\n * If REGEXP_MODE is 0, then throw an error.\n * Also throw if REGEXP_MODE is 2 and JS doesn't support Web Workers or vm.\n * @param {!RegExp} nativeRegExp Regular expression.\n * @param {!Function} callback Asynchronous callback function.\n */\nInterpreter.prototype.maybeThrowRegExp = function (nativeRegExp, callback) {\n var ok;\n if (this[\"REGEXP_MODE\"] === 0) {\n // Fail: No RegExp support.\n ok = false;\n } else if (this[\"REGEXP_MODE\"] === 1) {\n // Ok: Native RegExp support.\n ok = true;\n } else {\n // Sandboxed RegExp handling.\n if (Interpreter.vm) {\n // Ok: Node's vm module already loaded.\n ok = true;\n } else if (typeof Worker === \"function\" && typeof URL === \"function\") {\n // Ok: Web Workers available.\n ok = true;\n } else if (typeof require === \"function\") {\n // Try to load Node's vm module.\n try {\n Interpreter.vm = require(\"vm\");\n } catch (_e) {}\n ok = !!Interpreter.vm;\n } else {\n // Fail: Neither Web Workers nor vm available.\n ok = false;\n }\n }\n if (!ok) {\n callback(null);\n this.throwException(this.ERROR, \"Regular expressions not supported: \" + nativeRegExp);\n }\n};\n\n/**\n * Set a timeout for regular expression threads. Unless cancelled, this will\n * terminate the thread and throw an error.\n * @param {!RegExp} nativeRegExp Regular expression (used for error message).\n * @param {!Worker} worker Thread to terminate.\n * @param {!Function} callback Async callback function to continue execution.\n * @returns {number} PID of timeout. Used to cancel if thread completes.\n */\nInterpreter.prototype.regExpTimeout = function (nativeRegExp, worker, callback) {\n var thisInterpreter = this;\n return setTimeout(function () {\n worker.terminate();\n callback(null);\n try {\n thisInterpreter.throwException(thisInterpreter.ERROR, \"RegExp Timeout: \" + nativeRegExp);\n } catch (_e) {\n // Eat the expected Interpreter.STEP_ERROR.\n }\n }, this[\"REGEXP_THREAD_TIMEOUT\"]);\n};\n\n/**\n * Create a new data object based on a constructor's prototype.\n * @param {Interpreter.Object} constructor Parent constructor function,\n * or null if scope object.\n * @returns {!Interpreter.Object} New data object.\n */\nInterpreter.prototype.createObject = function (constructor) {\n return this.createObjectProto(constructor && constructor.properties[\"prototype\"]);\n};\n\n/**\n * Create a new data object based on a prototype.\n * @param {Interpreter.Object} proto Prototype object.\n * @returns {!Interpreter.Object} New data object.\n */\nInterpreter.prototype.createObjectProto = function (proto) {\n if (typeof proto !== \"object\") {\n throw Error(\"Non object prototype\");\n }\n var obj = new Interpreter.Object(proto);\n if (this.isa(obj, this.ERROR)) {\n // Record this object as being an error so that its toString function can\n // process it correctly (toString has no access to the interpreter and could\n // not otherwise determine that the object is an error).\n obj.class = \"Error\";\n }\n return obj;\n};\n\n/**\n * Create a new array.\n * @returns {!Interpreter.Object} New array.\n */\nInterpreter.prototype.createArray = function () {\n var array = this.createObjectProto(this.ARRAY_PROTO);\n // Arrays have length.\n this.setProperty(array, \"length\", 0, { configurable: false, enumerable: false, writable: true });\n array.class = \"Array\";\n return array;\n};\n\n/**\n * Create a new function object (could become interpreted or native or async).\n * @param {number} argumentLength Number of arguments.\n * @param {boolean} isConstructor True if function can be used with 'new'.\n * @returns {!Interpreter.Object} New function.\n * @private\n */\nInterpreter.prototype.createFunctionBase_ = function (argumentLength, isConstructor) {\n var func = this.createObjectProto(this.FUNCTION_PROTO);\n if (isConstructor) {\n var proto = this.createObjectProto(this.OBJECT_PROTO);\n this.setProperty(func, \"prototype\", proto, Interpreter.NONENUMERABLE_DESCRIPTOR);\n this.setProperty(proto, \"constructor\", func, Interpreter.NONENUMERABLE_DESCRIPTOR);\n } else {\n func.illegalConstructor = true;\n }\n this.setProperty(func, \"length\", argumentLength, Interpreter.READONLY_NONENUMERABLE_DESCRIPTOR);\n func.class = \"Function\";\n // When making changes to this function, check to see if those changes also\n // need to be made to the creation of FUNCTION_PROTO in initFunction.\n return func;\n};\n\n/**\n * Create a new interpreted function.\n * @param {!Object} node AST node defining the function.\n * @param {!Interpreter.Scope} scope Parent scope.\n * @param {string=} opt_name Optional name for function.\n * @returns {!Interpreter.Object} New function.\n */\nInterpreter.prototype.createFunction = function (node, scope, opt_name) {\n var func = this.createFunctionBase_(node.params.length, true);\n func.parentScope = scope;\n func.node = node;\n // Choose a name for this function.\n // function foo() {} -> 'foo'\n // var bar = function() {}; -> 'bar'\n // var bar = function foo() {}; -> 'foo'\n // foo.bar = function() {}; -> ''\n // var bar = new Function(''); -> 'anonymous'\n var name = node.id ? String(node.id.name) : opt_name || \"\";\n this.setProperty(func, \"name\", name, Interpreter.READONLY_NONENUMERABLE_DESCRIPTOR);\n return func;\n};\n\n/**\n * Create a new native function.\n * @param {!Function} nativeFunc JavaScript function.\n * @param {boolean} isConstructor True if function can be used with 'new'.\n * @returns {!Interpreter.Object} New function.\n */\nInterpreter.prototype.createNativeFunction = function (nativeFunc, isConstructor) {\n var func = this.createFunctionBase_(nativeFunc.length, isConstructor);\n func.nativeFunc = nativeFunc;\n nativeFunc.id = this.functionCounter_++;\n this.setProperty(func, \"name\", nativeFunc.name, Interpreter.READONLY_NONENUMERABLE_DESCRIPTOR);\n return func;\n};\n\n/**\n * Create a new native asynchronous function.\n * @param {!Function} asyncFunc JavaScript function.\n * @returns {!Interpreter.Object} New function.\n */\nInterpreter.prototype.createAsyncFunction = function (asyncFunc) {\n var func = this.createFunctionBase_(asyncFunc.length, true);\n func.asyncFunc = asyncFunc;\n asyncFunc.id = this.functionCounter_++;\n this.setProperty(func, \"name\", asyncFunc.name, Interpreter.READONLY_NONENUMERABLE_DESCRIPTOR);\n return func;\n};\n\n/**\n * Converts from a native JavaScript object or value to a JS-Interpreter object.\n * Can handle JSON-style values, regular expressions, dates and functions.\n * Does NOT handle cycles.\n * @param {*} nativeObj The native JavaScript object to be converted.\n * @returns {Interpreter.Value} The equivalent JS-Interpreter object.\n */\nInterpreter.prototype.nativeToPseudo = function (nativeObj) {\n if (nativeObj instanceof Interpreter.Object) {\n throw Error(\"Object is already pseudo\");\n }\n if (\n nativeObj === null ||\n nativeObj === undefined ||\n nativeObj === true ||\n nativeObj === false ||\n typeof nativeObj === \"string\" ||\n typeof nativeObj === \"number\"\n ) {\n return nativeObj;\n }\n\n if (nativeObj instanceof RegExp) {\n var pseudoRegexp = this.createObjectProto(this.REGEXP_PROTO);\n this.populateRegExp(pseudoRegexp, nativeObj);\n return pseudoRegexp;\n }\n\n if (nativeObj instanceof Date) {\n var pseudoDate = this.createObjectProto(this.DATE_PROTO);\n pseudoDate.data = new Date(nativeObj.valueOf());\n return pseudoDate;\n }\n\n if (typeof nativeObj === \"function\") {\n var thisInterpreter = this;\n var wrapper = function () {\n var args = Array.prototype.slice.call(arguments).map(function (i) {\n return thisInterpreter.pseudoToNative(i);\n });\n var value = nativeObj.apply(thisInterpreter, args);\n return thisInterpreter.nativeToPseudo(value);\n };\n var prototype = Object.getOwnPropertyDescriptor(nativeObj, \"prototype\");\n return this.createNativeFunction(wrapper, !!prototype);\n }\n\n if (Array.isArray(nativeObj)) {\n // Array.\n var pseudoArray = this.createArray();\n for (var i = 0; i < nativeObj.length; i++) {\n if (i in nativeObj) {\n this.setProperty(pseudoArray, i, this.nativeToPseudo(nativeObj[i]));\n }\n }\n return pseudoArray;\n }\n\n // Object.\n var pseudoObj = this.createObjectProto(this.OBJECT_PROTO);\n for (var key in nativeObj) {\n this.setProperty(pseudoObj, key, this.nativeToPseudo(nativeObj[key]));\n }\n return pseudoObj;\n};\n\n/**\n * Converts from a JS-Interpreter object to native JavaScript object.\n * Can handle JSON-style values, regular expressions, and dates.\n * Does handle cycles.\n * @param {Interpreter.Value} pseudoObj The JS-Interpreter object to be\n * converted.\n * @param {Object=} opt_cycles Cycle detection object (used by recursive calls).\n * @returns {*} The equivalent native JavaScript object or value.\n */\nInterpreter.prototype.pseudoToNative = function (pseudoObj, opt_cycles) {\n if ((typeof pseudoObj !== \"object\" && typeof pseudoObj !== \"function\") || pseudoObj === null) {\n return pseudoObj;\n }\n if (!(pseudoObj instanceof Interpreter.Object)) {\n throw Error(\"Object is not pseudo\");\n }\n\n if (this.isa(pseudoObj, this.REGEXP)) {\n // Regular expression.\n var nativeRegExp = new RegExp(pseudoObj.data.source, pseudoObj.data.flags);\n nativeRegExp.lastIndex = pseudoObj.data.lastIndex;\n return nativeRegExp;\n }\n\n if (this.isa(pseudoObj, this.DATE)) {\n // Date.\n return new Date(pseudoObj.data.valueOf());\n }\n\n var cycles = opt_cycles || {\n pseudo: [],\n native: [],\n };\n var index = cycles.pseudo.indexOf(pseudoObj);\n if (index !== -1) {\n return cycles.native[index];\n }\n cycles.pseudo.push(pseudoObj);\n var nativeObj;\n if (this.isa(pseudoObj, this.ARRAY)) {\n // Array.\n nativeObj = [];\n cycles.native.push(nativeObj);\n var len = this.getProperty(pseudoObj, \"length\");\n for (var i = 0; i < len; i++) {\n if (this.hasProperty(pseudoObj, i)) {\n nativeObj[i] = this.pseudoToNative(this.getProperty(pseudoObj, i), cycles);\n }\n }\n } else {\n // Object.\n nativeObj = {};\n cycles.native.push(nativeObj);\n var val;\n for (var key in pseudoObj.properties) {\n val = this.pseudoToNative(pseudoObj.properties[key], cycles);\n // Use defineProperty to avoid side effects if setting '__proto__'.\n Object.defineProperty(nativeObj, key, {\n value: val,\n writable: true,\n enumerable: true,\n configurable: true,\n });\n }\n }\n cycles.pseudo.pop();\n cycles.native.pop();\n return nativeObj;\n};\n\n/**\n * Converts from a native JavaScript array to a JS-Interpreter array.\n * Does handle non-numeric properties (like str.match's index prop).\n * Does NOT recurse into the array's contents.\n * @param {!Array} nativeArray The JavaScript array to be converted.\n * @returns {!Interpreter.Object} The equivalent JS-Interpreter array.\n */\nInterpreter.prototype.arrayNativeToPseudo = function (nativeArray) {\n var pseudoArray = this.createArray();\n var props = /** @type {!Array<?>} */ (Object.getOwnPropertyNames(nativeArray));\n for (var i = 0; i < props.length; i++) {\n this.setProperty(pseudoArray, props[i], nativeArray[props[i]]);\n }\n return pseudoArray;\n};\n\n/**\n * Converts from a JS-Interpreter array to native JavaScript array.\n * Does handle non-numeric properties (like str.match's index prop).\n * Does NOT recurse into the array's contents.\n * @param {!Interpreter.Object} pseudoArray The JS-Interpreter array,\n * or JS-Interpreter object pretending to be an array.\n * @returns {!Array} The equivalent native JavaScript array.\n */\nInterpreter.prototype.arrayPseudoToNative = function (pseudoArray) {\n var nativeArray = [];\n for (var key in pseudoArray.properties) {\n nativeArray[/** @type {?} */ (key)] = this.getProperty(pseudoArray, key);\n }\n // pseudoArray might be an object pretending to be an array. In this case\n // it's possible that length is non-existent, invalid, or smaller than the\n // largest defined numeric property. Set length explicitly here.\n nativeArray.length = Interpreter.legalArrayLength(this.getProperty(pseudoArray, \"length\")) || 0;\n return nativeArray;\n};\n\n/**\n * Look up the prototype for this value.\n * @param {Interpreter.Value} value Data object.\n * @returns {Interpreter.Object} Prototype object, null if none.\n */\nInterpreter.prototype.getPrototype = function (value) {\n switch (typeof value) {\n case \"number\":\n return this.NUMBER.properties[\"prototype\"];\n case \"boolean\":\n return this.BOOLEAN.properties[\"prototype\"];\n case \"string\":\n return this.STRING.properties[\"prototype\"];\n }\n if (value) {\n return value.proto;\n }\n return null;\n};\n\n/**\n * Fetch a property value from a data object.\n * @param {Interpreter.Value} obj Data object.\n * @param {Interpreter.Value} name Name of property.\n * @returns {Interpreter.Value} Property value (may be undefined).\n */\nInterpreter.prototype.getProperty = function (obj, name) {\n if (this.getterStep_) {\n throw Error(\"Getter not supported in that context\");\n }\n name = String(name);\n if (obj === undefined || obj === null) {\n this.throwException(this.TYPE_ERROR, \"Cannot read property '\" + name + \"' of \" + obj);\n }\n if (typeof obj === \"object\" && !(obj instanceof Interpreter.Object)) {\n throw TypeError(\"Expecting native value or pseudo object\");\n }\n if (name === \"length\") {\n // Special cases for magic length property.\n if (this.isa(obj, this.STRING)) {\n return String(obj).length;\n }\n } else if (name.charCodeAt(0) < 0x40) {\n // Might have numbers in there?\n // Special cases for string array indexing\n if (this.isa(obj, this.STRING)) {\n var n = Interpreter.legalArrayIndex(name);\n if (!isNaN(n) && n < String(obj).length) {\n return String(obj)[n];\n }\n }\n }\n do {\n if (obj.properties && name in obj.properties) {\n var getter = obj.getter[name];\n if (getter) {\n // Flag this function as being a getter and thus needing immediate\n // execution (rather than being the value of the property).\n this.getterStep_ = true;\n return getter;\n }\n return obj.properties[name];\n }\n } while ((obj = this.getPrototype(obj)));\n return undefined;\n};\n\n/**\n * Does the named property exist on a data object.\n * @param {Interpreter.Object} obj Data object.\n * @param {Interpreter.Value} name Name of property.\n * @returns {boolean} True if property exists.\n */\nInterpreter.prototype.hasProperty = function (obj, name) {\n if (!(obj instanceof Interpreter.Object)) {\n throw TypeError(\"Primitive data type has no properties\");\n }\n name = String(name);\n if (name === \"length\" && this.isa(obj, this.STRING)) {\n return true;\n }\n if (this.isa(obj, this.STRING)) {\n var n = Interpreter.legalArrayIndex(name);\n if (!isNaN(n) && n < String(obj).length) {\n return true;\n }\n }\n do {\n if (obj.properties && name in obj.properties) {\n return true;\n }\n } while ((obj = this.getPrototype(obj)));\n return false;\n};\n\n/**\n * Set a property value on a data object.\n * @param {Interpreter.Value} obj Data object.\n * @param {Interpreter.Value} name Name of property.\n * @param {Interpreter.Value} value New property value.\n * Use Interpreter.VALUE_IN_DESCRIPTOR if value is handled by\n * descriptor instead.\n * @param {Object=} opt_descriptor Optional descriptor object.\n * @returns {!Interpreter.Object|undefined} Returns a setter function if one\n * needs to be called, otherwise undefined.\n */\nInterpreter.prototype.setProperty = function (obj, name, value, opt_descriptor) {\n if (this.setterStep_) {\n // Getter from previous call to setProperty was not handled.\n throw Error(\"Setter not supported in that context\");\n }\n name = String(name);\n if (obj === undefined || obj === null) {\n this.throwException(this.TYPE_ERROR, \"Cannot set property '\" + name + \"' of \" + obj);\n }\n if (typeof obj === \"object\" && !(obj instanceof Interpreter.Object)) {\n throw TypeError(\"Expecting native value or pseudo object\");\n }\n if (\n opt_descriptor &&\n (\"get\" in opt_descriptor || \"set\" in opt_descriptor) &&\n (\"value\" in opt_descriptor || \"writable\" in opt_descriptor)\n ) {\n this.throwException(\n this.TYPE_ERROR,\n \"Invalid property descriptor. \" +\n \"Cannot both specify accessors and a value or writable attribute\"\n );\n }\n var strict = !this.stateStack || this.getScope().strict;\n if (!(obj instanceof Interpreter.Object)) {\n if (strict) {\n this.throwException(this.TYPE_ERROR, \"Can't create property '\" + name + \"' on '\" + obj + \"'\");\n }\n return;\n }\n if (this.isa(obj, this.STRING)) {\n var n = Interpreter.legalArrayIndex(name);\n if (name === \"length\" || (!isNaN(n) && n < String(obj).length)) {\n // Can't set length or letters on String objects.\n if (strict) {\n this.throwException(\n this.TYPE_ERROR,\n \"Cannot assign to read only \" + \"property '\" + name + \"' of String '\" + obj.data + \"'\"\n );\n }\n return;\n }\n }\n if (obj.class === \"Array\") {\n // Arrays have a magic length variable that is bound to the elements.\n var len = obj.properties.length;\n var i;\n if (name === \"length\") {\n // Delete elements if length is smaller.\n if (opt_descriptor) {\n if (!(\"value\" in opt_descriptor)) {\n return;\n }\n value = opt_descriptor[\"value\"];\n }\n value = Interpreter.legalArrayLength(value);\n if (isNaN(value)) {\n this.throwException(this.RANGE_ERROR, \"Invalid array length\");\n }\n if (value < len) {\n for (i in obj.properties) {\n i = Interpreter.legalArrayIndex(i);\n if (!isNaN(i) && value <= i) {\n delete obj.properties[i];\n }\n }\n }\n } else if (!isNaN((i = Interpreter.legalArrayIndex(name)))) {\n // Increase length if this index is larger.\n obj.properties.length = Math.max(len, i + 1);\n }\n }\n if (obj.preventExtensions && !(name in obj.properties)) {\n if (strict) {\n this.throwException(\n this.TYPE_ERROR,\n \"Can't add property '\" + name + \"', object is not extensible\"\n );\n }\n return;\n }\n if (opt_descriptor) {\n // Define the property.\n var descriptor = {};\n if (\"get\" in opt_descriptor && opt_descriptor[\"get\"]) {\n obj.getter[name] = opt_descriptor[\"get\"];\n descriptor[\"get\"] = this.setProperty.placeholderGet_;\n }\n if (\"set\" in opt_descriptor && opt_descriptor[\"set\"]) {\n obj.setter[name] = opt_descriptor[\"set\"];\n descriptor[\"set\"] = this.setProperty.placeholderSet_;\n }\n if (\"configurable\" in opt_descriptor) {\n descriptor[\"configurable\"] = opt_descriptor[\"configurable\"];\n }\n if (\"enumerable\" in opt_descriptor) {\n descriptor[\"enumerable\"] = opt_descriptor[\"enumerable\"];\n }\n if (\"writable\" in opt_descriptor) {\n descriptor[\"writable\"] = opt_descriptor[\"writable\"];\n delete obj.getter[name];\n delete obj.setter[name];\n }\n if (\"value\" in opt_descriptor) {\n descriptor[\"value\"] = opt_descriptor[\"value\"];\n delete obj.getter[name];\n delete obj.setter[name];\n } else if (value !== Interpreter.VALUE_IN_DESCRIPTOR) {\n descriptor[\"value\"] = value;\n delete obj.getter[name];\n delete obj.setter[name];\n }\n try {\n Object.defineProperty(obj.properties, name, descriptor);\n } catch (e) {\n this.throwException(this.TYPE_ERROR, \"Cannot redefine property: \" + name);\n }\n // Now that the definition has suceeded, clean up any obsolete get/set funcs.\n if (\"get\" in opt_descriptor && !opt_descriptor[\"get\"]) {\n delete obj.getter[name];\n }\n if (\"set\" in opt_descriptor && !opt_descriptor[\"set\"]) {\n delete obj.setter[name];\n }\n } else {\n // Set the property.\n if (value === Interpreter.VALUE_IN_DESCRIPTOR) {\n throw ReferenceError(\"Value not specified\");\n }\n // Determine the parent (possibly self) where the property is defined.\n var defObj = obj;\n while (!(name in defObj.properties)) {\n defObj = this.getPrototype(defObj);\n if (!defObj) {\n // This is a new property.\n defObj = obj;\n break;\n }\n }\n if (defObj.setter && defObj.setter[name]) {\n this.setterStep_ = true;\n return defObj.setter[name];\n }\n if (defObj.getter && defObj.getter[name]) {\n if (strict) {\n this.throwException(\n this.TYPE_ERROR,\n \"Cannot set property '\" + name + \"' of object '\" + obj + \"' which only has a getter\"\n );\n }\n } else {\n // No setter, simple assignment.\n try {\n obj.properties[name] = value;\n } catch (_e) {\n if (strict) {\n this.throwException(\n this.TYPE_ERROR,\n \"Cannot assign to read only \" + \"property '\" + name + \"' of object '\" + obj + \"'\"\n );\n }\n }\n }\n }\n};\n\nInterpreter.prototype.setProperty.placeholderGet_ = function () {\n throw Error(\"Placeholder getter\");\n};\nInterpreter.prototype.setProperty.placeholderSet_ = function () {\n throw Error(\"Placeholder setter\");\n};\n\n/**\n * Convenience method for adding a native function as a non-enumerable property\n * onto an object's prototype.\n * @param {!Interpreter.Object} obj Data object.\n * @param {Interpreter.Value} name Name of property.\n * @param {!Function} wrapper Function object.\n */\nInterpreter.prototype.setNativeFunctionPrototype = function (obj, name, wrapper) {\n this.setProperty(\n obj.properties[\"prototype\"],\n name,\n this.createNativeFunction(wrapper, false),\n Interpreter.NONENUMERABLE_DESCRIPTOR\n );\n};\n\n/**\n * Convenience method for adding an async function as a non-enumerable property\n * onto an object's prototype.\n * @param {!Interpreter.Object} obj Data object.\n * @param {Interpreter.Value} name Name of property.\n * @param {!Function} wrapper Function object.\n */\nInterpreter.prototype.setAsyncFunctionPrototype = function (obj, name, wrapper) {\n this.setProperty(\n obj.properties[\"prototype\"],\n name,\n this.createAsyncFunction(wrapper),\n Interpreter.NONENUMERABLE_DESCRIPTOR\n );\n};\n\n/**\n * Returns the current scope from the stateStack.\n * @returns {!Interpreter.Scope} Current scope.\n */\nInterpreter.prototype.getScope = function () {\n var scope = this.stateStack[this.stateStack.length - 1].scope;\n if (!scope) {\n throw Error(\"No scope found\");\n }\n return scope;\n};\n\n/**\n * Create a new scope dictionary.\n * @param {!Object} node AST node defining the scope container\n * (e.g. a function).\n * @param {Interpreter.Scope} parentScope Scope to link to.\n * @returns {!Interpreter.Scope} New scope.\n */\nInterpreter.prototype.createScope = function (node, parentScope) {\n // Determine if this scope starts with `use strict`.\n var strict = false;\n if (parentScope && parentScope.strict) {\n strict = true;\n } else {\n var firstNode = node.body && node.body[0];\n if (\n firstNode &&\n firstNode.expression &&\n firstNode.expression.type === \"Literal\" &&\n firstNode.expression.value === \"use strict\"\n ) {\n strict = true;\n }\n }\n var object = this.createObjectProto(null);\n var scope = new Interpreter.Scope(parentScope, strict, object);\n if (!parentScope) {\n this.initGlobal(scope.object);\n }\n this.populateScope_(node, scope);\n return scope;\n};\n\n/**\n * Create a new special scope dictionary. Similar to createScope(), but\n * doesn't assume that the scope is for a function body.\n * This is used for 'catch' clauses, 'with' statements,\n * and named function expressions.\n * @param {!Interpreter.Scope} parentScope Scope to link to.\n * @param {Interpreter.Object=} opt_object Optional object to transform into\n * scope.\n * @returns {!Interpreter.Scope} New scope.\n */\nInterpreter.prototype.createSpecialScope = function (parentScope, opt_object) {\n if (!parentScope) {\n throw Error(\"parentScope required\");\n }\n var object = opt_object || this.createObjectProto(null);\n return new Interpreter.Scope(parentScope, parentScope.strict, object);\n};\n\n/**\n * Retrieves a value from the scope chain.\n * @param {string} name Name of variable.\n * @returns {Interpreter.Value} Any value.\n * May be flagged as being a getter and thus needing immediate execution\n * (rather than being the value of the property).\n */\nInterpreter.prototype.getValueFromScope = function (name) {\n var scope = this.getScope();\n while (scope && scope !== this.globalScope) {\n if (name in scope.object.properties) {\n return scope.object.properties[name];\n }\n scope = scope.parentScope;\n }\n // The root scope is also an object which has inherited properties and\n // could also have getters.\n if (scope === this.globalScope && this.hasProperty(scope.object, name)) {\n return this.getProperty(scope.object, name);\n }\n // Typeof operator is unique: it can safely look at non-defined variables.\n var prevNode = this.stateStack[this.stateStack.length - 1].node;\n if (prevNode.type === \"UnaryExpression\" && prevNode.operator === \"typeof\") {\n return undefined;\n }\n this.throwException(this.REFERENCE_ERROR, name + \" is not defined\");\n};\n\n/**\n * Sets a value to the current scope.\n * @param {string} name Name of variable.\n * @param {Interpreter.Value} value Value.\n * @returns {!Interpreter.Object|undefined} Returns a setter function if one\n * needs to be called, otherwise undefined.\n */\nInterpreter.prototype.setValueToScope = function (name, value) {\n var scope = this.getScope();\n var strict = scope.strict;\n while (scope && scope !== this.globalScope) {\n if (name in scope.object.properties) {\n try {\n scope.object.properties[name] = value;\n } catch (_e) {\n if (strict) {\n this.throwException(\n this.TYPE_ERROR,\n \"Cannot assign to read only variable '\" + name + \"'\"\n );\n }\n }\n return undefined;\n }\n scope = scope.parentScope;\n }\n // The root scope is also an object which has readonly properties and\n // could also have setters.\n if (scope === this.globalScope && (!strict || this.hasProperty(scope.object, name))) {\n return this.setProperty(scope.object, name, value);\n }\n this.throwException(this.REFERENCE_ERROR, name + \" is not defined\");\n};\n\n/**\n * Create a new scope for the given node and populate it with all variables\n * and named functions.\n * @param {!Object} node AST node (usually a program or function when initally\n * calling this function, though it recurses to scan many child nodes).\n * @param {!Interpreter.Scope} scope Scope dictionary to populate.\n * @returns {!Object} Map of all variable and function names.\n * @private\n */\nInterpreter.prototype.populateScope_ = function (node, scope) {\n var variableCache;\n if (!node.variableCache_) {\n variableCache = Object.create(null);\n switch (node.type) {\n case \"VariableDeclaration\":\n for (var i = 0; i < node.declarations.length; i++) {\n variableCache[node.declarations[i].id.name] = true;\n }\n break;\n case \"FunctionDeclaration\":\n variableCache[node.id.name] = node;\n break;\n case \"BlockStatement\":\n case \"CatchClause\":\n case \"DoWhileStatement\":\n case \"ForInStatement\":\n case \"ForStatement\":\n case \"IfStatement\":\n case \"LabeledStatement\":\n case \"Program\":\n case \"SwitchCase\":\n case \"SwitchStatement\":\n case \"TryStatement\":\n case \"WithStatement\":\n case \"WhileStatement\":\n // All the structures within which a variable or function could hide.\n var nodeClass = node.constructor;\n for (var name in node) {\n if (name === \"loc\") continue;\n var prop = node[name];\n if (prop && typeof prop === \"object\") {\n var childCache;\n if (Array.isArray(prop)) {\n for (var i = 0; i < prop.length; i++) {\n if (prop[i] && prop[i].constructor === nodeClass) {\n childCache = this.populateScope_(prop[i], scope);\n for (var name in childCache) {\n variableCache[name] = childCache[name];\n }\n }\n }\n } else {\n if (prop.constructor === nodeClass) {\n childCache = this.populateScope_(prop, scope);\n for (var name in childCache) {\n variableCache[name] = childCache[name];\n }\n }\n }\n }\n }\n }\n node.variableCache_ = variableCache;\n } else {\n variableCache = node.variableCache_;\n }\n for (var name in variableCache) {\n if (variableCache[name] === true) {\n this.setProperty(scope.object, name, undefined, Interpreter.VARIABLE_DESCRIPTOR);\n } else {\n this.setProperty(\n scope.object,\n name,\n this.createFunction(variableCache[name], scope),\n Interpreter.VARIABLE_DESCRIPTOR\n );\n }\n }\n return variableCache;\n};\n\n/**\n * Is the current state directly being called with as a construction with 'new'.\n * @returns {boolean} True if 'new foo()', false if 'foo()'.\n */\nInterpreter.prototype.calledWithNew = function () {\n return this.stateStack[this.stateStack.length - 1].isConstructor;\n};\n\n/**\n * Gets a value from the scope chain or from an object property.\n * @param {!Array} ref Name of variable or object/propname tuple.\n * @returns {Interpreter.Value} Any value.\n * May be flagged as being a getter and thus needing immediate execution\n * (rather than being the value of the property).\n */\nInterpreter.prototype.getValue = function (ref) {\n if (ref[0] === Interpreter.SCOPE_REFERENCE) {\n // A null/varname variable lookup.\n return this.getValueFromScope(ref[1]);\n } else {\n // An obj/prop components tuple (foo.bar).\n return this.getProperty(ref[0], ref[1]);\n }\n};\n\n/**\n * Sets a value to the scope chain or to an object property.\n * @param {!Array} ref Name of variable or object/propname tuple.\n * @param {Interpreter.Value} value Value.\n * @returns {!Interpreter.Object|undefined} Returns a setter function if one\n * needs to be called, otherwise undefined.\n */\nInterpreter.prototype.setValue = function (ref, value) {\n if (ref[0] === Interpreter.SCOPE_REFERENCE) {\n // A null/varname variable lookup.\n return this.setValueToScope(ref[1], value);\n }\n // An obj/prop components tuple (foo.bar).\n return this.setProperty(ref[0], ref[1], value);\n};\n\n/**\n * Throw an exception in the interpreter that can be handled by an\n * interpreter try/catch statement. If unhandled, a real exception will\n * be thrown. Can be called with either an error class and a message, or\n * with an actual object to be thrown.\n * @param {!Interpreter.Object|Interpreter.Value} errorClass Type of error\n * (if message is provided) or the value to throw (if no message).\n * @param {string=} opt_message Message being thrown.\n */\nInterpreter.prototype.throwException = function (errorClass, opt_message) {\n if (!this.globalScope) {\n // This is an error being thrown in the initialization, throw a real error.\n throw opt_message === undefined ? errorClass : opt_message;\n }\n if (opt_message === undefined || !(errorClass instanceof Interpreter.Object)) {\n var error = errorClass; // This is a value to throw, not an error class.\n } else {\n var error = this.createObject(errorClass);\n this.populateError(error, opt_message);\n }\n this.unwind(Interpreter.Completion.THROW, error, undefined);\n // Abort anything related to the current step.\n throw Interpreter.STEP_ERROR;\n};\n\n/**\n * Unwind the stack to the innermost relevant enclosing TryStatement,\n * For/ForIn/WhileStatement or Call/NewExpression. If this results in\n * the stack being completely unwound the thread will be terminated\n * and the appropriate error being thrown.\n * @param {Interpreter.Completion} type Completion type.\n * @param {Interpreter.Value} value Value computed, returned or thrown.\n * @param {string|undefined} label Target label for break or return.\n */\nInterpreter.prototype.unwind = function (type, value, label) {\n if (type === Interpreter.Completion.NORMAL) {\n throw TypeError(\"Should not unwind for NORMAL completions\");\n }\n\n loop: for (var stack = this.stateStack; stack.length > 0; stack.pop()) {\n var state = stack[stack.length - 1];\n switch (state.node.type) {\n case \"TryStatement\":\n state.cv = { type: type, value: value, label: label };\n return;\n case \"CallExpression\":\n case \"NewExpression\":\n if (type === Interpreter.Completion.RETURN) {\n state.value = value;\n return;\n } else if (type !== Interpreter.Completion.THROW) {\n throw Error(\"Unsyntactic break/continue not rejected by Acorn\");\n }\n break;\n case \"Program\":\n // Don't pop the stateStack.\n // Leave the root scope on the tree in case the program is appended to.\n state.done = true;\n break loop;\n }\n if (type === Interpreter.Completion.BREAK) {\n if (\n label ? state.labels && state.labels.indexOf(label) !== -1 : state.isLoop || state.isSwitch\n ) {\n stack.pop();\n return;\n }\n } else if (type === Interpreter.Completion.CONTINUE) {\n if (label ? state.labels && state.labels.indexOf(label) !== -1 : state.isLoop) {\n return;\n }\n }\n }\n\n // Unhandled completion. Throw a real error.\n var realError;\n if (this.isa(value, this.ERROR)) {\n var errorTable = {\n EvalError: EvalError,\n RangeError: RangeError,\n ReferenceError: ReferenceError,\n SyntaxError: SyntaxError,\n TypeError: TypeError,\n URIError: URIError,\n };\n var name = String(this.getProperty(value, \"name\"));\n var message = this.getProperty(value, \"message\").valueOf();\n var errorConstructor = errorTable[name] || Error;\n realError = errorConstructor(message);\n realError.stack = String(this.getProperty(value, \"stack\"));\n } else {\n realError = String(value);\n }\n // Overwrite the previous (more or less random) interpreter return value.\n // Replace it with the error.\n this.value = realError;\n throw realError;\n};\n\n/**\n * AST to code. Summarizes the expression at the given node. Currently\n * not guaranteed to be correct or complete. Used for error messages.\n * E.g. `escape('hello') + 42` -> 'escape(...) + 42'\n * @param {!Object} node AST node.\n * @returns {string} Code string.\n */\nInterpreter.prototype.nodeSummary = function (node) {\n switch (node.type) {\n case \"ArrayExpression\":\n return \"[...]\";\n case \"BinaryExpression\":\n case \"LogicalExpression\":\n return this.nodeSummary(node.left) + \" \" + node.operator + \" \" + this.nodeSummary(node.right);\n case \"CallExpression\":\n return this.nodeSummary(node.callee) + \"(...)\";\n case \"ConditionalExpression\":\n return (\n this.nodeSummary(node.test) +\n \" ? \" +\n this.nodeSummary(node.consequent) +\n \" : \" +\n this.nodeSummary(node.alternate)\n );\n case \"Identifier\":\n return node.name;\n case \"Literal\":\n return node.raw;\n case \"MemberExpression\":\n var obj = this.nodeSummary(node.object);\n var prop = this.nodeSummary(node.property);\n return node.computed ? obj + \"[\" + prop + \"]\" : obj + \".\" + prop;\n case \"NewExpression\":\n return \"new \" + this.nodeSummary(node.callee) + \"(...)\";\n case \"ObjectExpression\":\n return \"{...}\";\n case \"ThisExpression\":\n return \"this\";\n case \"UnaryExpression\":\n return node.operator + \" \" + this.nodeSummary(node.argument);\n case \"UpdateExpression\":\n var argument = this.nodeSummary(node.argument);\n return node.prefix ? node.operator + argument : argument + node.operator;\n }\n return \"???\";\n};\n\n/**\n * Create a new queued task.\n * @param {boolean} isInterval True if setInterval, false if setTimeout.\n * @param {!Arguments} args Arguments from setInterval and setTimeout.\n * [code, delay]\n * [functionRef, delay, param1, param2, param3, ...]\n * @returns {number} PID of new task.\n * @private\n */\nInterpreter.prototype.createTask_ = function (isInterval, args) {\n var parentState = this.stateStack[this.stateStack.length - 1];\n var argsArray = Array.from(args);\n var exec = argsArray.shift();\n var delay = Math.max(Number(argsArray.shift() || 0), 0);\n var node = this.newNode();\n var scope, functionRef, ast;\n\n if (exec instanceof Interpreter.Object && exec.class === \"Function\") {\n // setTimeout/setInterval with a function reference.\n functionRef = exec;\n node.type = \"CallExpression\";\n scope = parentState.scope;\n } else {\n // setTimeout/setInterval with code string.\n try {\n ast = this.parse_(String(exec), \"taskCode\" + this.taskCodeNumber_++);\n } catch (e) {\n // Acorn threw a SyntaxError. Rethrow as a trappable error.\n this.throwException(this.SYNTAX_ERROR, \"Invalid code: \" + e.message);\n }\n node.type = \"EvalProgram_\";\n node.body = ast.body;\n // Change highlighting to encompas the string.\n var execNode = parentState.node.arguments[0];\n var execStart = execNode ? execNode.start : undefined;\n var execEnd = execNode ? execNode.end : undefined;\n Interpreter.stripLocations_(node, execStart, execEnd);\n scope = this.globalScope;\n argsArray.length = 0;\n }\n\n var task = new Interpreter.Task(functionRef, argsArray, scope, node, isInterval ? delay : -1);\n this.scheduleTask_(task, delay);\n return task.pid;\n};\n\n/**\n * Schedule a task to execute at some time in the future.\n * @param {!Interpreter.Task} task Task to schedule.\n * @param {number} delay Number of ms before the task should execute.\n * @private\n */\nInterpreter.prototype.scheduleTask_ = function (task, delay) {\n task.time = Date.now() + delay;\n // For optimum efficiency we could do a binary search and inject the task\n // at the right spot. But 'push' & 'sort' is just two lines of code.\n this.tasks.push(task);\n this.tasks.sort(function (a, b) {\n return a.time - b.time;\n });\n};\n\n/**\n * Delete a queued task.\n * @param {number} pid PID of task to delete.\n * @private\n */\nInterpreter.prototype.deleteTask_ = function (pid) {\n for (var i = 0; i < this.tasks.length; i++) {\n if (this.tasks[i].pid == pid) {\n this.tasks.splice(i, 1);\n break;\n }\n }\n};\n\n/**\n * Find the next queued task that's due to run.\n * @returns {Interpreter.State} Starting state of next task. Null if no task.\n * @private\n */\nInterpreter.prototype.nextTask_ = function () {\n var task = this.tasks[0];\n if (!task || task.time > Date.now()) {\n return null;\n }\n // Found a task that's due to run.\n this.tasks.shift();\n if (task.interval >= 0) {\n this.scheduleTask_(task, task.interval);\n }\n var state = new Interpreter.State(task.node, task.scope);\n if (task.functionRef) {\n // setTimeout/setInterval with a function reference.\n state.doneCallee_ = 2;\n state.funcThis_ = this.globalObject;\n state.func_ = task.functionRef;\n state.doneArgs_ = true;\n state.arguments_ = task.argsArray;\n }\n return state;\n};\n\n/**\n * Create a call to a getter function.\n * @param {!Interpreter.Object} func Function to execute.\n * @param {!Interpreter.Object|!Array} left\n * Name of variable or object/propname tuple.\n * @private\n */\nInterpreter.prototype.createGetter_ = function (func, left) {\n if (!this.getterStep_) {\n throw Error(\"Unexpected call to createGetter\");\n }\n // Clear the getter flag.\n this.getterStep_ = false;\n // Normally `this` will be specified as the object component (o.x).\n // Sometimes `this` is explicitly provided (o).\n var funcThis = Array.isArray(left) ? left[0] : left;\n var node = this.newNode();\n node.type = \"CallExpression\";\n var state = new Interpreter.State(node, this.stateStack[this.stateStack.length - 1].scope);\n state.doneCallee_ = 2;\n state.funcThis_ = funcThis;\n state.func_ = func;\n state.doneArgs_ = true;\n state.arguments_ = [];\n return state;\n};\n\n/**\n * Create a call to a setter function.\n * @param {!Interpreter.Object} func Function to execute.\n * @param {!Interpreter.Object|!Array} left\n * Name of variable or object/propname tuple.\n * @param {Interpreter.Value} value Value to set.\n * @private\n */\nInterpreter.prototype.createSetter_ = function (func, left, value) {\n if (!this.setterStep_) {\n throw Error(\"Unexpected call to createSetter\");\n }\n // Clear the setter flag.\n this.setterStep_ = false;\n // Normally `this` will be specified as the object component (o.x).\n // Sometimes `this` is implicitly the global object (x).\n var funcThis = Array.isArray(left) ? left[0] : this.globalObject;\n var node = this.newNode();\n node.type = \"CallExpression\";\n var state = new Interpreter.State(node, this.stateStack[this.stateStack.length - 1].scope);\n state.doneCallee_ = 2;\n state.funcThis_ = funcThis;\n state.func_ = func;\n state.doneArgs_ = true;\n state.arguments_ = [value];\n return state;\n};\n\n/**\n * In non-strict mode `this` must be an object.\n * Must not be called in strict mode.\n * @param {Interpreter.Value} value Proposed value for `this`.\n * @returns {!Interpreter.Object} Final value for `this`.\n * @private\n */\nInterpreter.prototype.boxThis_ = function (value) {\n if (value === undefined || value === null) {\n // `Undefined` and `null` are changed to the global object.\n return this.globalObject;\n }\n if (!(value instanceof Interpreter.Object)) {\n // Primitives must be boxed.\n var box = this.createObjectProto(this.getPrototype(value));\n box.data = value;\n return box;\n }\n return value;\n};\n\n/**\n * Return the global scope object.\n * @returns {!Interpreter.Scope} Scope object.\n */\nInterpreter.prototype.getGlobalScope = function () {\n return this.globalScope;\n};\n\n/**\n * Return the state stack.\n * @returns {!Array<!Interpreter.State>} State stack.\n */\nInterpreter.prototype.getStateStack = function () {\n return this.stateStack;\n};\n\n/**\n * Replace the state stack with a new one.\n * @param {!Array<!Interpreter.State>} newStack New state stack.\n */\nInterpreter.prototype.setStateStack = function (newStack) {\n this.stateStack = newStack;\n};\n\n/**\n * Typedef for JS values.\n * @typedef {!Interpreter.Object|boolean|number|string|undefined|null}\n */\nInterpreter.Value;\n\n/**\n * Class for a state.\n * @param {!Object} node AST node for the state.\n * @param {!Interpreter.Scope} scope Scope object for the state.\n * @type Class\n */\nclass State {\n constructor(node, scope) {\n this.node = node;\n this.scope = scope;\n }\n}\nInterpreter.State = State;\n/**\n * Class for a scope.\n * @param {Interpreter.Scope} parentScope Parent scope.\n * @param {boolean} strict True if \"use strict\".\n * @param {!Interpreter.Object} object Object containing scope's variables.\n * @type Class\n */\nclass Scope {\n constructor(parentScope, strict, object) {\n this.parentScope = parentScope;\n this.strict = strict;\n this.object = object;\n }\n}\nInterpreter.Scope = Scope;\n/**\n * Class for an object.\n * @param {Interpreter.Object} proto Prototype object or null.\n * @type Class\n */\nInterpreter.Object = function (proto) {\n this.getter = Object.create(null);\n this.setter = Object.create(null);\n this.properties = Object.create(null);\n this.proto = proto;\n};\n\n/** @type {Interpreter.Object} */\nInterpreter.Object.prototype.proto = null;\n\n/** @type {string} */\nInterpreter.Object.prototype.class = \"Object\";\n\n/** @type {Date|RegExp|boolean|number|string|null} */\nInterpreter.Object.prototype.data = null;\n\n/**\n * Convert this object into a string.\n * @returns {string} String value.\n * @override\n */\nInterpreter.Object.prototype.toString = function () {\n if (!Interpreter.currentInterpreter_) {\n // Called from outside an interpreter.\n return \"[object Interpreter.Object]\";\n }\n if (!(this instanceof Interpreter.Object)) {\n // Primitive value.\n return String(this);\n }\n\n if (this.class === \"Array\") {\n // Array contents must not have cycles.\n var cycles = Interpreter.toStringCycles_;\n cycles.push(this);\n try {\n var strs = [];\n // Truncate very long strings. This is not part of the spec,\n // but it prevents hanging the interpreter for gigantic arrays.\n var maxLength = this.properties.length;\n var truncated = false;\n if (maxLength > 1024) {\n maxLength = 1000;\n truncated = true;\n }\n for (var i = 0; i < maxLength; i++) {\n var value = this.properties[i];\n strs[i] =\n value instanceof Interpreter.Object && cycles.indexOf(value) !== -1 ? \"...\" : value;\n }\n if (truncated) {\n strs.push(\"...\");\n }\n } finally {\n cycles.pop();\n }\n return strs.join(\",\");\n }\n\n if (this.class === \"Error\") {\n // Error name and message properties must not have cycles.\n var cycles = Interpreter.toStringCycles_;\n if (cycles.indexOf(this) !== -1) {\n return \"[object Error]\";\n }\n var name, message;\n // Bug: Does not support getters and setters for name or message.\n var obj = this;\n do {\n if (\"name\" in obj.properties) {\n name = obj.properties.name;\n break;\n }\n } while ((obj = obj.proto));\n obj = this;\n do {\n if (\"message\" in obj.properties) {\n message = obj.properties.message;\n break;\n }\n } while ((obj = obj.proto));\n cycles.push(this);\n try {\n name = name && String(name);\n message = message && String(message);\n } finally {\n cycles.pop();\n }\n return message ? name + \": \" + message : String(name);\n }\n\n if (this.data !== null) {\n // RegExp, Date, and boxed primitives.\n return String(this.data);\n }\n\n return \"[object \" + this.class + \"]\";\n};\n\n/**\n * Return the object's value.\n * @returns {Interpreter.Value} Value.\n * @override\n */\nInterpreter.Object.prototype.valueOf = function () {\n if (!Interpreter.currentInterpreter_) {\n // Called from outside an interpreter.\n return this;\n }\n if (this.data === undefined || this.data === null || this.data instanceof RegExp) {\n return this; // An Object, RegExp, or primitive.\n }\n if (this.data instanceof Date) {\n return this.data.valueOf(); // Milliseconds.\n }\n return /** @type {(boolean|number|string)} */ (this.data); // Boxed primitive.\n};\n\n/**\n * Class for a task.\n * @param {!Interpreter.Object|undefined} functionRef Function to call.\n * @param {!Array<Interpreter.Value>} argsArray Array of arguments.\n * @param {!Interpreter.Scope} scope Scope for this task.\n * @param {!Object} node AST node to execute.\n * @param {number} interval Number of ms this task repeats. -1 for no repeats.\n * @struct\n * @constructor\n */\nInterpreter.Task = function (functionRef, argsArray, scope, node, interval) {\n this.functionRef = functionRef;\n this.argsArray = argsArray;\n this.scope = scope;\n this.node = node;\n\n this.interval = interval;\n this.pid = ++Interpreter.Task.pid;\n this.time = 0;\n};\n\nInterpreter.Task.pid = 0;\n\n///////////////////////////////////////////////////////////////////////////////\n// Functions to handle each node type.\n///////////////////////////////////////////////////////////////////////////////\n\nInterpreter.prototype[\"stepArrayExpression\"] = function (stack, state, node) {\n var elements = node.elements;\n var n = state.n_ || 0;\n if (!state.array_) {\n state.array_ = this.createArray();\n state.array_.properties.length = elements.length;\n } else {\n this.setProperty(state.array_, n, state.value);\n n++;\n }\n while (n < elements.length) {\n // Skip missing elements - they're not defined, not undefined.\n if (elements[n]) {\n state.n_ = n;\n return new Interpreter.State(elements[n], state.scope);\n }\n n++;\n }\n stack.pop();\n stack[stack.length - 1].value = state.array_;\n};\n\nInterpreter.prototype[\"stepAssignmentExpression\"] = function (stack, state, node) {\n if (!state.doneLeft_) {\n state.doneLeft_ = true;\n var nextState = new Interpreter.State(node.left, state.scope);\n nextState.components = true;\n return nextState;\n }\n if (!state.doneRight_) {\n if (!state.leftReference_) {\n state.leftReference_ = state.value;\n }\n if (state.doneGetter_) {\n state.leftValue_ = state.value;\n }\n if (!state.doneGetter_ && node.operator !== \"=\") {\n var leftValue = this.getValue(state.leftReference_);\n state.leftValue_ = leftValue;\n if (this.getterStep_) {\n // Call the getter function.\n state.doneGetter_ = true;\n var func = /** @type {!Interpreter.Object} */ (leftValue);\n return this.createGetter_(func, state.leftReference_);\n }\n }\n state.doneRight_ = true;\n // When assigning an unnamed function to a variable, the function's name\n // is set to the variable name. Record the variable name in case the\n // right side is a functionExpression.\n // E.g. foo = function() {};\n if (node.operator === \"=\" && node.left.type === \"Identifier\") {\n state.destinationName = node.left.name;\n }\n return new Interpreter.State(node.right, state.scope);\n }\n if (state.doneSetter_) {\n // Return if setter function.\n // Setter method on property has completed.\n // Ignore its return value, and use the original set value instead.\n stack.pop();\n stack[stack.length - 1].value = state.setterValue_;\n return;\n }\n var value = state.leftValue_;\n var rightValue = state.value;\n switch (node.operator) {\n case \"=\":\n value = rightValue;\n break;\n case \"+=\":\n value += rightValue;\n break;\n case \"-=\":\n value -= rightValue;\n break;\n case \"*=\":\n value *= rightValue;\n break;\n case \"/=\":\n value /= rightValue;\n break;\n case \"%=\":\n value %= rightValue;\n break;\n case \"<<=\":\n value <<= rightValue;\n break;\n case \">>=\":\n value >>= rightValue;\n break;\n case \">>>=\":\n value >>>= rightValue;\n break;\n case \"&=\":\n value &= rightValue;\n break;\n case \"^=\":\n value ^= rightValue;\n break;\n case \"|=\":\n value |= rightValue;\n break;\n default:\n throw SyntaxError(\"Unknown assignment expression: \" + node.operator);\n }\n var setter = this.setValue(state.leftReference_, value);\n if (setter) {\n state.doneSetter_ = true;\n state.setterValue_ = value;\n return this.createSetter_(setter, state.leftReference_, value);\n }\n // Return if no setter function.\n stack.pop();\n stack[stack.length - 1].value = value;\n};\n\nInterpreter.prototype[\"stepBinaryExpression\"] = function (stack, state, node) {\n if (!state.doneLeft_) {\n state.doneLeft_ = true;\n return new Interpreter.State(node.left, state.scope);\n }\n if (!state.doneRight_) {\n state.doneRight_ = true;\n state.leftValue_ = state.value;\n return new Interpreter.State(node.right, state.scope);\n }\n stack.pop();\n var leftValue = state.leftValue_;\n var rightValue = state.value;\n var value;\n switch (node.operator) {\n case \"==\":\n value = leftValue == rightValue;\n break;\n case \"!=\":\n value = leftValue != rightValue;\n break;\n case \"===\":\n value = leftValue === rightValue;\n break;\n case \"!==\":\n value = leftValue !== rightValue;\n break;\n case \">\":\n value = leftValue > rightValue;\n break;\n case \">=\":\n value = leftValue >= rightValue;\n break;\n case \"<\":\n value = leftValue < rightValue;\n break;\n case \"<=\":\n value = leftValue <= rightValue;\n break;\n case \"+\":\n value = leftValue + rightValue;\n break;\n case \"-\":\n value = leftValue - rightValue;\n break;\n case \"*\":\n value = leftValue * rightValue;\n break;\n case \"/\":\n value = leftValue / rightValue;\n break;\n case \"%\":\n value = leftValue % rightValue;\n break;\n case \"&\":\n value = leftValue & rightValue;\n break;\n case \"|\":\n value = leftValue | rightValue;\n break;\n case \"^\":\n value = leftValue ^ rightValue;\n break;\n case \"<<\":\n value = leftValue << rightValue;\n break;\n case \">>\":\n value = leftValue >> rightValue;\n break;\n case \">>>\":\n value = leftValue >>> rightValue;\n break;\n case \"in\":\n if (!(rightValue instanceof Interpreter.Object)) {\n this.throwException(this.TYPE_ERROR, \"'in' expects an object, not '\" + rightValue + \"'\");\n }\n value = this.hasProperty(rightValue, leftValue);\n break;\n case \"instanceof\":\n if (!this.isa(rightValue, this.FUNCTION)) {\n this.throwException(\n this.TYPE_ERROR,\n \"'instanceof' expects an object, not '\" + rightValue + \"'\"\n );\n }\n value = leftValue instanceof Interpreter.Object ? this.isa(leftValue, rightValue) : false;\n break;\n default:\n throw SyntaxError(\"Unknown binary operator: \" + node.operator);\n }\n stack[stack.length - 1].value = value;\n};\n\nInterpreter.prototype[\"stepBlockStatement\"] = function (stack, state, node) {\n var n = state.n_ || 0;\n var expression = node.body[n];\n if (expression) {\n state.n_ = n + 1;\n return new Interpreter.State(expression, state.scope);\n }\n stack.pop();\n};\n\nInterpreter.prototype[\"stepBreakStatement\"] = function (stack, state, node) {\n var label = node.label && node.label.name;\n this.unwind(Interpreter.Completion.BREAK, undefined, label);\n};\n\n/**\n * Number of evals called by the interpreter.\n * @private\n */\nInterpreter.prototype.evalCodeNumber_ = 0;\n\nInterpreter.prototype[\"stepCallExpression\"] = function (stack, state, node) {\n // Handles both CallExpression and NewExpression.\n if (!state.doneCallee_) {\n state.doneCallee_ = 1;\n // Components needed to determine value of `this`.\n var nextState = new Interpreter.State(node.callee, state.scope);\n nextState.components = true;\n return nextState;\n }\n if (state.doneCallee_ === 1) {\n // Determine value of the function.\n state.doneCallee_ = 2;\n var func = state.value;\n if (Array.isArray(func)) {\n state.func_ = this.getValue(func);\n if (func[0] === Interpreter.SCOPE_REFERENCE) {\n // (Globally or locally) named function. Is it named 'eval'?\n state.directEval_ = func[1] === \"eval\";\n } else {\n // Method function, `this` is object (ignored if invoked as `new`).\n state.funcThis_ = func[0];\n }\n func = state.func_;\n if (this.getterStep_) {\n // Call the getter function.\n state.doneCallee_ = 1;\n return this.createGetter_(/** @type {!Interpreter.Object} */ (func), state.value);\n }\n } else {\n // Already evaluated function: (function(){...})();\n state.func_ = func;\n }\n state.arguments_ = [];\n state.n_ = 0;\n }\n var func = state.func_;\n if (!state.doneArgs_) {\n if (state.n_ !== 0) {\n state.arguments_.push(state.value);\n }\n if (node.arguments[state.n_]) {\n return new Interpreter.State(node.arguments[state.n_++], state.scope);\n }\n // Determine value of `this` in function.\n if (node.type === \"NewExpression\") {\n if (!(func instanceof Interpreter.Object) || func.illegalConstructor) {\n // Illegal: new escape();\n this.throwException(\n this.TYPE_ERROR,\n this.nodeSummary(node.callee) + \" is not a constructor\"\n );\n }\n // Constructor, `this` is new object.\n if (func === this.ARRAY) {\n state.funcThis_ = this.createArray();\n } else {\n var proto = func.properties[\"prototype\"];\n if (typeof proto !== \"object\" || proto === null) {\n // Non-object prototypes default to `Object.prototype`.\n proto = this.OBJECT_PROTO;\n }\n state.funcThis_ = this.createObjectProto(proto);\n }\n state.isConstructor = true;\n }\n state.doneArgs_ = true;\n }\n if (!state.doneExec_) {\n state.doneExec_ = true;\n if (!(func instanceof Interpreter.Object)) {\n this.throwException(this.TYPE_ERROR, this.nodeSummary(node.callee) + \" is not a function\");\n }\n var funcNode = func.node;\n if (funcNode) {\n var scope = this.createScope(funcNode.body, func.parentScope);\n // Build arguments variable.\n var argsList = this.createArray();\n for (var i = 0; i < state.arguments_.length; i++) {\n this.setProperty(argsList, i, state.arguments_[i]);\n }\n this.setProperty(scope.object, \"arguments\", argsList);\n // Add all arguments (may clobber 'arguments' if a param is named such).\n for (var i = 0; i < funcNode.params.length; i++) {\n var paramName = funcNode.params[i].name;\n var paramValue = state.arguments_.length > i ? state.arguments_[i] : undefined;\n this.setProperty(scope.object, paramName, paramValue);\n }\n if (!scope.strict) {\n state.funcThis_ = this.boxThis_(state.funcThis_);\n }\n this.setProperty(scope.object, \"this\", state.funcThis_, Interpreter.READONLY_DESCRIPTOR);\n state.value = undefined; // Default value if no explicit return.\n return new Interpreter.State(funcNode.body, scope);\n } else if (func.eval) {\n var code = state.arguments_[0];\n if (typeof code !== \"string\") {\n // JS does not parse String objects:\n // eval(new String('1 + 1')) -> '1 + 1'\n state.value = code;\n } else {\n try {\n var ast = this.parse_(String(code), \"eval\" + this.evalCodeNumber_++);\n } catch (e) {\n // Acorn threw a SyntaxError. Rethrow as a trappable error.\n this.throwException(this.SYNTAX_ERROR, \"Invalid code: \" + e.message);\n }\n var evalNode = this.newNode();\n evalNode.type = \"EvalProgram_\";\n evalNode.body = ast.body;\n Interpreter.stripLocations_(evalNode, node.start, node.end);\n // Create new scope and update it with definitions in eval().\n var scope = state.directEval_ ? state.scope : this.globalScope;\n if (scope.strict) {\n // Strict mode get its own scope in eval.\n scope = this.createScope(ast, scope);\n } else {\n // Non-strict mode pollutes the current scope.\n this.populateScope_(ast, scope);\n }\n this.value = undefined; // Default value if no code.\n return new Interpreter.State(evalNode, scope);\n }\n } else if (func.nativeFunc) {\n if (!state.scope.strict) {\n state.funcThis_ = this.boxThis_(state.funcThis_);\n }\n state.value = func.nativeFunc.apply(state.funcThis_, state.arguments_);\n } else if (func.asyncFunc) {\n var thisInterpreter = this;\n var callback = function (value) {\n state.value = value;\n thisInterpreter.paused_ = false;\n };\n // Force the argument lengths to match, then append the callback.\n var argLength = func.asyncFunc.length - 1;\n var argsWithCallback = state.arguments_.concat(new Array(argLength)).slice(0, argLength);\n argsWithCallback.push(callback);\n this.paused_ = true;\n if (!state.scope.strict) {\n state.funcThis_ = this.boxThis_(state.funcThis_);\n }\n func.asyncFunc.apply(state.funcThis_, argsWithCallback);\n return;\n } else {\n /* A child of a function is a function but is not callable. For example:\n var F = function() {};\n F.prototype = escape;\n var f = new F();\n f();\n */\n this.throwException(this.TYPE_ERROR, this.nodeSummary(node.callee) + \" is not callable\");\n }\n } else {\n // Execution complete. Put the return value on the stack.\n stack.pop();\n if (state.isConstructor && typeof state.value !== \"object\") {\n // Normal case for a constructor is to use the `this` value.\n stack[stack.length - 1].value = state.funcThis_;\n } else {\n // Non-constructors or constructions explicitly returning objects use\n // the return value.\n stack[stack.length - 1].value = state.value;\n }\n }\n};\n\nInterpreter.prototype[\"stepConditionalExpression\"] = function (stack, state, node) {\n // Handles both ConditionalExpression and IfStatement.\n var mode = state.mode_ || 0;\n if (mode === 0) {\n state.mode_ = 1;\n return new Interpreter.State(node.test, state.scope);\n }\n if (mode === 1) {\n state.mode_ = 2;\n var value = Boolean(state.value);\n if (value && node.consequent) {\n // Execute `if` block.\n return new Interpreter.State(node.consequent, state.scope);\n } else if (!value && node.alternate) {\n // Execute `else` block.\n return new Interpreter.State(node.alternate, state.scope);\n }\n // eval('1;if(false){2}') -> undefined\n this.value = undefined;\n }\n stack.pop();\n if (node.type === \"ConditionalExpression\") {\n stack[stack.length - 1].value = state.value;\n }\n};\n\nInterpreter.prototype[\"stepContinueStatement\"] = function (stack, state, node) {\n var label = node.label && node.label.name;\n this.unwind(Interpreter.Completion.CONTINUE, undefined, label);\n};\n\nInterpreter.prototype[\"stepDebuggerStatement\"] = function (stack, state, node) {\n // Do nothing. May be overridden by developers.\n stack.pop();\n};\n\nInterpreter.prototype[\"stepDoWhileStatement\"] = function (stack, state, node) {\n // Handles both DoWhileStatement and WhileStatement.\n if (node.type === \"DoWhileStatement\" && state.test_ === undefined) {\n // First iteration of do/while executes without checking test.\n state.value = true;\n state.test_ = true;\n }\n if (!state.test_) {\n state.test_ = true;\n return new Interpreter.State(node.test, state.scope);\n }\n if (!state.value) {\n // Done, exit loop.\n stack.pop();\n } else if (node.body) {\n // Execute the body.\n state.test_ = false;\n state.isLoop = true;\n return new Interpreter.State(node.body, state.scope);\n }\n};\n\nInterpreter.prototype[\"stepEmptyStatement\"] = function (stack, state, node) {\n stack.pop();\n};\n\nInterpreter.prototype[\"stepEvalProgram_\"] = function (stack, state, node) {\n var n = state.n_ || 0;\n var expression = node.body[n];\n if (expression) {\n state.n_ = n + 1;\n return new Interpreter.State(expression, state.scope);\n }\n stack.pop();\n stack[stack.length - 1].value = this.value;\n};\n\nInterpreter.prototype[\"stepExpressionStatement\"] = function (stack, state, node) {\n if (!state.done_) {\n this.value = undefined;\n state.done_ = true;\n return new Interpreter.State(node.expression, state.scope);\n }\n stack.pop();\n // Save this value to interpreter.value for use as a return value if\n // this code is inside an eval function.\n this.value = state.value;\n};\n\nInterpreter.prototype[\"stepForInStatement\"] = function (stack, state, node) {\n // First, initialize a variable if exists. Only do so once, ever.\n if (!state.doneInit_) {\n state.doneInit_ = true;\n if (node.left.declarations && node.left.declarations[0].init) {\n if (state.scope.strict) {\n this.throwException(\n this.SYNTAX_ERROR,\n \"for-in loop variable declaration may not have an initializer\"\n );\n }\n // Variable initialization: for (var x = 4 in y)\n return new Interpreter.State(node.left, state.scope);\n }\n }\n // Second, look up the object. Only do so once, ever.\n if (!state.doneObject_) {\n state.doneObject_ = true;\n if (!state.variable_) {\n state.variable_ = state.value;\n }\n return new Interpreter.State(node.right, state.scope);\n }\n if (!state.isLoop) {\n // First iteration.\n state.isLoop = true;\n state.object_ = state.value;\n state.visited_ = Object.create(null);\n }\n // Third, find the property name for this iteration.\n if (state.name_ === undefined) {\n gotPropName: while (true) {\n if (state.object_ instanceof Interpreter.Object) {\n if (!state.props_) {\n state.props_ = Object.getOwnPropertyNames(state.object_.properties);\n }\n while (true) {\n var prop = state.props_.shift();\n if (prop === undefined) {\n break; // Reached end of this object's properties.\n }\n if (!Object.prototype.hasOwnProperty.call(state.object_.properties, prop)) {\n continue; // Property has been deleted in the loop.\n }\n if (state.visited_[prop]) {\n continue; // Already seen this property on a child.\n }\n state.visited_[prop] = true;\n if (!Object.prototype.propertyIsEnumerable.call(state.object_.properties, prop)) {\n continue; // Skip non-enumerable property.\n }\n state.name_ = prop;\n break gotPropName;\n }\n } else if (state.object_ !== null && state.object_ !== undefined) {\n // Primitive value (other than null or undefined).\n if (!state.props_) {\n state.props_ = Object.getOwnPropertyNames(state.object_);\n }\n while (true) {\n var prop = state.props_.shift();\n if (prop === undefined) {\n break; // Reached end of this value's properties.\n }\n state.visited_[prop] = true;\n if (!Object.prototype.propertyIsEnumerable.call(state.object_, prop)) {\n continue; // Skip non-enumerable property.\n }\n state.name_ = prop;\n break gotPropName;\n }\n }\n state.object_ = this.getPrototype(state.object_);\n state.props_ = null;\n if (state.object_ === null) {\n // Done, exit loop.\n stack.pop();\n return;\n }\n }\n }\n // Fourth, find the variable\n if (!state.doneVariable_) {\n state.doneVariable_ = true;\n var left = node.left;\n if (left.type === \"VariableDeclaration\") {\n // Inline variable declaration: for (var x in y)\n state.variable_ = [Interpreter.SCOPE_REFERENCE, left.declarations[0].id.name];\n } else {\n // Arbitrary left side: for (foo().bar in y)\n state.variable_ = null;\n var nextState = new Interpreter.State(left, state.scope);\n nextState.components = true;\n return nextState;\n }\n }\n if (!state.variable_) {\n state.variable_ = state.value;\n }\n // Fifth, set the variable.\n if (!state.doneSetter_) {\n state.doneSetter_ = true;\n var value = state.name_;\n var setter = this.setValue(state.variable_, value);\n if (setter) {\n return this.createSetter_(setter, state.variable_, value);\n }\n }\n // Next step will be step three.\n state.name_ = undefined;\n // Reevaluate the variable since it could be a setter on the global object.\n state.doneVariable_ = false;\n state.doneSetter_ = false;\n // Sixth and finally, execute the body if there was one.\n if (node.body) {\n return new Interpreter.State(node.body, state.scope);\n }\n};\n\nInterpreter.prototype[\"stepForStatement\"] = function (stack, state, node) {\n switch (state.mode_) {\n default:\n state.mode_ = 1;\n if (node.init) {\n return new Interpreter.State(node.init, state.scope);\n }\n break;\n case 1:\n state.mode_ = 2;\n if (node.test) {\n return new Interpreter.State(node.test, state.scope);\n }\n break;\n case 2:\n state.mode_ = 3;\n if (node.test && !state.value) {\n // Done, exit loop.\n stack.pop();\n } else {\n // Execute the body.\n state.isLoop = true;\n return new Interpreter.State(node.body, state.scope);\n }\n break;\n case 3:\n state.mode_ = 1;\n if (node.update) {\n return new Interpreter.State(node.update, state.scope);\n }\n break;\n }\n};\n\nInterpreter.prototype[\"stepFunctionDeclaration\"] = function (stack, state, node) {\n // This was found and handled when the scope was populated.\n stack.pop();\n};\n\nInterpreter.prototype[\"stepFunctionExpression\"] = function (stack, state, node) {\n stack.pop();\n state = stack[stack.length - 1];\n var parentScope = state.scope;\n if (node.id) {\n // Create a tiny scope to store the function name.\n // E.g. var x = function foo(){};\n parentScope = this.createSpecialScope(parentScope);\n }\n state.value = this.createFunction(node, parentScope, state.destinationName);\n if (node.id) {\n // Record the function name, read-only.\n this.setProperty(\n parentScope.object,\n node.id.name,\n state.value,\n Interpreter.READONLY_DESCRIPTOR\n );\n }\n};\n\nInterpreter.prototype[\"stepIdentifier\"] = function (stack, state, node) {\n stack.pop();\n if (state.components) {\n stack[stack.length - 1].value = [Interpreter.SCOPE_REFERENCE, node.name];\n return;\n }\n var value = this.getValueFromScope(node.name);\n // An identifier could be a getter if it's a property on the global object.\n if (this.getterStep_) {\n // Call the getter function.\n var func = /** @type {!Interpreter.Object} */ (value);\n return this.createGetter_(func, this.globalObject);\n }\n stack[stack.length - 1].value = value;\n};\n\nInterpreter.prototype[\"stepIfStatement\"] = Interpreter.prototype[\"stepConditionalExpression\"];\n\nInterpreter.prototype[\"stepLabeledStatement\"] = function (stack, state, node) {\n // No need to hit this node again on the way back up the stack.\n stack.pop();\n // Note that a statement might have multiple labels.\n var labels = state.labels || [];\n labels.push(node.label.name);\n var nextState = new Interpreter.State(node.body, state.scope);\n nextState.labels = labels;\n return nextState;\n};\n\nInterpreter.prototype[\"stepLiteral\"] = function (stack, state, node) {\n stack.pop();\n var value = node.value;\n if (value instanceof RegExp) {\n var pseudoRegexp = this.createObjectProto(this.REGEXP_PROTO);\n this.populateRegExp(pseudoRegexp, value);\n value = pseudoRegexp;\n }\n stack[stack.length - 1].value = value;\n};\n\nInterpreter.prototype[\"stepLogicalExpression\"] = function (stack, state, node) {\n if (node.operator !== \"&&\" && node.operator !== \"||\") {\n throw SyntaxError(\"Unknown logical operator: \" + node.operator);\n }\n if (!state.doneLeft_) {\n state.doneLeft_ = true;\n return new Interpreter.State(node.left, state.scope);\n }\n if (!state.doneRight_) {\n if ((node.operator === \"&&\" && !state.value) || (node.operator === \"||\" && state.value)) {\n // Shortcut evaluation.\n stack.pop();\n stack[stack.length - 1].value = state.value;\n } else {\n state.doneRight_ = true;\n return new Interpreter.State(node.right, state.scope);\n }\n } else {\n stack.pop();\n stack[stack.length - 1].value = state.value;\n }\n};\n\nInterpreter.prototype[\"stepMemberExpression\"] = function (stack, state, node) {\n if (!state.doneObject_) {\n state.doneObject_ = true;\n return new Interpreter.State(node.object, state.scope);\n }\n var propName;\n if (!node.computed) {\n state.object_ = state.value;\n // obj.foo -- Just access `foo` directly.\n propName = node.property.name;\n } else if (!state.doneProperty_) {\n state.object_ = state.value;\n // obj[foo] -- Compute value of `foo`.\n state.doneProperty_ = true;\n return new Interpreter.State(node.property, state.scope);\n } else {\n propName = state.value;\n }\n stack.pop();\n if (state.components) {\n stack[stack.length - 1].value = [state.object_, propName];\n } else {\n var value = this.getProperty(state.object_, propName);\n if (this.getterStep_) {\n // Call the getter function.\n var func = /** @type {!Interpreter.Object} */ (value);\n return this.createGetter_(func, state.object_);\n }\n stack[stack.length - 1].value = value;\n }\n};\n\nInterpreter.prototype[\"stepNewExpression\"] = Interpreter.prototype[\"stepCallExpression\"];\n\nInterpreter.prototype[\"stepObjectExpression\"] = function (stack, state, node) {\n var n = state.n_ || 0;\n var property = node.properties[n];\n if (!state.object_) {\n // First execution.\n state.object_ = this.createObjectProto(this.OBJECT_PROTO);\n state.properties_ = Object.create(null);\n } else {\n // Set the property computed in the previous execution.\n var propName = state.destinationName;\n if (!state.properties_[propName]) {\n // Create temp object to collect value, getter, and/or setter.\n state.properties_[propName] = {};\n }\n state.properties_[propName][property.kind] = state.value;\n state.n_ = ++n;\n property = node.properties[n];\n }\n if (property) {\n // Determine property name.\n var key = property.key;\n if (key.type === \"Identifier\") {\n var propName = key.name;\n } else if (key.type === \"Literal\") {\n var propName = key.value;\n } else {\n throw SyntaxError(\"Unknown object structure: \" + key.type);\n }\n // When assigning an unnamed function to a property, the function's name\n // is set to the property name. Record the property name in case the\n // value is a functionExpression.\n // E.g. {foo: function() {}}\n state.destinationName = propName;\n return new Interpreter.State(property.value, state.scope);\n }\n for (var key in state.properties_) {\n var kinds = state.properties_[key];\n if (\"get\" in kinds || \"set\" in kinds) {\n // Set a property with a getter or setter.\n var descriptor = {\n configurable: true,\n enumerable: true,\n get: kinds[\"get\"],\n set: kinds[\"set\"],\n };\n this.setProperty(state.object_, key, Interpreter.VALUE_IN_DESCRIPTOR, descriptor);\n } else {\n // Set a normal property with a value.\n this.setProperty(state.object_, key, kinds[\"init\"]);\n }\n }\n stack.pop();\n stack[stack.length - 1].value = state.object_;\n};\n\nInterpreter.prototype[\"stepProgram\"] = function (stack, state, node) {\n var expression = node.body.shift();\n if (expression) {\n state.done = false;\n return new Interpreter.State(expression, state.scope);\n }\n state.done = true;\n // Don't pop the stateStack.\n // Leave the root scope on the tree in case the program is appended to.\n};\n\nInterpreter.prototype[\"stepReturnStatement\"] = function (stack, state, node) {\n if (node.argument && !state.done_) {\n state.done_ = true;\n return new Interpreter.State(node.argument, state.scope);\n }\n this.unwind(Interpreter.Completion.RETURN, state.value, undefined);\n};\n\nInterpreter.prototype[\"stepSequenceExpression\"] = function (stack, state, node) {\n var n = state.n_ || 0;\n var expression = node.expressions[n];\n if (expression) {\n state.n_ = n + 1;\n return new Interpreter.State(expression, state.scope);\n }\n stack.pop();\n stack[stack.length - 1].value = state.value;\n};\n\nInterpreter.prototype[\"stepSwitchStatement\"] = function (stack, state, node) {\n if (!state.test_) {\n state.test_ = 1;\n return new Interpreter.State(node.discriminant, state.scope);\n }\n if (state.test_ === 1) {\n state.test_ = 2;\n // Preserve switch value between case tests.\n state.switchValue_ = state.value;\n state.defaultCase_ = -1;\n }\n\n while (true) {\n var index = state.index_ || 0;\n var switchCase = node.cases[index];\n if (!state.matched_ && switchCase && !switchCase.test) {\n // Test on the default case is null.\n // Bypass (but store) the default case, and get back to it later.\n state.defaultCase_ = index;\n state.index_ = index + 1;\n continue;\n }\n if (!switchCase && !state.matched_ && state.defaultCase_ !== -1) {\n // Ran through all cases, no match. Jump to the default.\n state.matched_ = true;\n state.index_ = state.defaultCase_;\n continue;\n }\n if (switchCase) {\n if (!state.matched_ && !state.tested_ && switchCase.test) {\n state.tested_ = true;\n return new Interpreter.State(switchCase.test, state.scope);\n }\n if (state.matched_ || state.value === state.switchValue_) {\n state.matched_ = true;\n var n = state.n_ || 0;\n if (switchCase.consequent[n]) {\n state.isSwitch = true;\n state.n_ = n + 1;\n return new Interpreter.State(switchCase.consequent[n], state.scope);\n }\n }\n // Move on to next case.\n state.tested_ = false;\n state.n_ = 0;\n state.index_ = index + 1;\n } else {\n stack.pop();\n return;\n }\n }\n};\n\nInterpreter.prototype[\"stepThisExpression\"] = function (stack, state, node) {\n stack.pop();\n stack[stack.length - 1].value = this.getValueFromScope(\"this\");\n};\n\nInterpreter.prototype[\"stepThrowStatement\"] = function (stack, state, node) {\n if (!state.done_) {\n state.done_ = true;\n return new Interpreter.State(node.argument, state.scope);\n } else {\n this.throwException(state.value);\n }\n};\n\nInterpreter.prototype[\"stepTryStatement\"] = function (stack, state, node) {\n // This step also handles all CatchClause nodes, since these nodes can\n // only appear inside the `handler` property of a TryStatement node.\n if (!state.doneBlock_) {\n state.doneBlock_ = true;\n return new Interpreter.State(node.block, state.scope);\n }\n if (\n state.cv &&\n state.cv.type === Interpreter.Completion.THROW &&\n !state.doneHandler_ &&\n node.handler\n ) {\n state.doneHandler_ = true;\n // Create an new scope and add the error variable.\n var scope = this.createSpecialScope(state.scope);\n this.setProperty(scope.object, node.handler.param.name, state.cv.value);\n state.cv = undefined; // This error has been handled, don't rethrow.\n // Execute catch clause.\n return new Interpreter.State(node.handler.body, scope);\n }\n if (!state.doneFinalizer_ && node.finalizer) {\n state.doneFinalizer_ = true;\n return new Interpreter.State(node.finalizer, state.scope);\n }\n stack.pop();\n if (state.cv) {\n // There was no catch handler, or the catch/finally threw an error.\n // Throw the error up to a higher try.\n this.unwind(state.cv.type, state.cv.value, state.cv.label);\n }\n};\n\nInterpreter.prototype[\"stepUnaryExpression\"] = function (stack, state, node) {\n if (!state.done_) {\n state.done_ = true;\n var nextState = new Interpreter.State(node.argument, state.scope);\n nextState.components = node.operator === \"delete\";\n return nextState;\n }\n stack.pop();\n var value = state.value;\n switch (node.operator) {\n case \"-\":\n value = -value;\n break;\n case \"+\":\n value = +value;\n break;\n case \"!\":\n value = !value;\n break;\n case \"~\":\n value = ~value;\n break;\n case \"delete\":\n var result = true;\n // If value is not an array, then it is a primitive, or some other value.\n // If so, skip the delete and return true.\n if (Array.isArray(value)) {\n var obj = value[0];\n if (obj === Interpreter.SCOPE_REFERENCE) {\n // `delete foo;` is the same as `delete window.foo;`.\n obj = state.scope;\n }\n var name = String(value[1]);\n try {\n delete obj.properties[name];\n } catch (_e) {\n if (state.scope.strict) {\n this.throwException(\n this.TYPE_ERROR,\n \"Cannot delete property '\" + name + \"' of '\" + obj + \"'\"\n );\n } else {\n result = false;\n }\n }\n }\n value = result;\n break;\n case \"typeof\":\n value = value && value.class === \"Function\" ? \"function\" : typeof value;\n break;\n case \"void\":\n value = undefined;\n break;\n default:\n throw SyntaxError(\"Unknown unary operator: \" + node.operator);\n }\n stack[stack.length - 1].value = value;\n};\n\nInterpreter.prototype[\"stepUpdateExpression\"] = function (stack, state, node) {\n if (!state.doneLeft_) {\n state.doneLeft_ = true;\n var nextState = new Interpreter.State(node.argument, state.scope);\n nextState.components = true;\n return nextState;\n }\n if (!state.leftSide_) {\n state.leftSide_ = state.value;\n }\n if (state.doneGetter_) {\n state.leftValue_ = state.value;\n }\n if (!state.doneGetter_) {\n var leftValue = this.getValue(state.leftSide_);\n state.leftValue_ = leftValue;\n if (this.getterStep_) {\n // Call the getter function.\n state.doneGetter_ = true;\n var func = /** @type {!Interpreter.Object} */ (leftValue);\n return this.createGetter_(func, state.leftSide_);\n }\n }\n if (state.doneSetter_) {\n // Return if setter function.\n // Setter method on property has completed.\n // Ignore its return value, and use the original set value instead.\n stack.pop();\n stack[stack.length - 1].value = state.setterValue_;\n return;\n }\n var leftValue = Number(state.leftValue_);\n var changeValue;\n if (node.operator === \"++\") {\n changeValue = leftValue + 1;\n } else if (node.operator === \"--\") {\n changeValue = leftValue - 1;\n } else {\n throw SyntaxError(\"Unknown update expression: \" + node.operator);\n }\n var returnValue = node.prefix ? changeValue : leftValue;\n var setter = this.setValue(state.leftSide_, changeValue);\n if (setter) {\n state.doneSetter_ = true;\n state.setterValue_ = returnValue;\n return this.createSetter_(setter, state.leftSide_, changeValue);\n }\n // Return if no setter function.\n stack.pop();\n stack[stack.length - 1].value = returnValue;\n};\n\nInterpreter.prototype[\"stepVariableDeclaration\"] = function (stack, state, node) {\n // This step also handles all VariableDeclarator nodes, since these nodes can\n // only appear inside the `declarations` array of a VariableDeclaration node.\n var declarations = node.declarations;\n var n = state.n_ || 0;\n var declarationNode = declarations[n];\n if (state.init_ && declarationNode) {\n // This setValue call never needs to deal with calling a setter function.\n // Note that this is setting the init value, not defining the variable.\n // Variable definition is done when scope is populated.\n this.setValueToScope(declarationNode.id.name, state.value);\n state.init_ = false;\n declarationNode = declarations[++n];\n }\n while (declarationNode) {\n // Skip any declarations that are not initialized. They have already\n // been defined as undefined in populateScope_.\n if (declarationNode.init) {\n state.n_ = n;\n state.init_ = true;\n // When assigning an unnamed function to a variable, the function's name\n // is set to the variable name. Record the variable name in case the\n // right side is a functionExpression.\n // E.g. var foo = function() {};\n state.destinationName = declarationNode.id.name;\n return new Interpreter.State(declarationNode.init, state.scope);\n }\n declarationNode = declarations[++n];\n }\n stack.pop();\n};\n\nInterpreter.prototype[\"stepWithStatement\"] = function (stack, state, node) {\n if (!state.doneObject_) {\n state.doneObject_ = true;\n return new Interpreter.State(node.object, state.scope);\n }\n stack.pop();\n var scope = this.createSpecialScope(state.scope, state.value);\n return new Interpreter.State(node.body, scope);\n};\n\nInterpreter.prototype[\"stepWhileStatement\"] = Interpreter.prototype[\"stepDoWhileStatement\"];\n\n// Preserve top-level API functions from being pruned/renamed by JS compilers.\n// Add others as needed.\nInterpreter.nativeGlobal[\"Interpreter\"] = Interpreter;\nInterpreter.prototype[\"step\"] = Interpreter.prototype.step;\nInterpreter.prototype[\"run\"] = Interpreter.prototype.run;\nInterpreter.prototype[\"appendCode\"] = Interpreter.prototype.appendCode;\nInterpreter.prototype[\"createObject\"] = Interpreter.prototype.createObject;\nInterpreter.prototype[\"createObjectProto\"] = Interpreter.prototype.createObjectProto;\nInterpreter.prototype[\"createAsyncFunction\"] = Interpreter.prototype.createAsyncFunction;\nInterpreter.prototype[\"createNativeFunction\"] = Interpreter.prototype.createNativeFunction;\nInterpreter.prototype[\"getProperty\"] = Interpreter.prototype.getProperty;\nInterpreter.prototype[\"setProperty\"] = Interpreter.prototype.setProperty;\nInterpreter.prototype[\"getStatus\"] = Interpreter.prototype.getStatus;\nInterpreter.prototype[\"nativeToPseudo\"] = Interpreter.prototype.nativeToPseudo;\nInterpreter.prototype[\"pseudoToNative\"] = Interpreter.prototype.pseudoToNative;\nInterpreter.prototype[\"getGlobalScope\"] = Interpreter.prototype.getGlobalScope;\nInterpreter.prototype[\"getStateStack\"] = Interpreter.prototype.getStateStack;\nInterpreter.prototype[\"setStateStack\"] = Interpreter.prototype.setStateStack;\nInterpreter[\"VALUE_IN_DESCRIPTOR\"] = Interpreter.VALUE_IN_DESCRIPTOR;\nInterpreter[\"Status\"] = Interpreter.Status;\n\nexport { Interpreter };\n",
15
- "/**\n * @license\n * Copyright 2025 Steven Roussey <sroussey@gmail.com>\n * SPDX-License-Identifier: Apache-2.0\n */\n\nimport {\n createGraphFromDependencyJSON,\n CreateWorkflow,\n Dataflow,\n GraphAsTask,\n JsonTaskItem,\n TaskConfig,\n TaskConfigurationError,\n Workflow,\n} from \"@workglow/task-graph\";\nimport { DataPortSchema, FromSchema } from \"@workglow/util\";\n\nconst inputSchema = {\n type: \"object\",\n properties: {\n json: {\n type: \"string\",\n title: \"JSON\",\n description: \"The JSON to parse\",\n },\n },\n additionalProperties: false,\n} as const satisfies DataPortSchema;\n\nexport type JsonTaskInput = FromSchema<typeof inputSchema>;\n\nconst outputSchema = {\n type: \"object\",\n properties: {\n output: {\n title: \"Output\",\n description: \"Output depends on the generated task graph\",\n },\n },\n additionalProperties: false,\n} as const satisfies DataPortSchema;\n\nexport type JsonTaskOutput = FromSchema<typeof outputSchema>;\n\n/**\n * JsonTask is a specialized task that creates and manages task graphs from JSON configurations.\n * It allows dynamic creation of task networks by parsing JSON definitions of tasks and their relationships.\n */\nexport class JsonTask<\n Input extends JsonTaskInput = JsonTaskInput,\n Output extends JsonTaskOutput = JsonTaskOutput,\n Config extends TaskConfig = TaskConfig,\n> extends GraphAsTask<Input, Output, Config> {\n public static type = \"JsonTask\";\n public static category = \"Hidden\";\n public static title = \"JSON Task\";\n public static description =\n \"A task that creates and manages task graphs from JSON configurations\";\n\n public static inputSchema() {\n return inputSchema;\n }\n\n public static outputSchema() {\n return outputSchema;\n }\n\n /**\n * Regenerates the entire task graph based on the current JSON input\n * Creates task nodes and establishes data flow connections between them\n */\n public regenerateGraph() {\n if (!this.runInputData.json) return;\n let data = JSON.parse(this.runInputData.json) as JsonTaskItem[] | JsonTaskItem;\n if (!Array.isArray(data)) data = [data];\n const jsonItems: JsonTaskItem[] = data as JsonTaskItem[];\n\n // Create task nodes\n this.subGraph = createGraphFromDependencyJSON(jsonItems);\n\n // Establish data flow connections\n for (const item of jsonItems) {\n if (!item.dependencies) continue;\n for (const [input, dependency] of Object.entries(item.dependencies)) {\n const dependencies = Array.isArray(dependency) ? dependency : [dependency];\n for (const dep of dependencies) {\n const sourceTask = this.subGraph.getTask(dep.id);\n if (!sourceTask) {\n throw new TaskConfigurationError(`Dependency id ${dep.id} not found`);\n }\n const df = new Dataflow(sourceTask.config.id, dep.output, item.id, input);\n this.subGraph.addDataflow(df);\n }\n }\n }\n super.regenerateGraph();\n }\n}\n\n/**\n * Convenience function to create and run a JsonTask\n */\nexport const json = (input: JsonTaskInput, config: TaskConfig = {}) => {\n return new JsonTask({}, config).run(input);\n};\n\ndeclare module \"@workglow/task-graph\" {\n interface Workflow {\n json: CreateWorkflow<JsonTaskInput, JsonTaskOutput, TaskConfig>;\n }\n}\n\nWorkflow.prototype.json = CreateWorkflow(JsonTask);\n",
15
+ "/**\n * @license\n * Copyright 2025 Steven Roussey <sroussey@gmail.com>\n * SPDX-License-Identifier: Apache-2.0\n */\n\nimport {\n createGraphFromDependencyJSON,\n createGraphFromGraphJSON,\n CreateWorkflow,\n Dataflow,\n GraphAsTask,\n JsonTaskItem,\n TaskConfig,\n TaskConfigurationError,\n type TaskGraphJson,\n Workflow,\n} from \"@workglow/task-graph\";\nimport { DataPortSchema, FromSchema } from \"@workglow/util\";\n\nconst inputSchema = {\n type: \"object\",\n properties: {\n json: {\n type: \"string\",\n title: \"JSON\",\n description: \"The JSON to parse\",\n },\n },\n additionalProperties: false,\n} as const satisfies DataPortSchema;\n\nexport type JsonTaskInput = FromSchema<typeof inputSchema>;\n\nconst outputSchema = {\n type: \"object\",\n properties: {\n output: {\n title: \"Output\",\n description: \"Output depends on the generated task graph\",\n },\n },\n additionalProperties: false,\n} as const satisfies DataPortSchema;\n\nexport type JsonTaskOutput = FromSchema<typeof outputSchema>;\n\n/**\n * JsonTask is a specialized task that creates and manages task graphs from JSON configurations.\n * It allows dynamic creation of task networks by parsing JSON definitions of tasks and their relationships.\n */\nexport class JsonTask<\n Input extends JsonTaskInput = JsonTaskInput,\n Output extends JsonTaskOutput = JsonTaskOutput,\n Config extends TaskConfig = TaskConfig,\n> extends GraphAsTask<Input, Output, Config> {\n public static type = \"JsonTask\";\n public static category = \"Hidden\";\n public static title = \"JSON Task\";\n public static description =\n \"A task that creates and manages task graphs from JSON configurations\";\n\n public static inputSchema() {\n return inputSchema;\n }\n\n public static outputSchema() {\n return outputSchema;\n }\n\n /**\n * Regenerates the entire task graph based on the current JSON input\n * Creates task nodes and establishes data flow connections between them\n */\n public regenerateGraph() {\n if (!this.runInputData.json) return;\n const data = JSON.parse(this.runInputData.json) as\n | TaskGraphJson\n | JsonTaskItem[]\n | JsonTaskItem;\n\n // Graph format: { tasks, dataflows } (e.g. from builder export)\n if (\n data &&\n typeof data === \"object\" &&\n \"tasks\" in data &&\n Array.isArray((data as TaskGraphJson).tasks) &&\n \"dataflows\" in data &&\n Array.isArray((data as TaskGraphJson).dataflows)\n ) {\n this.subGraph = createGraphFromGraphJSON(data as TaskGraphJson);\n super.regenerateGraph();\n return;\n }\n\n // Dependency format: array of JsonTaskItem (or single item)\n let jsonItems: JsonTaskItem[] = Array.isArray(data) ? data : [data as JsonTaskItem];\n this.subGraph = createGraphFromDependencyJSON(jsonItems);\n\n for (const item of jsonItems) {\n if (!item.dependencies) continue;\n for (const [input, dependency] of Object.entries(item.dependencies)) {\n const dependencies = Array.isArray(dependency) ? dependency : [dependency];\n for (const dep of dependencies) {\n const sourceTask = this.subGraph.getTask(dep.id);\n if (!sourceTask) {\n throw new TaskConfigurationError(`Dependency id ${dep.id} not found`);\n }\n const df = new Dataflow(sourceTask.config.id, dep.output, item.id, input);\n this.subGraph.addDataflow(df);\n }\n }\n }\n super.regenerateGraph();\n }\n}\n\n/**\n * Convenience function to create and run a JsonTask\n */\nexport const json = (input: JsonTaskInput, config: TaskConfig = {}) => {\n return new JsonTask({}, config).run(input);\n};\n\ndeclare module \"@workglow/task-graph\" {\n interface Workflow {\n json: CreateWorkflow<JsonTaskInput, JsonTaskOutput, TaskConfig>;\n }\n}\n\nWorkflow.prototype.json = CreateWorkflow(JsonTask);\n",
16
16
  "/**\n * @license\n * Copyright 2025 Steven Roussey <sroussey@gmail.com>\n * SPDX-License-Identifier: Apache-2.0\n */\n\nimport {\n CreateWorkflow,\n DATAFLOW_ALL_PORTS,\n IExecuteContext,\n IExecuteReactiveContext,\n Task,\n TaskConfig,\n TaskConfigurationError,\n TaskInput,\n TaskOutput,\n Workflow,\n} from \"@workglow/task-graph\";\nimport { DataPortSchema } from \"@workglow/util\";\n\ninterface LambdaTaskConfig<\n Input extends TaskInput = TaskInput,\n Output extends TaskOutput = TaskOutput,\n> extends TaskConfig {\n execute?: (input: Input, context: IExecuteContext) => Promise<Output>;\n executeReactive?: (\n input: Input,\n output: Output,\n context: IExecuteReactiveContext\n ) => Promise<Output>;\n}\n\nconst inputSchema = {\n type: \"object\",\n properties: {\n [DATAFLOW_ALL_PORTS]: {\n title: \"Input\",\n description: \"Input data to pass to the function\",\n },\n },\n additionalProperties: true,\n} as const satisfies DataPortSchema;\n\nconst outputSchema = {\n type: \"object\",\n properties: {\n [DATAFLOW_ALL_PORTS]: {\n title: \"Output\",\n description: \"The output from the execute function\",\n },\n },\n additionalProperties: true,\n} as const satisfies DataPortSchema;\n\nexport type LambdaTaskInput = Record<string, any>;\nexport type LambdaTaskOutput = Record<string, any>;\n/**\n * LambdaTask provides a way to execute arbitrary functions within the task framework\n * It wraps a provided function and its input into a task that can be integrated\n * into task graphs and workflows\n */\nexport class LambdaTask<\n Input extends TaskInput = LambdaTaskInput,\n Output extends TaskOutput = LambdaTaskOutput,\n Config extends LambdaTaskConfig<Input, Output> = LambdaTaskConfig<Input, Output>,\n> extends Task<Input, Output, Config> {\n public static type = \"LambdaTask\";\n public static title = \"Lambda Task\";\n public static description = \"A task that wraps a provided function and its input\";\n public static category = \"Hidden\";\n public static cacheable = true;\n public static inputSchema() {\n return inputSchema;\n }\n public static outputSchema() {\n return outputSchema;\n }\n\n constructor(input: Partial<Input> = {}, config: Partial<Config> = {}) {\n if (!config.execute && !config.executeReactive) {\n throw new TaskConfigurationError(\n \"LambdaTask must have either execute or executeReactive function in config\"\n );\n }\n super(input, config as Config);\n }\n\n async execute(input: Input, context: IExecuteContext): Promise<Output> {\n if (typeof this.config.execute === \"function\") {\n return await this.config.execute(input, context);\n }\n return {} as Output;\n }\n\n /**\n * Executes the provided function with the given input\n * Throws an error if no function is provided or if the provided value is not callable\n */\n async executeReactive(input: Input, output: Output, context: IExecuteReactiveContext) {\n if (typeof this.config.executeReactive === \"function\") {\n return (await this.config.executeReactive(input, output, context)) ?? output;\n }\n return output;\n }\n}\n\nexport function process(value: string): string;\nexport function process(value: number): number;\nexport function process(value: boolean): string;\n\n// Implementation\nexport function process(value: string | number | boolean): string | number {\n if (typeof value === \"string\") return `Processed: ${value}`;\n if (typeof value === \"number\") return value * 2;\n return value ? \"True\" : \"False\";\n}\n/**\n * Convenience function to create and run a LambdaTask\n */\nexport function lambda<I extends TaskInput, O extends TaskOutput>(\n fn: (input: I, context: IExecuteContext) => Promise<O>\n): Promise<TaskOutput>;\nexport function lambda<I extends TaskInput, O extends TaskOutput>(\n input: I,\n config?: LambdaTaskConfig<I, O>\n): Promise<TaskOutput>;\n\nexport function lambda<I extends TaskInput, O extends TaskOutput>(\n input: I | ((input: I, context: IExecuteContext) => Promise<O>),\n config?: LambdaTaskConfig<I, O>\n): Promise<TaskOutput> {\n if (typeof input === \"function\") {\n type Input = Parameters<typeof input>[0];\n const task = new LambdaTask<Input, O>({} as Input, {\n execute: input,\n });\n return task.run();\n }\n const task = new LambdaTask<I, O>(input, config);\n return task.run();\n}\n\ndeclare module \"@workglow/task-graph\" {\n interface Workflow {\n lambda: CreateWorkflow<\n LambdaTaskInput,\n LambdaTaskOutput,\n LambdaTaskConfig<LambdaTaskInput, LambdaTaskOutput>\n >;\n }\n}\n\nWorkflow.prototype.lambda = CreateWorkflow(LambdaTask);\n",
17
- "/**\n * @license\n * Copyright 2025 Steven Roussey <sroussey@gmail.com>\n * SPDX-License-Identifier: Apache-2.0\n */\n\nimport { CreateWorkflow, IExecuteContext, Task, TaskConfig, Workflow } from \"@workglow/task-graph\";\nimport { DataPortSchema, FromSchema } from \"@workglow/util\";\n\nconst inputSchema = {\n type: \"object\",\n properties: {},\n additionalProperties: true,\n} as const satisfies DataPortSchema;\n\nconst outputSchema = {\n type: \"object\",\n properties: {\n output: {\n type: \"array\",\n title: \"Merged Array\",\n description: \"Array containing all input values in order\",\n },\n },\n additionalProperties: false,\n} as const satisfies DataPortSchema;\n\nexport type MergeTaskInput = FromSchema<typeof inputSchema>;\nexport type MergeTaskOutput = FromSchema<typeof outputSchema>;\n\n/**\n * MergeTask takes multiple inputs and merges them into a single array output.\n * Input properties are collected and sorted by key name to create a deterministic output order.\n * Useful for collecting results from parallel branches into a single array.\n *\n * Features:\n * - Accepts any number of input properties (additionalProperties: true)\n * - Merges all input values into a single array output\n * - Sorts inputs by property name for consistent ordering\n * - Output is always an array\n *\n * Example:\n * Input: { input_0: \"a\", input_1: \"b\", input_2: \"c\" }\n * Output: { output: [\"a\", \"b\", \"c\"] }\n */\nexport class MergeTask<\n Input extends MergeTaskInput = MergeTaskInput,\n Output extends MergeTaskOutput = MergeTaskOutput,\n Config extends TaskConfig = TaskConfig,\n> extends Task<Input, Output, Config> {\n public static type = \"MergeTask\";\n public static category = \"Utility\";\n public static title = \"Merge\";\n public static description = \"Merges multiple inputs into a single array output\";\n static readonly cacheable = true;\n\n public static inputSchema() {\n return inputSchema;\n }\n\n public static outputSchema() {\n return outputSchema;\n }\n\n async execute(input: Input, context: IExecuteContext): Promise<Output> {\n // Get all input keys and sort them for deterministic order\n const keys = Object.keys(input).sort();\n\n // Collect values in sorted order\n const values = keys.map((key) => input[key]);\n\n return {\n output: values,\n } as Output;\n }\n}\n\nexport const merge = (input: MergeTaskInput, config: TaskConfig = {}) => {\n const task = new MergeTask({}, config);\n return task.run(input);\n};\n\ndeclare module \"@workglow/task-graph\" {\n interface Workflow {\n merge: CreateWorkflow<MergeTaskInput, MergeTaskOutput, TaskConfig>;\n }\n}\n\nWorkflow.prototype.merge = CreateWorkflow(MergeTask);\n",
17
+ "/**\n * @license\n * Copyright 2025 Steven Roussey <sroussey@gmail.com>\n * SPDX-License-Identifier: Apache-2.0\n */\n\nimport { CreateWorkflow, IExecuteContext, Task, TaskConfig, Workflow } from \"@workglow/task-graph\";\nimport { DataPortSchema, FromSchema } from \"@workglow/util\";\n\nconst inputSchema = {\n type: \"object\",\n properties: {},\n additionalProperties: true,\n} as const satisfies DataPortSchema;\n\nconst outputSchema = {\n type: \"object\",\n properties: {\n output: {\n type: \"array\",\n title: \"Merged Array\",\n description: \"Array containing all input values in order\",\n },\n },\n additionalProperties: false,\n} as const satisfies DataPortSchema;\n\nexport type MergeTaskInput = FromSchema<typeof inputSchema>;\nexport type MergeTaskOutput = FromSchema<typeof outputSchema>;\n\n/**\n * MergeTask takes multiple inputs and merges them into a single array output.\n * Input properties are collected and sorted by key name to create a deterministic output order.\n * Useful for collecting results from parallel branches into a single array.\n *\n * Features:\n * - Accepts any number of input properties (additionalProperties: true)\n * - Merges all input values into a single array output\n * - Sorts inputs by property name for consistent ordering\n * - Output is always an array\n *\n * Example:\n * Input: { input_0: \"a\", input_1: \"b\", input_2: \"c\" }\n * Output: { output: [\"a\", \"b\", \"c\"] }\n */\nexport class MergeTask<\n Input extends MergeTaskInput = MergeTaskInput,\n Output extends MergeTaskOutput = MergeTaskOutput,\n Config extends TaskConfig = TaskConfig,\n> extends Task<Input, Output, Config> {\n public static type = \"MergeTask\";\n public static category = \"Utility\";\n public static title = \"Merge\";\n public static description = \"Merges multiple inputs into a single array output\";\n static readonly cacheable = true;\n\n public static inputSchema() {\n return inputSchema;\n }\n\n public static outputSchema() {\n return outputSchema;\n }\n\n async execute(input: Input, _context: IExecuteContext): Promise<Output> {\n // Get all input keys and sort them for deterministic order\n const keys = Object.keys(input).sort();\n\n // Collect values in sorted order\n const values = keys.map((key) => input[key]);\n\n return {\n output: values,\n } as Output;\n }\n}\n\nexport const merge = (input: MergeTaskInput, config: TaskConfig = {}) => {\n const task = new MergeTask({}, config);\n return task.run(input);\n};\n\ndeclare module \"@workglow/task-graph\" {\n interface Workflow {\n merge: CreateWorkflow<MergeTaskInput, MergeTaskOutput, TaskConfig>;\n }\n}\n\nWorkflow.prototype.merge = CreateWorkflow(MergeTask);\n",
18
18
  "/**\n * @copyright\n * Copyright 2025 Steven Roussey\n * All Rights Reserved\n */\n\nimport { CreateWorkflow, Task, TaskConfig, Workflow } from \"@workglow/task-graph\";\nimport type { DataPortSchema } from \"@workglow/util\";\n\nexport type OutputTaskInput = Record<string, unknown>;\nexport type OutputTaskOutput = Record<string, unknown>;\n\nexport type OutputTaskConfig = TaskConfig & {\n readonly schema: DataPortSchema;\n};\n\nexport class OutputTask extends Task<OutputTaskInput, OutputTaskOutput, OutputTaskConfig> {\n static type = \"OutputTask\";\n static category = \"Flow Control\";\n static title = \"Output\";\n static description = \"Ends the workflow\";\n static hasDynamicSchemas = true;\n static cacheable = false;\n\n public static inputSchema(): DataPortSchema {\n return {\n type: \"object\",\n properties: {},\n additionalProperties: true,\n } as const as DataPortSchema;\n }\n\n public static outputSchema(): DataPortSchema {\n return {\n type: \"object\",\n properties: {},\n additionalProperties: true,\n } as const as DataPortSchema;\n }\n\n public inputSchema(): DataPortSchema {\n return (\n (this.config?.extras?.inputSchema as DataPortSchema | undefined) ??\n (this.constructor as typeof OutputTask).inputSchema()\n );\n }\n\n public outputSchema(): DataPortSchema {\n return (\n (this.config?.extras?.outputSchema as DataPortSchema | undefined) ??\n (this.constructor as typeof OutputTask).outputSchema()\n );\n }\n\n public async execute(input: OutputTaskInput) {\n return input as OutputTaskOutput;\n }\n\n public async executeReactive(input: OutputTaskInput) {\n return input as OutputTaskOutput;\n }\n}\n\n/**\n * Module augmentation to register task type in the workflow system\n */\ndeclare module \"@workglow/task-graph\" {\n interface Workflow {\n output: CreateWorkflow<OutputTaskInput, OutputTaskOutput, OutputTaskConfig>;\n }\n}\n\nWorkflow.prototype.output = CreateWorkflow(OutputTask);\n",
19
19
  "/**\n * @license\n * Copyright 2025 Steven Roussey <sroussey@gmail.com>\n * SPDX-License-Identifier: Apache-2.0\n */\n\nimport { CreateWorkflow, Task, TaskConfig, Workflow } from \"@workglow/task-graph\";\nimport { DataPortSchema, FromSchema } from \"@workglow/util\";\n\nconst inputSchema = {\n type: \"object\",\n properties: {\n input: {\n title: \"Single Input\",\n description: \"A single value to output\",\n },\n },\n additionalProperties: false,\n} as const satisfies DataPortSchema;\n\nconst outputSchema = {\n type: \"object\",\n properties: {},\n additionalProperties: true,\n} as const satisfies DataPortSchema;\n\nexport type SplitTaskInput = FromSchema<typeof inputSchema>;\nexport type SplitTaskOutput = FromSchema<typeof outputSchema>;\n\n/**\n * SplitTask takes an array or single value as input and creates\n * separate outputs for each element. Each output is named by its index (0, 1, 2, etc.).\n * Useful for workflows that need to process array elements in parallel branches.\n *\n * Features:\n * - Accepts both arrays and single values as input\n * - Creates one output per array element (output_0, output_1, etc.)\n * - Single values are treated as a single-element array\n * - Output count matches array length\n *\n * Example:\n * Input: { input: [1, 2, 3] }\n * Output: { output_0: 1, output_1: 2, output_2: 3 }\n */\nexport class SplitTask<\n Input extends SplitTaskInput = SplitTaskInput,\n Output extends SplitTaskOutput = SplitTaskOutput,\n Config extends TaskConfig = TaskConfig,\n> extends Task<Input, Output, Config> {\n public static type = \"SplitTask\";\n public static category = \"Utility\";\n public static title = \"Split\";\n public static description =\n \"Splits an array into individual outputs, creating one output per element\";\n static hasDynamicSchemas = true;\n static readonly cacheable = false;\n\n public static inputSchema() {\n return inputSchema;\n }\n\n public static outputSchema() {\n return outputSchema;\n }\n\n public outputSchema(): DataPortSchema {\n return outputSchema;\n }\n\n async executeReactive(input: Input): Promise<Output> {\n const inputValue = input.input;\n const output = {} as Output;\n\n // Handle array input\n if (Array.isArray(inputValue)) {\n inputValue.forEach((item, index) => {\n (output as any)[`output_${index}`] = item;\n });\n } else {\n // Handle single value as a single-element array\n (output as any).output_0 = inputValue;\n }\n\n return output;\n }\n}\n\nexport const split = (input: SplitTaskInput, config: TaskConfig = {}) => {\n const task = new SplitTask({}, config);\n return task.run(input);\n};\n\ndeclare module \"@workglow/task-graph\" {\n interface Workflow {\n split: CreateWorkflow<SplitTaskInput, SplitTaskOutput, TaskConfig>;\n }\n}\n\nWorkflow.prototype.split = CreateWorkflow(SplitTask);\n",
20
- "/**\n * @license\n * Copyright 2025 Steven Roussey <sroussey@gmail.com>\n * SPDX-License-Identifier: Apache-2.0\n */\n\nexport * from \"./task/ArrayTask\";\nexport * from \"./task/DebugLogTask\";\nexport * from \"./task/DelayTask\";\nexport * from \"./task/FetchUrlTask\";\nexport * from \"./task/InputTask\";\nexport * from \"./task/JavaScriptTask\";\nexport * from \"./task/JsonTask\";\nexport * from \"./task/LambdaTask\";\nexport * from \"./task/MergeTask\";\nexport * from \"./task/OutputTask\";\nexport * from \"./task/SplitTask\";\n\nimport { TaskRegistry } from \"@workglow/task-graph\";\nimport { ArrayTask } from \"./task/ArrayTask\";\nimport { DebugLogTask } from \"./task/DebugLogTask\";\nimport { DelayTask } from \"./task/DelayTask\";\nimport { FetchUrlTask } from \"./task/FetchUrlTask\";\nimport { InputTask } from \"./task/InputTask\";\nimport { JavaScriptTask } from \"./task/JavaScriptTask\";\nimport { JsonTask } from \"./task/JsonTask\";\nimport { LambdaTask } from \"./task/LambdaTask\";\nimport { MergeTask } from \"./task/MergeTask\";\nimport { OutputTask } from \"./task/OutputTask\";\nimport { SplitTask } from \"./task/SplitTask\";\n\n// Register all common tasks with the TaskRegistry.\n// Centralized registration ensures tasks are available for JSON deserialization\n// and prevents tree-shaking issues.\nexport const registerCommonTasks = () => {\n const tasks = [\n ArrayTask,\n DebugLogTask,\n DelayTask,\n FetchUrlTask,\n InputTask,\n JavaScriptTask,\n JsonTask,\n LambdaTask,\n MergeTask,\n OutputTask,\n SplitTask,\n ];\n tasks.map(TaskRegistry.registerTask);\n return tasks;\n};\n"
20
+ "/**\n * @license\n * Copyright 2025 Steven Roussey <sroussey@gmail.com>\n * SPDX-License-Identifier: Apache-2.0\n */\n\nexport * from \"./task/ArrayTask\";\nexport * from \"./task/DebugLogTask\";\nexport * from \"./task/DelayTask\";\nexport * from \"./task/FetchUrlTask\";\nexport * from \"./task/InputTask\";\nexport * from \"./task/JavaScriptTask\";\nexport * from \"./task/JsonTask\";\nexport * from \"./task/LambdaTask\";\nexport * from \"./task/MergeTask\";\nexport * from \"./task/OutputTask\";\nexport * from \"./task/SplitTask\";\n\nimport { TaskRegistry } from \"@workglow/task-graph\";\nimport { DebugLogTask } from \"./task/DebugLogTask\";\nimport { DelayTask } from \"./task/DelayTask\";\nimport { FetchUrlTask } from \"./task/FetchUrlTask\";\nimport { InputTask } from \"./task/InputTask\";\nimport { JavaScriptTask } from \"./task/JavaScriptTask\";\nimport { JsonTask } from \"./task/JsonTask\";\nimport { LambdaTask } from \"./task/LambdaTask\";\nimport { MergeTask } from \"./task/MergeTask\";\nimport { OutputTask } from \"./task/OutputTask\";\nimport { SplitTask } from \"./task/SplitTask\";\n\n// Register all common tasks with the TaskRegistry.\n// Centralized registration ensures tasks are available for JSON deserialization\n// and prevents tree-shaking issues.\nexport const registerCommonTasks = () => {\n const tasks = [\n DebugLogTask,\n DelayTask,\n FetchUrlTask,\n InputTask,\n JavaScriptTask,\n JsonTask,\n LambdaTask,\n MergeTask,\n OutputTask,\n SplitTask,\n ];\n tasks.map(TaskRegistry.registerTask);\n return tasks;\n};\n"
21
21
  ],
22
- "mappings": "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CA,MAEA,uBACA,gDACA,iCACA,+CACA,0BACA,2BACA,cACA,KACA,wDACA,qBACA,2CACA,aACA,KACA,QACA,KACA,cACA,KACA,MAEA,uBACA,oDACA,iCACA,+CACA,eACA,cACA,KACA,oBACA,+BACA,sBACA,YACA,gDACA,KACA,KACA,8DACA,oBACA,2CACA,aACA,KACA,QACA,KACA,cACA,KACA,MAEA,uBACA,gCACA,iCACA,+CAEA,eACA,4DAEA,qCACA,2BACA,aACA,KACA,kBACA,oBACA,YACA,6BACA,KACA,YACA,cACA,KACA,2BACA,iCACA,oCACA,2BACA,6BACA,KACA,KACA,kBACA,KACA,MAEA,uBACA,mDACA,iCACA,+CACA,eACA,oBACA,qCACA,YACA,iCACA,KACA,+BACA,8BACA,YACA,qBACA,kEACA,KACA,qBAEA,uDACA,iBACA,uBACA,YACA,qBACA,KACA,iCACA,8BACA,YACA,gBACA,KACA,KAEA,mEACA,iCACA,8BACA,YACA,gBACA,KACA,KAEA,mDACA,gBACA,KACA,uBAEA,mCACA,4CACA,iBACA,sBACA,YACA,sBACA,KACA,KACA,eACA,gDACA,oCACA,KACA,mBACA,mBACA,KACA,MAEA,uBACA,+BACA,iCACA,yBACA,oBACA,iDACA,8CACA,+BACA,mDACA,qBACA,0BACA,YACA,oBACA,KACA,KACA,YACA,uBACA,KACA,KACA,kBACA,KACA,MAEA,uBACA,kCACA,iCACA,+CACA,oDACA,+BACA,iBACA,mCACA,6BACA,6DACA,KACA,eACA,KACA,MAIA,uBACA,yCACA,qEACA,iBACA,+CACA,0CACA,qBACA,gEACA,QACA,KACA,gBACA,KACA,MAIA,uBACA,oCACA,yFACA,+CACA,iBACA,gEACA,mCACA,iBACA,mBACA,oDACA,KACA,KACA,eACA,KACA,MAIA,uBACA,yCACA,mEACA,iBACA,+CACA,0CACA,qBACA,6CACA,QACA,KACA,KACA,MAIA,uBACA,qCACA,mEACA,iBACA,+CACA,0CACA,2BACA,qBACA,oDACA,QACA,KACA,aACA,KACA,MAIA,uBACA,kDACA,mEACA,+CACA,qBACA,iCACA,yBACA,YACA,qCACA,mBACA,mEACA,KACA,mBACA,KACA,0BACA,oDACA,KACA,iBACA,KACA,MAIA,uBACA,uDACA,0GACA,+CACA,2BACA,gCACA,yBACA,YACA,oCACA,gBACA,mEACA,KACA,mBACA,KACA,yBACA,oDACA,KACA,iBACA,KACA,MAIA,uBACA,qCACA,8DACA,+CACA,gEACA,mCACA,6DACA,KACA,iBACA,KACA,MAEA,uBACA,6BACA,iCACA,yCACA,yBACA,KACA,2CACA,oBACA,mDACA,yDACA,8CACA,uBACA,4BACA,0BACA,0BACA,YACA,mBACA,KACA,kBACA,uBACA,YACA,uBACA,KACA,cACA,KACA,KACA,wBACA,KACA,gBACA,KACA,MAEA,uBACA,+BACA,iCACA,+CACA,iBACA,mCACA,gFACA,KACA,yBACA,KACA,MACA,SACA,EACF;AAAA;AAOF,YAAY,UAAU,aAAa,QAAS,CAAC,cAAc;AAAA,EACzD,IAAI,kBAAkB;AAAA,EACtB,IAAI;AAAA,EAEJ,UAAU,SAAS,MAAM,CAAC,OAAO;AAAA,IAC/B,QAAQ,UAAU,SAAS,YAAY,aAAa,OAAO,KAAK,IAAI;AAAA,IACpE,IAAI,gBAAgB,cAAc,GAAG;AAAA,MAEnC,KAAK,OAAO;AAAA,MACZ,OAAO;AAAA,IACT,EAAO;AAAA,MAEL,OAAO;AAAA;AAAA;AAAA,EAGX,KAAK,SAAS,KAAK,qBAAqB,SAAS,IAAI;AAAA,EACrD,KAAK,YAAY,cAAc,UAAU,KAAK,QAAQ,YAAY,wBAAwB;AAAA,EAG1F,KAAK,YACH,KAAK,QACL,gBACA,KAAK,qBAAqB,OAAO,cAAc,KAAK,GACpD,YAAY,wBACd;AAAA,EAIA,IAAI,YAAY;AAAA,IACd;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EACF;AAAA,EACA,SAAS,IAAI,EAAG,IAAI,UA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",
23
- "debugId": "B1BD272CB310F36564756E2164756E21",
22
+ "mappings": "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CA,sBACA,6BACA,0BACA,YACA,gBACA,KACA,eACA,uBACA,YACA,0BACA,KACA,KACA,aACA,KACA,MAEA,uBACA,gDACA,iCACA,+CACA,0BACA,2BACA,cACA,KACA,wDACA,qBACA,2CACA,aACA,KACA,QACA,KACA,cACA,KACA,MAEA,uBACA,oDACA,iCACA,+CACA,eACA,cACA,KACA,oBACA,+BACA,sBACA,YACA,gDACA,KACA,KACA,8DACA,oBACA,2CACA,aACA,KACA,QACA,KACA,cACA,KACA,MAEA,uBACA,gCACA,iCACA,+CAEA,eACA,4DAEA,qCACA,2BACA,aACA,KACA,kBACA,oBACA,YACA,6BACA,KACA,YACA,cACA,KACA,2BACA,iCACA,oCACA,2BACA,6BACA,KACA,KACA,kBACA,KACA,MAEA,uBACA,mDACA,iCACA,+CACA,eACA,oBACA,qCACA,YACA,iCACA,KACA,+BACA,8BACA,YACA,qBACA,kEACA,KACA,qBAEA,uDACA,iBACA,uBACA,YACA,qBACA,KACA,iCACA,8BACA,YACA,gBACA,KACA,KAEA,mEACA,iCACA,8BACA,YACA,gBACA,KACA,KAEA,mDACA,gBACA,KACA,uBAEA,mCACA,4CACA,iBACA,sBACA,YACA,sBACA,KACA,KACA,eACA,gDACA,oCACA,KACA,mBACA,mBACA,KACA,MAEA,uBACA,+BACA,iCACA,yBACA,oBACA,iDACA,8CACA,+BACA,mDACA,qBACA,0BACA,YACA,oBACA,KACA,KACA,YACA,uBACA,KACA,KACA,kBACA,KACA,MAEA,uBACA,kCACA,iCACA,+CACA,oDACA,+BACA,iBACA,mCACA,6BACA,6DACA,KACA,eACA,KACA,MAIA,uBACA,yCACA,qEACA,iBACA,+CACA,0CACA,qBACA,gEACA,QACA,KACA,gBACA,KACA,MAIA,uBACA,oCACA,yFACA,+CACA,iBACA,gEACA,mCACA,iBACA,mBACA,oDACA,KACA,KACA,eACA,KACA,MAIA,uBACA,yCACA,mEACA,iBACA,+CACA,0CACA,qBACA,6CACA,QACA,KACA,KACA,MAIA,uBACA,qCACA,mEACA,iBACA,+CACA,0CACA,2BACA,qBACA,oDACA,QACA,KACA,aACA,KACA,MAIA,uBACA,kDACA,mEACA,+CACA,qBACA,iCACA,yBACA,YACA,qCACA,mBACA,mEACA,KACA,mBACA,KACA,0BACA,oDACA,KACA,iBACA,KACA,MAIA,uBACA,uDACA,0GACA,+CACA,2BACA,gCACA,yBACA,YACA,oCACA,gBACA,mEACA,KACA,mBACA,KACA,yBACA,oDACA,KACA,iBACA,KACA,MAIA,uBACA,qCACA,8DACA,+CACA,gEACA,mCACA,6DACA,KACA,iBACA,KACA,MAEA,uBACA,6BACA,iCACA,yCACA,yBACA,KACA,2CACA,oBACA,mDACA,yDACA,8CACA,uBACA,4BACA,0BACA,0BACA,YACA,mBACA,KACA,kBACA,uBACA,YACA,uBACA,KACA,cACA,KACA,KACA,wBACA,KACA,gBACA,KACA,MAEA,uBACA,+BACA,iCACA,+CACA,iBACA,mCACA,gFACA,KACA,yBACA,KACA,MACA,SACA,EACF;AAAA;AAOF,YAAY,UAAU,aAAa,QAAS,CAAC,cAAc;AAAA,EACzD,IAAI,kBAAkB;AAAA,EACtB,IAAI;AAAA,EAEJ,UAAU,SAAS,OAAM,CAAC,OAAO;AAAA,IAC/B,QAAQ,UAAU,SAAS,YAAY,aAAa,OAAO,KAAK,IAAI;AAAA,IACpE,IAAI,gBAAgB,cAAc,GAAG;AAAA,MAEnC,KAAK,OAAO;AAAA,MACZ,OAAO;AAAA,IACT,EAAO;AAAA,MAEL,OAAO;AAAA;AAAA;AAAA,EAGX,KAAK,SAAS,KAAK,qBAAqB,SAAS,IAAI;AAAA,EACrD,KAAK,YAAY,cAAc,UAAU,KAAK,QAAQ,YAAY,wBAAwB;AAAA,EAG1F,KAAK,YACH,KAAK,QACL,gBACA,KAAK,qBAAqB,OAAO,cAAc,KAAK,GACpD,YAAY,wBACd;AAAA,EAIA,IAAI,YAAY;AAAA,IACd;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,I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",
23
+ "debugId": "D326EDEDA4D6BDB564756E2164756E21",
24
24
  "names": []
25
25
  }