{"version":3,"file":"bundler-BKf2S2r_.cjs","names":["sep","getPackageName","isBareModuleSpecifier","isExternalProtocolImport","getPackageName","isExternalProtocolImport","removeDeployer","t","removeDeployerBabelPlugin","isDependencyPartOfPackage","slash","getNodeResolveOptions"],"sources":["../src/build/plugins/esbuild.ts","../src/build/plugins/esm-shim.ts","../src/build/plugins/local-storage-detector.ts","../src/build/package-info.ts","../src/build/plugins/node-modules-extension-resolver.ts","../src/build/plugins/protocol-external-resolver.ts","../src/build/babel/remove-deployer.ts","../src/build/plugins/remove-deployer.ts","../src/build/plugins/subpath-externals-resolver.ts","../src/build/plugins/tsconfig-paths.ts","../src/build/bundler.ts"],"sourcesContent":["import originalEsbuild from 'rollup-plugin-esbuild';\n\nexport function esbuild(options: Parameters<typeof originalEsbuild>[0] = {}) {\n  return originalEsbuild({\n    target: 'node20',\n    platform: 'node',\n    minify: false,\n    ...options,\n  });\n}\n","import originalEsmShim from '@rollup/plugin-esm-shim';\nimport type { Plugin } from 'rollup';\n\n// Regex to detect DECLARATIONS of __filename, __dirname\n// Using non-capturing group (?:) for slightly better performance\nconst FilenameDeclarationRegex = /(?:const|let|var)\\s+__filename/;\nconst DirnameDeclarationRegex = /(?:const|let|var)\\s+__dirname/;\n\n/**\n * Custom ESM shim plugin wrapper that respects user-declared __filename/__dirname variables.\n *\n * The original @rollup/plugin-esm-shim would inject shims even when users had already declared\n * their own __filename/__dirname, causing \"Identifier '__filename' has already been declared\" errors.\n *\n * This wrapper checks if the user has already declared these variables and skips the shim injection\n * if so. If either variable is declared, we skip the shim entirely since the original plugin injects\n * both together and we assume users who declare one will also handle the other if needed.\n */\nexport function esmShim(): Plugin {\n  const original = originalEsmShim();\n\n  return {\n    name: 'esm-shim',\n    renderChunk(code, chunk, opts, meta) {\n      // Fast path: use includes() first to avoid regex if identifiers aren't present\n      const hasFilename = code.includes('__filename');\n      const hasDirname = code.includes('__dirname');\n\n      // If user declared either __filename or __dirname, skip shim injection entirely\n      // since the original plugin injects both together\n      const userDeclaredFilename = hasFilename && FilenameDeclarationRegex.test(code);\n      const userDeclaredDirname = hasDirname && DirnameDeclarationRegex.test(code);\n\n      if (userDeclaredFilename || userDeclaredDirname) {\n        return null;\n      }\n\n      // Otherwise, delegate to the original plugin\n      if (typeof original.renderChunk === 'function') {\n        return original.renderChunk.call(this, code, chunk, opts, meta);\n      }\n\n      return null;\n    },\n  };\n}\n\nexport default esmShim;\n","import type { Plugin } from 'rollup';\n\n/**\n * Connection-string-shaped patterns that resolve to the build host and will\n * never work inside the deploy container.\n */\nconst LOCAL_HOST_PATTERNS: Array<{ pattern: RegExp; hint: string }> = [\n  {\n    pattern: /\\bfile:\\.{1,2}\\/[^\\s'\"`]+\\.(?:db|sqlite)\\b/gi,\n    hint: 'LibSQL/SQLite file path relative to the build host',\n  },\n  {\n    pattern: /\\b(?:postgres(?:ql)?|mysql|mongodb|redis|libsql):\\/\\/[^/\\s'\"`]*localhost\\b/gi,\n    hint: 'localhost in a connection string',\n  },\n  {\n    pattern: /\\b(?:postgres(?:ql)?|mysql|mongodb|redis|libsql):\\/\\/[^/\\s'\"`]*127\\.0\\.0\\.1\\b/g,\n    hint: '127.0.0.1 in a connection string',\n  },\n];\n\nexport interface LocalStorageDetection {\n  value: string;\n  hint: string;\n  module: string;\n  /**\n   * Name of the env var that guards this literal at runtime, when the\n   * literal is the fallback arm of a `process.env.X || literal` (or `??`)\n   * expression. The CLI preflight uses this to suppress or soften the\n   * error when the guarding var is present in the deploy env.\n   */\n  guardedBy?: string;\n}\n\n/**\n * Unified preflight metadata emitted as `preflight-metadata.json`.\n * Superset of the legacy `preflight-local-paths.json` (which stays emitted\n * for one release so older CLIs keep working with newer deployers).\n */\nexport interface PreflightMetadata {\n  version: 1;\n  localPaths: LocalStorageDetection[];\n  userEnvRefs: string[];\n}\n\n/**\n * Everything under `.mastra/.build/` is deployer-generated pre-bundled\n * dependency code (`@mastra__*.mjs` shims and their shared `chunk-*.mjs`\n * files), never user-authored. These preserve JSDoc examples from the\n * original library source (e.g. `LibSQLStore({ url: 'file:./data.db' })`)\n * which would otherwise trip the host-local detector, and their env var\n * reads are library refs that must not count as user references.\n */\nconst MASTRA_BUILD_DIR = /[\\\\/]\\.mastra[\\\\/]\\.build[\\\\/]/;\n\nconst PROCESS_ENV_DOT = /\\bprocess\\.env\\.([A-Z_][A-Z0-9_]*)\\b/g;\nconst PROCESS_ENV_BRACKET = /\\bprocess\\.env\\[['\"]([A-Z_][A-Z0-9_]*)['\"]\\]/g;\n\n/** Names of the metadata assets emitted into the output dir. */\n// TODO(preflight-metadata): stop emitting the legacy file in the next minor\n// after @mastra/deployer 1.50 — every CLI released alongside 1.50+ reads\n// preflight-metadata.json. Also remove the legacy fallback in the CLI's\n// deploy-preflight.ts at the same time.\nconst LEGACY_LOCAL_PATHS_FILE = 'preflight-local-paths.json';\nconst PREFLIGHT_METADATA_FILE = 'preflight-metadata.json';\nconst WORKERS_CONFIG_FILE = 'workers.json';\n\ninterface ModuleMatch {\n  value: string;\n  hint: string;\n  guardedBy?: string;\n}\n\nfunction collectEnvRefs(code: string): Set<string> {\n  const refs = new Set<string>();\n  for (const m of code.matchAll(PROCESS_ENV_DOT)) refs.add(m[1]!);\n  for (const m of code.matchAll(PROCESS_ENV_BRACKET)) refs.add(m[1]!);\n  return refs;\n}\n\n/* ------------------------------------------------------------------ */\n/*  AST guard analysis                                                */\n/* ------------------------------------------------------------------ */\n\ninterface AstNode {\n  type: string;\n  [key: string]: unknown;\n}\n\nfunction isAstNode(v: unknown): v is AstNode {\n  return typeof v === 'object' && v !== null && typeof (v as AstNode).type === 'string';\n}\n\nfunction walkAst(node: AstNode, visit: (node: AstNode) => void): void {\n  visit(node);\n  for (const value of Object.values(node)) {\n    if (Array.isArray(value)) {\n      for (const item of value) {\n        if (isAstNode(item)) walkAst(item, visit);\n      }\n    } else if (isAstNode(value)) {\n      walkAst(value, visit);\n    }\n  }\n}\n\nfunction propertyName(node: AstNode): string | undefined {\n  const key = node.key as AstNode | undefined;\n  if (key?.type === 'Identifier' && !node.computed) return key.name as string;\n  if (key?.type === 'Literal' && typeof key.value === 'string') return key.value;\n  return undefined;\n}\n\ntype JsonValue = string | number | boolean | null | JsonValue[] | { [key: string]: JsonValue };\ntype WorkerConfig = { enabled: boolean; [key: string]: JsonValue };\n\ntype WorkersConfig = {\n  version: 1;\n  orchestration: WorkerConfig;\n  scheduler: WorkerConfig;\n  backgroundTasks: WorkerConfig;\n  custom: string[];\n};\n\nfunction staticJsonValue(node: AstNode): JsonValue | undefined {\n  if (node.type === 'Literal') {\n    const value = node.value;\n    if (value === null || typeof value === 'string' || typeof value === 'number' || typeof value === 'boolean') {\n      return value;\n    }\n    return undefined;\n  }\n\n  if (node.type === 'UnaryExpression' && node.operator === '-') {\n    const argument = node.argument as AstNode | undefined;\n    const value = argument ? staticJsonValue(argument) : undefined;\n    return typeof value === 'number' ? -value : undefined;\n  }\n\n  if (node.type === 'TemplateLiteral') {\n    const expressions = (node.expressions as AstNode[] | undefined) ?? [];\n    const quasis = (node.quasis as Array<{ value?: { cooked?: string } }> | undefined) ?? [];\n    if (expressions.length === 0) return quasis[0]?.value?.cooked ?? '';\n    return undefined;\n  }\n\n  if (node.type === 'ArrayExpression') {\n    const result: JsonValue[] = [];\n    for (const element of (node.elements as Array<AstNode | null> | undefined) ?? []) {\n      if (!element) return undefined;\n      const value = staticJsonValue(element);\n      if (value === undefined) return undefined;\n      result.push(value);\n    }\n    return result;\n  }\n\n  if (node.type === 'ObjectExpression') {\n    const result: Record<string, JsonValue> = {};\n    for (const property of (node.properties as AstNode[] | undefined) ?? []) {\n      if (property.type !== 'Property' || property.kind !== 'init') return undefined;\n      const name = propertyName(property);\n      const valueNode = property.value as AstNode | undefined;\n      if (!name || !valueNode) return undefined;\n      const value = staticJsonValue(valueNode);\n      if (value === undefined) {\n        delete result[name];\n      } else {\n        result[name] = value;\n      }\n    }\n    return result;\n  }\n\n  return undefined;\n}\n\nfunction staticObjectValue(node: AstNode | undefined): Record<string, JsonValue> {\n  if (!node) return {};\n  const value = staticJsonValue(node);\n  return typeof value === 'object' && value !== null && !Array.isArray(value) ? value : {};\n}\n\nfunction isConfigured(node: AstNode | undefined): boolean {\n  if (!node) return false;\n  if (node.type === 'Literal') return node.value !== null && node.value !== false;\n  return node.type !== 'Identifier' || node.name !== 'undefined';\n}\n\nfunction unwrapAwait(node: AstNode | undefined): AstNode | undefined {\n  return node?.type === 'AwaitExpression' ? (node.argument as AstNode | undefined) : node;\n}\n\nfunction findPreparedConfigSources(ast: AstNode): Map<string, AstNode> {\n  const factoryConfigs = new Map<string, AstNode>();\n  const preparedConfigs = new Map<string, AstNode>();\n\n  walkAst(ast, node => {\n    if (node.type !== 'VariableDeclarator') return;\n    const id = node.id as AstNode | undefined;\n    const init = node.init as AstNode | undefined;\n    const callee = init?.type === 'NewExpression' ? (init.callee as AstNode | undefined) : undefined;\n    const config = (init?.arguments as AstNode[] | undefined)?.[0];\n    if (\n      id?.type === 'Identifier' &&\n      callee?.type === 'Identifier' &&\n      callee.name === 'MastraFactory' &&\n      config?.type === 'ObjectExpression'\n    ) {\n      factoryConfigs.set(id.name as string, config);\n    }\n  });\n\n  walkAst(ast, node => {\n    if (node.type !== 'VariableDeclarator') return;\n    const id = node.id as AstNode | undefined;\n    const init = unwrapAwait(node.init as AstNode | undefined);\n    const callee = init?.type === 'CallExpression' ? (init.callee as AstNode | undefined) : undefined;\n    const object = callee?.type === 'MemberExpression' ? (callee.object as AstNode | undefined) : undefined;\n    const property = callee?.type === 'MemberExpression' ? (callee.property as AstNode | undefined) : undefined;\n    const isPrepareCall =\n      (property?.type === 'Identifier' && property.name === 'prepare') ||\n      (property?.type === 'Literal' && property.value === 'prepare');\n    if (id?.type !== 'Identifier' || object?.type !== 'Identifier' || !isPrepareCall) return;\n\n    const factoryConfig = factoryConfigs.get(object.name as string);\n    if (factoryConfig) preparedConfigs.set(id.name as string, factoryConfig);\n  });\n\n  return preparedConfigs;\n}\n\nfunction resolvedObjectProperty(\n  config: AstNode,\n  name: string,\n  preparedConfigs: Map<string, AstNode>,\n  seen = new Set<AstNode>(),\n): AstNode | undefined {\n  if (config.type !== 'ObjectExpression' || seen.has(config)) return undefined;\n  seen.add(config);\n\n  let value: AstNode | undefined;\n  for (const property of (config.properties as AstNode[] | undefined) ?? []) {\n    if (property.type === 'Property' && propertyName(property) === name) {\n      value = property.value as AstNode | undefined;\n      continue;\n    }\n    if (property.type !== 'SpreadElement') continue;\n\n    const argument = property.argument as AstNode | undefined;\n    const spreadConfig = argument?.type === 'Identifier' ? preparedConfigs.get(argument.name as string) : undefined;\n    if (!spreadConfig) continue;\n    const spreadValue = resolvedObjectProperty(spreadConfig, name, preparedConfigs, seen);\n    if (spreadValue) value = spreadValue;\n  }\n\n  return value;\n}\n\n/**\n * Best-effort static extraction of the worker topology configured on a\n * `new Mastra(...)` instance, including `MastraFactory.prepare()` results spread\n * into its constructor. A worker service is only useful when the instance\n * explicitly provides both storage and pubsub so its processes can coordinate.\n * Dynamic values and callbacks are omitted from the display-only manifest.\n */\nfunction findStaticCustomWorkerNames(ast: AstNode, workers: AstNode | undefined): string[] {\n  const variableInitializers = new Map<string, AstNode>();\n  const classWorkerNames = new Map<string, string>();\n\n  walkAst(ast, node => {\n    if (node.type === 'VariableDeclarator') {\n      const id = node.id as AstNode | undefined;\n      const init = node.init as AstNode | undefined;\n      if (id?.type === 'Identifier' && init) variableInitializers.set(id.name as string, init);\n      return;\n    }\n\n    if (node.type !== 'ClassDeclaration' && node.type !== 'ClassExpression') return;\n    const id = node.id as AstNode | undefined;\n    const body = node.body as AstNode | undefined;\n    if (id?.type !== 'Identifier' || body?.type !== 'ClassBody') return;\n\n    for (const member of (body.body as AstNode[] | undefined) ?? []) {\n      if (member.type !== 'PropertyDefinition' || propertyName(member) !== 'name') continue;\n      const value = member.value as AstNode | undefined;\n      const name = value ? staticJsonValue(value) : undefined;\n      if (typeof name === 'string') classWorkerNames.set(id.name as string, name);\n    }\n  });\n\n  const names = new Set<string>();\n  const seen = new Set<AstNode>();\n  const visit = (node: AstNode | undefined): void => {\n    if (!node || seen.has(node)) return;\n    seen.add(node);\n\n    if (node.type === 'Identifier') {\n      visit(variableInitializers.get(node.name as string));\n      return;\n    }\n    if (node.type === 'ArrayExpression') {\n      for (const element of (node.elements as Array<AstNode | null> | undefined) ?? []) {\n        if (element?.type === 'SpreadElement') {\n          visit(element.argument as AstNode | undefined);\n        } else {\n          visit(element ?? undefined);\n        }\n      }\n      return;\n    }\n    if (node.type === 'NewExpression') {\n      const callee = node.callee as AstNode | undefined;\n      const name = callee?.type === 'Identifier' ? classWorkerNames.get(callee.name as string) : undefined;\n      if (name) names.add(name);\n      return;\n    }\n    if (node.type === 'ObjectExpression') {\n      const name = staticObjectValue(node).name;\n      if (typeof name === 'string') names.add(name);\n    }\n  };\n\n  visit(workers);\n  for (const builtIn of ['orchestration', 'scheduler', 'backgroundTasks']) names.delete(builtIn);\n  return [...names].sort();\n}\n\nfunction findWorkersConfig(ast: AstNode): WorkersConfig | undefined {\n  const preparedConfigs = findPreparedConfigSources(ast);\n  let workersConfig: WorkersConfig | undefined;\n  walkAst(ast, node => {\n    if (workersConfig || node.type !== 'NewExpression') return;\n    const callee = node.callee as AstNode | undefined;\n    if (callee?.type !== 'Identifier' || callee.name !== 'Mastra') return;\n    const config = (node.arguments as AstNode[] | undefined)?.[0];\n    if (config?.type !== 'ObjectExpression') return;\n\n    const storage = resolvedObjectProperty(config, 'storage', preparedConfigs);\n    const pubsub = resolvedObjectProperty(config, 'pubsub', preparedConfigs);\n    const workers = resolvedObjectProperty(config, 'workers', preparedConfigs);\n    if (!isConfigured(storage) || !isConfigured(pubsub) || (workers?.type === 'Literal' && workers.value === false)) {\n      return;\n    }\n\n    const scheduler = staticObjectValue(resolvedObjectProperty(config, 'scheduler', preparedConfigs));\n    const backgroundTasks = staticObjectValue(resolvedObjectProperty(config, 'backgroundTasks', preparedConfigs));\n\n    workersConfig = {\n      version: 1,\n      orchestration: { enabled: true },\n      scheduler: { ...scheduler, enabled: scheduler.enabled !== false },\n      backgroundTasks: { ...backgroundTasks, enabled: backgroundTasks.enabled === true },\n      custom: findStaticCustomWorkerNames(ast, workers),\n    };\n  });\n  return workersConfig;\n}\n\n/** Find the first `process.env.X` / `process.env['X']` read inside an expression. */\nfunction findFirstEnvRef(node: AstNode): string | undefined {\n  let found: string | undefined;\n  walkAst(node, n => {\n    if (found !== undefined) return;\n    if (n.type !== 'MemberExpression') return;\n    const object = n.object as AstNode | undefined;\n    if (\n      !object ||\n      object.type !== 'MemberExpression' ||\n      (object.object as AstNode | undefined)?.type !== 'Identifier' ||\n      ((object.object as AstNode).name as string) !== 'process' ||\n      (object.property as AstNode | undefined)?.type !== 'Identifier' ||\n      ((object.property as AstNode).name as string) !== 'env'\n    ) {\n      return;\n    }\n    const property = n.property as AstNode | undefined;\n    if (property?.type === 'Identifier' && !n.computed) {\n      found = property.name as string;\n    } else if (property?.type === 'Literal' && typeof property.value === 'string') {\n      found = property.value;\n    }\n  });\n  return found;\n}\n\n/**\n * Parse a module and figure out, for each detected local-path value, whether\n * every string literal containing it is the fallback arm of a\n * `process.env.X || <literal>` / `??` expression. Returns a map from\n * detected value to guarding env var name. Values with any unguarded\n * occurrence (or inconsistent guards) are absent — the CLI then errors as\n * before, which is the safe default.\n */\nfunction findGuardedValues(ast: AstNode, values: Set<string>): Map<string, string> {\n  const stringLiterals: AstNode[] = [];\n  const guardedLiterals = new Map<AstNode, string>();\n\n  walkAst(ast, node => {\n    if (node.type === 'Literal' && typeof node.value === 'string') {\n      stringLiterals.push(node);\n      return;\n    }\n    if (node.type === 'LogicalExpression' && (node.operator === '||' || node.operator === '??')) {\n      const right = node.right as AstNode | undefined;\n      if (right?.type === 'Literal' && typeof right.value === 'string') {\n        const envName = findFirstEnvRef(node.left as AstNode);\n        if (envName) guardedLiterals.set(right, envName);\n      }\n    }\n  });\n\n  const result = new Map<string, string>();\n  for (const value of values) {\n    const containing = stringLiterals.filter(lit => (lit.value as string).includes(value));\n    if (containing.length === 0) continue;\n    const guards = containing.map(lit => guardedLiterals.get(lit));\n    const first = guards[0];\n    if (first !== undefined && guards.every(g => g === first)) {\n      result.set(value, first);\n    }\n  }\n  return result;\n}\n\n/**\n * Rollup plugin that detects host-local storage URLs (e.g. `file:./mastra.db`,\n * `postgres://localhost`) in **user source modules** during bundling, and\n * collects the env vars user code reads via `process.env.X`.\n *\n * Only modules outside `node_modules` (and the deployer's own\n * `.mastra/.build/` pre-bundled files) are inspected, so library code\n * (like Agent Builder prompt templates or JSDoc examples in `@mastra/core`)\n * is naturally excluded.  When `rootDir` is given, modules outside it are\n * also excluded — symlinked dependencies (pnpm `link:`/`file:`) resolve to\n * real paths that never contain `node_modules`.  Tree-shaken modules are\n * excluded via\n * `generateBundle` — only modules that actually contribute rendered code to\n * the output are reported.\n *\n * When a detected literal is the fallback arm of a `process.env.X || literal`\n * expression, `guardedBy: \"X\"` is recorded so the CLI preflight can apply\n * deploy-time env context instead of hard-erroring on a dead fallback.\n *\n * Three assets are emitted into the output directory:\n * - `preflight-metadata.json` — unified metadata (local paths + user env refs)\n * - `workers.json` — statically extracted worker topology, or `null`\n * - `preflight-local-paths.json` — legacy shape, kept for one release so an\n *   older globally-installed CLI paired with a newer project-local deployer\n *   doesn't lose the LOCAL_STORAGE_PATH check.\n */\nexport function localStorageDetector(rootDir?: string): Plugin {\n  const userModuleMatches = new Map<string, ModuleMatch[]>();\n  const userModuleEnvRefs = new Map<string, Set<string>>();\n  const userModuleWorkersConfigs = new Map<string, WorkersConfig>();\n  let normalizedRoot: string | undefined;\n  if (rootDir) {\n    let root = rootDir.replace(/\\\\/g, '/');\n    while (root.endsWith('/')) root = root.slice(0, -1);\n    normalizedRoot = root + '/';\n  }\n\n  return {\n    name: 'mastra-local-storage-detector',\n\n    transform(_code, id) {\n      if (id.includes('node_modules')) return null;\n      if (MASTRA_BUILD_DIR.test(id)) return null;\n      // Modules outside the project/workspace root are dependencies resolved\n      // through symlinks (pnpm `link:`, `file:`, monorepo dev setups) whose\n      // real path escapes `node_modules` — library code, not user code.\n      if (normalizedRoot && !id.replace(/\\\\/g, '/').startsWith(normalizedRoot)) return null;\n\n      const refs = collectEnvRefs(_code);\n      if (refs.size > 0) {\n        userModuleEnvRefs.set(id, refs);\n      }\n\n      const matches: ModuleMatch[] = [];\n      for (const { pattern, hint } of LOCAL_HOST_PATTERNS) {\n        const re = new RegExp(pattern.source, pattern.flags.includes('g') ? pattern.flags : pattern.flags + 'g');\n        for (const m of _code.matchAll(re)) {\n          matches.push({ value: m[0], hint });\n        }\n      }\n\n      // Best-effort structural pass: only parse modules that may contain\n      // Mastra worker config or need guard analysis for a detected local path.\n      // Existing local-path matches remain unguarded on parse failure.\n      if (_code.includes('Mastra') || matches.length > 0) {\n        try {\n          const ast = this.parse(_code) as unknown as AstNode;\n          const workersConfig = findWorkersConfig(ast);\n          if (workersConfig) {\n            userModuleWorkersConfigs.set(id, workersConfig);\n          }\n          if (matches.length > 0) {\n            const guarded = findGuardedValues(ast, new Set(matches.map(m => m.value)));\n            for (const match of matches) {\n              const guardedBy = guarded.get(match.value);\n              if (guardedBy) match.guardedBy = guardedBy;\n            }\n          }\n        } catch {\n          // ignore — optional static metadata is best-effort\n        }\n      }\n\n      if (matches.length > 0) {\n        userModuleMatches.set(id, matches);\n      }\n\n      return null;\n    },\n\n    generateBundle(_, bundle) {\n      const detections: LocalStorageDetection[] = [];\n      const seen = new Set<string>();\n      const userEnvRefs = new Set<string>();\n      let workersConfig: WorkersConfig | undefined;\n\n      for (const chunk of Object.values(bundle)) {\n        if (chunk.type !== 'chunk') continue;\n\n        for (const [moduleId, moduleInfo] of Object.entries(chunk.modules)) {\n          if (moduleInfo.renderedLength === 0) continue;\n\n          for (const ref of userModuleEnvRefs.get(moduleId) ?? []) {\n            userEnvRefs.add(ref);\n          }\n          workersConfig ??= userModuleWorkersConfigs.get(moduleId);\n\n          const matches = userModuleMatches.get(moduleId);\n          if (!matches) continue;\n\n          for (const { value, hint, guardedBy } of matches) {\n            const key = `${hint}::${value}`;\n            if (seen.has(key)) continue;\n            seen.add(key);\n\n            detections.push({ value, hint, module: moduleId, ...(guardedBy ? { guardedBy } : {}) });\n          }\n        }\n      }\n\n      const metadata: PreflightMetadata = {\n        version: 1,\n        localPaths: detections,\n        userEnvRefs: [...userEnvRefs].sort(),\n      };\n\n      this.emitFile({\n        type: 'asset',\n        fileName: PREFLIGHT_METADATA_FILE,\n        source: JSON.stringify(metadata),\n      });\n\n      this.emitFile({\n        type: 'asset',\n        fileName: WORKERS_CONFIG_FILE,\n        source: JSON.stringify(workersConfig ?? null),\n      });\n\n      // Legacy asset — shape unchanged (no `guardedBy`) for older CLIs.\n      this.emitFile({\n        type: 'asset',\n        fileName: LEGACY_LOCAL_PATHS_FILE,\n        source: JSON.stringify(detections.map(({ value, hint, module }) => ({ value, hint, module }))),\n      });\n    },\n  };\n}\n","/**\n * Note: This function depends on local-pkg and should only be used at build-time.\n * It is in a separate file to avoid including local-pkg in runtime code.\n */\n\nimport { statSync } from 'node:fs';\nimport { dirname, resolve, sep } from 'node:path';\nimport { fileURLToPath, pathToFileURL } from 'node:url';\nimport { readJSON } from 'fs-extra/esm';\nimport { getPackageInfo } from 'local-pkg';\nimport { getPackageName } from './utils';\n\n/**\n * Normalize a resolution base path to a directory path.\n *\n * Callers often pass a module file path (e.g. a rollup module id like\n * `node_modules/@mastra/core/dist/chunk-XYZ.js`) as the parent path. mlly (used by local-pkg)\n * also treats each resolution base as a directory candidate (`<base>/_index.js`), which makes it\n * try to read `<file>/package.json`. That fails with ENOTDIR, which mlly does not tolerate\n * (only ENOENT) and local-pkg then logs the raw error to the console. Using the file's directory\n * as the base avoids this while resolving identically.\n */\nfunction toParentDirectoryUrl(parentPath: string): string {\n  let fsPath = resolve(parentPath.startsWith('file://') ? fileURLToPath(parentPath) : parentPath);\n\n  try {\n    if (statSync(fsPath).isFile()) {\n      fsPath = dirname(fsPath);\n    }\n  } catch {\n    // non-existent paths are used as-is\n  }\n\n  // Keep the trailing separator. Without it, URL resolution treats the directory name as a file\n  // and starts package lookup from its parent directory.\n  return pathToFileURL(`${fsPath}${sep}`).href;\n}\n\n/**\n * Get package root path\n */\nexport async function getPackageRootPath(packageName: string, parentPath?: string): Promise<string | null> {\n  let rootPath: string | null;\n\n  try {\n    let options: { paths?: string[] } | undefined = undefined;\n    if (parentPath) {\n      options = {\n        paths: [toParentDirectoryUrl(parentPath)],\n      };\n    }\n\n    const pkg = await getPackageInfo(packageName, options);\n    rootPath = pkg?.rootPath ?? null;\n  } catch {\n    rootPath = null;\n  }\n\n  return rootPath;\n}\n\nasync function readPackageMetadata(\n  rootPath: string,\n  requestedPackageName: string | null,\n): Promise<{ rootPath: string; version?: string; packageSpec?: string }> {\n  try {\n    const pkgJson = await readJSON(`${rootPath}/package.json`);\n    const version = pkgJson.version;\n    const actualPackageName = pkgJson.name;\n    const packageSpec =\n      version && actualPackageName && requestedPackageName && requestedPackageName !== actualPackageName\n        ? `npm:${actualPackageName}@${version}`\n        : undefined;\n\n    return { rootPath, version, packageSpec };\n  } catch {\n    return { rootPath };\n  }\n}\n\nexport async function getPackageMetadata(\n  packageName: string,\n  parentPath?: string,\n): Promise<{ rootPath: string | null; version?: string; packageSpec?: string }> {\n  const requestedPackageName = getPackageName(packageName);\n  const packageNames = [...new Set([packageName, requestedPackageName].filter(Boolean) as string[])];\n  let firstRootPath: string | null = null;\n\n  for (const name of packageNames) {\n    const rootPath = await getPackageRootPath(name, parentPath);\n    firstRootPath ??= rootPath;\n    if (!rootPath) {\n      continue;\n    }\n\n    const metadata = await readPackageMetadata(rootPath, requestedPackageName ?? null);\n    if (metadata.version || metadata.packageSpec) {\n      return metadata;\n    }\n  }\n\n  return { rootPath: firstRootPath };\n}\n","import { readFile } from 'node:fs/promises';\nimport { join, isAbsolute } from 'node:path';\nimport nodeResolve from '@rollup/plugin-node-resolve';\nimport type { Plugin } from 'rollup';\nimport type { PackageJson } from 'type-fest';\nimport { getPackageRootPath } from '../package-info';\nimport { getPackageName, isExternalProtocolImport, isBareModuleSpecifier } from '../utils';\n\n/**\n * Check if a package has an exports field in its package.json.\n * Results are cached to avoid repeated filesystem reads.\n */\nasync function getPackageJSON(pkgName: string, importer: string): Promise<PackageJson> {\n  const pkgRoot = await getPackageRootPath(pkgName, importer);\n  if (!pkgRoot) {\n    throw new Error(`Package ${pkgName} not found`);\n  }\n\n  const pkgJSON = JSON.parse(await readFile(join(pkgRoot, 'package.json'), 'utf-8')) as PackageJson;\n  return pkgJSON;\n}\n\n/**\n * Rollup plugin that resolves module extensions for external dependencies.\n *\n * This plugin handles ESM compatibility for external imports when node-resolve is not used:\n * - Packages WITH exports field (e.g., hono, date-fns): Keep imports as-is or strip redundant extensions\n * - Packages WITHOUT exports field (e.g., lodash): Add .js extension for direct file imports\n */\nexport function nodeModulesExtensionResolver(): Plugin {\n  // Create a single instance of node-resolve to reuse\n  const nodeResolvePlugin = nodeResolve();\n\n  return {\n    name: 'node-modules-extension-resolver',\n    async resolveId(id, importer, options) {\n      // Only bare package imports are relevant here.\n      // Virtual modules (e.g. `\\0virtual:#entry`) are not real filesystem paths, so they can't be\n      // used as a resolution base for package lookups.\n      if (\n        !importer ||\n        importer.startsWith('\\0') ||\n        !isBareModuleSpecifier(id) ||\n        isExternalProtocolImport(id) ||\n        isAbsolute(id)\n      ) {\n        return null;\n      }\n\n      // Skip direct package imports (e.g., 'lodash', '@mastra/core')\n      const parts = id.split('/');\n      const isScoped = id.startsWith('@');\n      if ((isScoped && parts.length === 2) || (!isScoped && parts.length === 1)) {\n        return null;\n      }\n\n      const pkgName = getPackageName(id);\n      if (!pkgName) {\n        return null;\n      }\n\n      try {\n        const packageJSON = await getPackageJSON(pkgName, importer);\n        // if it has exports, node should be able to rsolve it, if not the exports map is wrong.\n        if (!!packageJSON.exports) {\n          return null;\n        }\n\n        const packageRoot = await getPackageRootPath(pkgName, importer);\n        // @ts-expect-error - handle is part of resolveId signature\n        const nodeResolved = await nodeResolvePlugin.resolveId?.handler?.call(this, id, importer, options);\n        // if we cannot resolve it, it's not a valid import so we let node handle it\n        if (!nodeResolved?.id) {\n          return null;\n        }\n\n        let filePath = nodeResolved.id;\n        if (nodeResolved.resolvedBy === 'commonjs--resolver') {\n          filePath = filePath.substring(1).split('?')[0];\n        }\n\n        const resolvedImportPath = filePath.replace(packageRoot, pkgName);\n\n        return {\n          id: resolvedImportPath,\n          external: true,\n        };\n      } catch {\n        return null;\n      }\n    },\n  };\n}\n","import type { Plugin } from 'rollup';\nimport { isExternalProtocolImport } from '../utils';\n\nexport function protocolExternalResolver({ exclude = ['node:'] }: { exclude?: readonly string[] } = {}): Plugin {\n  return {\n    name: 'protocol-external-resolver',\n    resolveId(id) {\n      if (!isExternalProtocolImport(id, exclude)) {\n        return null;\n      }\n\n      return {\n        id,\n        external: true,\n      };\n    },\n  } satisfies Plugin;\n}\n","import { types as t } from '@babel/core';\nimport type { NodePath, PluginObject, PluginPass } from '@babel/core';\n\ninterface RemoveDeployerState extends PluginPass {\n  hasReplaced?: boolean;\n}\n\nexport function removeDeployer(): PluginObject<RemoveDeployerState> {\n  // Helper to remove deployer property from an object and clean up its binding\n  function removeDeployerFromObject(\n    objectExpr: t.ObjectExpression,\n    scope: { getBinding: (name: string) => { path?: NodePath } | undefined },\n  ): t.ObjectProperty | undefined {\n    const deployerProp = objectExpr.properties.find(\n      prop => t.isObjectProperty(prop) && t.isIdentifier(prop.key) && prop.key.name === 'deployer',\n    ) as t.ObjectProperty | undefined;\n\n    if (deployerProp) {\n      objectExpr.properties = objectExpr.properties.filter(prop => prop !== deployerProp);\n\n      // Clean up the deployer binding if it's a reference\n      if (t.isIdentifier(deployerProp.value)) {\n        const deployerBinding = scope.getBinding(deployerProp.value.name);\n        if (deployerBinding) {\n          deployerBinding.path?.parentPath?.remove();\n        }\n      }\n    }\n\n    return deployerProp;\n  }\n\n  return {\n    name: 'remove-deployer',\n    visitor: {\n      NewExpression(path, state: RemoveDeployerState) {\n        // is a variable declaration\n        const varDeclaratorPath = path.findParent(path => t.isVariableDeclarator(path.node));\n        if (!varDeclaratorPath) {\n          return;\n        }\n\n        const parentNode = path.parentPath.node;\n        // check if it's a const of mastra\n        if (!t.isVariableDeclarator(parentNode) || !t.isIdentifier(parentNode.id) || parentNode.id.name !== 'mastra') {\n          return;\n        }\n\n        if (!state.hasReplaced) {\n          state.hasReplaced = true;\n          const newMastraObj = t.cloneNode(path.node);\n          if (t.isObjectExpression(newMastraObj.arguments[0]) && newMastraObj.arguments[0].properties?.length) {\n            const objectArg = newMastraObj.arguments[0];\n            let foundDeployer = false;\n\n            // First, check for direct deployer property\n            const directDeployer = removeDeployerFromObject(objectArg, state.file.scope);\n            if (directDeployer) {\n              foundDeployer = true;\n            }\n\n            // Then, check spread elements for deployer properties\n            for (const prop of objectArg.properties) {\n              if (t.isSpreadElement(prop) && t.isIdentifier(prop.argument)) {\n                const spreadBinding = state.file.scope.getBinding(prop.argument.name);\n                if (spreadBinding?.path && t.isVariableDeclarator(spreadBinding.path.node)) {\n                  const init = spreadBinding.path.node.init;\n                  if (t.isObjectExpression(init)) {\n                    const spreadDeployer = removeDeployerFromObject(init, state.file.scope);\n                    if (spreadDeployer) {\n                      foundDeployer = true;\n                    }\n                  }\n                }\n              }\n            }\n\n            if (foundDeployer) {\n              path.replaceWith(newMastraObj);\n            }\n          }\n        }\n      },\n    },\n  } as PluginObject<RemoveDeployerState>;\n}\n","import { transformAsync } from '@babel/core';\nimport type { Plugin, SourceMapInput } from 'rollup';\n\nimport { removeDeployer as removeDeployerBabelPlugin } from '../babel/remove-deployer';\n\nexport function removeDeployer(mastraEntry: string, options?: { sourcemap?: boolean }): Plugin {\n  return {\n    name: 'remove-deployer',\n    transform(code, id) {\n      if (id !== mastraEntry) {\n        return;\n      }\n\n      return transformAsync(code, {\n        babelrc: false,\n        configFile: false,\n        filename: id,\n        plugins: [removeDeployerBabelPlugin],\n        sourceMaps: options?.sourcemap,\n      }).then(result => ({\n        code: result!.code!,\n        map: result!.map! as SourceMapInput,\n      }));\n    },\n  } satisfies Plugin;\n}\n","import type { Plugin } from 'rollup';\nimport { isDependencyPartOfPackage } from '../utils';\n\nexport function subpathExternalsResolver(externals: string[]): Plugin {\n  return {\n    name: 'subpath-externals-resolver',\n    resolveId(id) {\n      if (id.startsWith('.') || id.startsWith('/')) {\n        return null;\n      }\n\n      const isPartOfExternals = externals.some(external => isDependencyPartOfPackage(id, external));\n      if (isPartOfExternals) {\n        return {\n          id,\n          external: true,\n        };\n      }\n    },\n  } satisfies Plugin;\n}\n","import fs from 'node:fs';\nimport path, { normalize } from 'node:path';\nimport type { Plugin } from 'rollup';\nimport stripJsonComments from 'strip-json-comments';\nimport type { RegisterOptions } from 'typescript-paths';\nimport { createHandler } from 'typescript-paths';\n\nconst PLUGIN_NAME = 'tsconfig-paths';\nconst JS_IMPORT_SOURCE_EXTENSIONS = ['.ts', '.tsx', '.js', '.jsx'];\n\nexport type PluginOptions = Omit<RegisterOptions, 'loggerID'> & { localResolve?: boolean };\n\n/**\n * Check if a tsconfig file has path mappings configured.\n * Exported for testing purposes.\n *\n * @param tsConfigPath - Path to the tsconfig.json file\n * @returns true if the tsconfig has paths configured or extends another config, false otherwise\n */\nexport function hasPaths(tsConfigPath: string): boolean {\n  try {\n    const content = fs.readFileSync(tsConfigPath, 'utf8');\n    const config = JSON.parse(stripJsonComments(content));\n    return !!(\n      (config.compilerOptions?.paths && Object.keys(config.compilerOptions.paths).length > 0) ||\n      (typeof config.extends === 'string' && config.extends.length > 0) ||\n      (Array.isArray(config.extends) && config.extends.length > 0)\n    );\n  } catch {\n    return false;\n  }\n}\n\nexport function tsConfigPaths({ tsConfigPath, respectCoreModule, localResolve }: PluginOptions = {}): Plugin {\n  const handlerCache = new Map<string, ReturnType<typeof createHandler>>();\n\n  function resolveJsImportToSourceFile(moduleName: string): string {\n    if (fs.existsSync(moduleName)) {\n      return moduleName;\n    }\n\n    const parsed = path.parse(moduleName);\n    if (parsed.ext !== '.js') {\n      return moduleName;\n    }\n\n    for (const extension of JS_IMPORT_SOURCE_EXTENSIONS) {\n      const candidate = path.join(parsed.dir, `${parsed.name}${extension}`);\n      if (fs.existsSync(candidate)) {\n        return candidate;\n      }\n    }\n\n    return moduleName;\n  }\n\n  // Find tsconfig.json file starting from a directory and walking up\n  function findTsConfigForFile(filePath: string): string | null {\n    let currentDir = path.dirname(filePath);\n    const root = path.parse(currentDir).root;\n\n    while (currentDir !== root) {\n      const tsConfigPath = path.join(currentDir, 'tsconfig.json');\n\n      if (fs.existsSync(tsConfigPath)) {\n        // Check if this tsconfig has path mappings\n        if (hasPaths(tsConfigPath)) {\n          return tsConfigPath;\n        }\n      }\n\n      // Also check for tsconfig.base.json (common in NX)\n      const tsConfigBasePath = path.join(currentDir, 'tsconfig.base.json');\n      if (fs.existsSync(tsConfigBasePath)) {\n        if (hasPaths(tsConfigBasePath)) {\n          return tsConfigBasePath;\n        }\n      }\n\n      currentDir = path.dirname(currentDir);\n    }\n\n    return null;\n  }\n\n  // Get or create handler for a specific tsconfig file\n  function getHandlerForFile(filePath: string): ReturnType<typeof createHandler> | null {\n    // If a specific tsConfigPath was provided, use it\n    if (tsConfigPath && typeof tsConfigPath === 'string') {\n      if (!handlerCache.has(tsConfigPath)) {\n        handlerCache.set(\n          tsConfigPath,\n          createHandler({\n            log: () => {},\n            tsConfigPath,\n            respectCoreModule,\n            falllback: moduleName => fs.existsSync(moduleName),\n          }),\n        );\n      }\n      return handlerCache.get(tsConfigPath)!;\n    }\n\n    // Find appropriate tsconfig for this file\n    const configPath = findTsConfigForFile(filePath);\n    if (!configPath) {\n      return null;\n    }\n\n    // Cache handlers to avoid recreation\n    if (!handlerCache.has(configPath)) {\n      handlerCache.set(\n        configPath,\n        createHandler({\n          log: () => {},\n          tsConfigPath: configPath,\n          respectCoreModule,\n          falllback: moduleName => fs.existsSync(moduleName),\n        }),\n      );\n    }\n\n    return handlerCache.get(configPath)!;\n  }\n\n  // Simple alias resolution using dynamic handler\n  function resolveAlias(request: string, importer: string): string | null | undefined {\n    // Get the appropriate handler for this file\n    const dynamicHandler = getHandlerForFile(importer);\n    if (!dynamicHandler) {\n      return null;\n    }\n\n    const resolved = dynamicHandler(request, normalize(importer));\n    return resolved;\n  }\n\n  return {\n    name: PLUGIN_NAME,\n    resolveId: {\n      order: 'pre',\n      async handler(request, importer, options) {\n        if (!importer || request.startsWith('\\0') || importer.charCodeAt(0) === 0) {\n          return null;\n        }\n\n        // Convert relative paths to absolute to ensure proper tsconfig path resolution\n        // This allows path aliases to work regardless of how the importer path is provided\n        if (!path.isAbsolute(importer)) {\n          importer = path.resolve(process.cwd(), importer);\n        }\n\n        const moduleName = resolveAlias(request, importer);\n        // No tsconfig alias found, so we need to resolve it normally\n        if (!moduleName) {\n          const resolved = await this.resolve(request, importer, { skipSelf: true, ...options });\n          if (!resolved) {\n            return null;\n          }\n\n          // If localResolve is true, we need to check if the importer has been resolved by the tsconfig-paths plugin\n          // if so, we need to resolve the request from the importer instead of the root and mark it as external\n          if (localResolve) {\n            const importerInfo = this.getModuleInfo(importer);\n            const importerPluginMeta = importerInfo?.meta?.[PLUGIN_NAME];\n\n            if (\n              !path.isAbsolute(request) &&\n              !request.startsWith('./') &&\n              !request.startsWith('../') &&\n              importerPluginMeta?.resolved\n            ) {\n              return {\n                ...resolved,\n                external: !request.startsWith('hono/') && request !== 'hono',\n              };\n            }\n          }\n\n          return {\n            ...resolved,\n            meta: {\n              ...(resolved.meta || {}),\n            },\n          };\n        }\n\n        const resolvedModuleName = resolveJsImportToSourceFile(moduleName);\n\n        // When a module does not have an extension, we need to resolve it to a file\n        if (!path.extname(resolvedModuleName)) {\n          const resolved = await this.resolve(resolvedModuleName, importer, { skipSelf: true, ...options });\n\n          if (!resolved) {\n            return null;\n          }\n\n          return {\n            ...resolved,\n            meta: {\n              ...resolved.meta,\n              [PLUGIN_NAME]: {\n                resolved: true,\n              },\n            },\n          };\n        }\n\n        // Always pass through bundler's resolution to ensure proper path normalization\n        const resolved = await this.resolve(resolvedModuleName, importer, { skipSelf: true, ...options });\n\n        if (!resolved) {\n          return null;\n        }\n\n        return {\n          ...resolved,\n          meta: {\n            ...resolved.meta,\n            [PLUGIN_NAME]: {\n              resolved: true,\n            },\n          },\n        };\n      },\n    },\n  } satisfies Plugin;\n}\n","import { join } from 'node:path';\nimport { fileURLToPath, pathToFileURL } from 'node:url';\nimport { optimizeLodashImports } from '@optimize-lodash/rollup-plugin';\nimport commonjs from '@rollup/plugin-commonjs';\nimport json from '@rollup/plugin-json';\nimport nodeResolve from '@rollup/plugin-node-resolve';\nimport { rollup } from 'rollup';\nimport type { InputOptions, OutputOptions, Plugin } from 'rollup';\nimport { minify as esbuildMinify } from 'rollup-plugin-esbuild';\nimport type { WorkspacePackageInfo } from '../bundler/workspaceDependencies';\nimport { esbuild } from './plugins/esbuild';\nimport { esmShim } from './plugins/esm-shim';\nimport { localStorageDetector } from './plugins/local-storage-detector';\nimport { nodeModulesExtensionResolver } from './plugins/node-modules-extension-resolver';\nimport { protocolExternalResolver } from './plugins/protocol-external-resolver';\nimport { removeDeployer } from './plugins/remove-deployer';\nimport { subpathExternalsResolver } from './plugins/subpath-externals-resolver';\nimport { tsConfigPaths } from './plugins/tsconfig-paths';\nimport type { ExternalDependencyInfo } from './types';\nimport { getNodeResolveOptions, slash } from './utils';\nimport type { BundlerPlatform } from './utils';\n\nexport function mastraInternalAliasPlugin(entryFile: string): Plugin {\n  const normalizedEntryFile = slash(entryFile);\n\n  return {\n    name: 'mastra-internal-alias',\n    resolveId: {\n      order: 'pre',\n      handler(id) {\n        if (id === '#server') {\n          return slash(fileURLToPath(import.meta.resolve('@mastra/deployer/server')));\n        }\n\n        if (id.startsWith('@mastra/server/')) {\n          return fileURLToPath(import.meta.resolve(id));\n        }\n\n        if (id === '#mastra') {\n          return normalizedEntryFile;\n        }\n      },\n    },\n  } satisfies Plugin;\n}\n\nexport function mastraToolsAliasPlugin(): Plugin {\n  return {\n    name: 'tools-rewriter',\n    resolveId(id: string) {\n      if (id === '#tools') {\n        return {\n          id: './tools.mjs',\n          external: true,\n        };\n      }\n    },\n  };\n}\n\nexport async function getInputOptions(\n  entryFile: string,\n  analyzedBundleInfo: {\n    dependencies: Map<string, string>;\n    externalDependencies: Map<string, ExternalDependencyInfo>;\n    workspaceMap: Map<string, WorkspacePackageInfo>;\n    projectType?: string;\n  },\n  platform: BundlerPlatform,\n  env: Record<string, string> = { 'process.env.NODE_ENV': JSON.stringify('production') },\n  {\n    sourcemap = false,\n    minify = false,\n    isDev = false,\n    projectRoot,\n    workspaceRoot = undefined,\n    enableEsmShim = true,\n    externalsPreset = false,\n  }: {\n    sourcemap?: boolean;\n    minify?: boolean;\n    isDev?: boolean;\n    workspaceRoot?: string;\n    projectRoot: string;\n    enableEsmShim?: boolean;\n    externalsPreset?: boolean;\n  },\n): Promise<InputOptions> {\n  const nodeResolvePlugin = nodeResolve(getNodeResolveOptions(platform));\n\n  const externalsCopy = new Set<string>(analyzedBundleInfo.externalDependencies.keys());\n  const externals = externalsPreset ? [] : Array.from(externalsCopy);\n\n  return {\n    logLevel: process.env.MASTRA_BUNDLER_DEBUG === 'true' ? 'debug' : 'silent',\n    treeshake: 'smallest',\n    preserveSymlinks: true,\n    external: externals,\n    plugins: [\n      protocolExternalResolver(),\n      subpathExternalsResolver(externals),\n      {\n        name: 'alias-optimized-deps',\n        resolveId(id: string) {\n          if (!analyzedBundleInfo.dependencies.has(id)) {\n            return null;\n          }\n\n          const filename = analyzedBundleInfo.dependencies.get(id)!;\n          const absolutePath = join(workspaceRoot || projectRoot, filename);\n\n          // During `mastra dev` we want to keep deps as external\n          if (isDev) {\n            return {\n              id: process.platform === 'win32' ? pathToFileURL(absolutePath).href : absolutePath,\n              external: true,\n            };\n          }\n\n          // For production builds return the absolute path as-is so Rollup can handle itself\n          return {\n            id: absolutePath,\n            external: false,\n          };\n        },\n      } satisfies Plugin,\n      mastraInternalAliasPlugin(entryFile),\n      tsConfigPaths(),\n      mastraToolsAliasPlugin(),\n      esbuild({\n        platform,\n        define: env,\n      }),\n      optimizeLodashImports({\n        include: '**/*.{js,ts,mjs,cjs}',\n      }),\n      externalsPreset\n        ? null\n        : commonjs({\n            extensions: ['.js', '.ts'],\n            transformMixedEsModules: true,\n            esmExternals(id) {\n              return externals.includes(id);\n            },\n          }),\n      enableEsmShim ? esmShim() : undefined,\n      externalsPreset ? nodeModulesExtensionResolver() : nodeResolvePlugin,\n      // for debugging\n      // {\n      //   name: 'logger',\n      //   //@ts-expect-error\n      //   resolveId(id, ...args) {\n      //     console.log({ id, args });\n      //   },\n      //   // @ts-expect-error\n      // transform(code, id) {\n      //   if (code.includes('class Duplexify ')) {\n      //     console.log({ duplex: id });\n      //   }\n      // },\n      // },\n      json(),\n      localStorageDetector(workspaceRoot || projectRoot),\n      removeDeployer(entryFile, { sourcemap }),\n      // treeshake unused imports\n      esbuild({\n        include: entryFile,\n        platform,\n      }),\n      // Runs at renderChunk, so the emitted chunks are minified as a whole rather\n      // than module by module. Last in the list so nothing transforms after it.\n      // `sourceMap` follows the build's own setting: the plugin defaults it to true,\n      // which would build a map Rollup then discards on a non-sourcemap build.\n      minify ? esbuildMinify({ target: 'node20', sourceMap: sourcemap }) : null,\n    ].filter(Boolean),\n  } satisfies InputOptions;\n}\n\nexport async function createBundler(\n  inputOptions: InputOptions,\n  outputOptions: Partial<OutputOptions> & { dir: string },\n) {\n  const bundler = await rollup(inputOptions);\n\n  return {\n    write: () => {\n      return bundler.write({\n        ...outputOptions,\n        format: 'esm',\n        entryFileNames: '[name].mjs',\n        chunkFileNames: '[name].mjs',\n      });\n    },\n    close: () => {\n      return bundler.close();\n    },\n  };\n}\n"],"mappings":"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"}