{"version":3,"file":"bundledDevPlugin.js","names":[],"sources":["esm/vite/plugins/bundledDevPlugin.js"],"sourcesContent":["import fs from \"node:fs\";\nimport path from \"node:path\";\nimport { virtualEntryId } from \"./virtualEntryConstants\";\nconst MIME = {\n  png: \"image/png\",\n  jpg: \"image/jpeg\",\n  jpeg: \"image/jpeg\",\n  gif: \"image/gif\",\n  webp: \"image/webp\",\n  avif: \"image/avif\",\n  bmp: \"image/bmp\",\n  ico: \"image/x-icon\"\n};\nconst ASSET_EXT_RE = /\\.(png|jpe?g|gif|webp|avif|bmp|ico)/;\nfunction inlineAssetImports(code, id) {\n  if (!ASSET_EXT_RE.test(code)) return null;\n  const importRe = /import\\s+(\\w+)\\s+from\\s*['\"]([^'\"?]+\\.(?:png|jpe?g|gif|webp|avif|bmp|ico))['\"]\\s*;?/g;\n  const base = id.split(\"?\")[0];\n  let result = code;\n  let changed = false;\n  let m;\n  const edits = [];\n  while (m = importRe.exec(code)) {\n    const [full, name, spec] = m;\n    const abs = spec.startsWith(\".\") ? path.resolve(path.dirname(base), spec) : null;\n    if (!abs || !fs.existsSync(abs)) continue;\n    const ext = path.extname(abs).slice(1).toLowerCase();\n    const uri = `data:${MIME[ext] || \"application/octet-stream\"};base64,${fs.readFileSync(abs).toString(\"base64\")}`;\n    edits.push({ full, name, uri });\n  }\n  for (const e of edits) {\n    result = result.replace(e.full, `const ${e.name} = ${JSON.stringify(e.uri)};`);\n    changed = true;\n  }\n  return changed ? { code: result, map: null } : null;\n}\nfunction webBundledAssetPlugin() {\n  return {\n    name: \"one:web-bundled-asset\",\n    transform: (code, id) => inlineAssetImports(code, id)\n  };\n}\nfunction bundledDevPlugin(enabled) {\n  return {\n    name: \"one:bundled-dev\",\n    // mirror the client's asset inlining on the server env so SSR emits the same\n    // data-uris (the rolldown client plugin above can't reach the ssr pipeline).\n    // bundledDev is off by default, so only register the hook when it's on, and\n    // let rust pre-filter on the asset extensions inlineAssetImports looks for.\n    ...enabled ? {\n      transform: {\n        filter: { code: ASSET_EXT_RE },\n        handler(code, id) {\n          const env = this.environment;\n          if (!env || env.name !== \"ssr\" || env.mode !== \"dev\") return;\n          return inlineAssetImports(code, id);\n        }\n      }\n    } : {},\n    config(_userConfig, env) {\n      if (!enabled || env.command !== \"serve\") return;\n      return {\n        experimental: { bundledDev: true },\n        environments: {\n          client: {\n            build: {\n              rolldownOptions: {\n                // bundle the virtual entry so FullBundleDev serves it at\n                // /assets/_virtual_one-entry.js\n                input: [virtualEntryId],\n                plugins: [webBundledAssetPlugin()],\n                experimental: {\n                  // rolldown 1.1.0 defaulted lazyBarrel ON, which breaks One's\n                  // index.mjs barrel re-exports under FullBundleDev (e.g. `Slot`\n                  // resolves to undefined). pin it off.\n                  lazyBarrel: false\n                },\n                // react-native packages import native-only exports\n                // (codegenNativeComponent, TurboModuleRegistry, …) from react-native\n                // → aliased to react-native-web, which doesn't export them. shim as\n                // undefined instead of failing the build (matches the dep optimizer).\n                shimMissingExports: true\n              }\n            }\n          }\n        }\n      };\n    }\n  };\n}\nexport {\n  bundledDevPlugin\n};\n//# sourceMappingURL=bundledDevPlugin.js.map\n"],"mappings":";;;;;AAGA,MAAM,OAAO;CACX,KAAK;CACL,KAAK;CACL,MAAM;CACN,KAAK;CACL,MAAM;CACN,MAAM;CACN,KAAK;CACL,KAAK;AACP;AACA,MAAM,eAAe;AACrB,SAAS,mBAAmB,MAAM,IAAI;CACpC,IAAI,CAAC,aAAa,KAAK,IAAI,GAAG,OAAO;CACrC,MAAM,WAAW;CACjB,MAAM,OAAO,GAAG,MAAM,GAAG,CAAC,CAAC;CAC3B,IAAI,SAAS;CACb,IAAI,UAAU;CACd,IAAI;CACJ,MAAM,QAAQ,CAAC;CACf,OAAO,IAAI,SAAS,KAAK,IAAI,GAAG;EAC9B,MAAM,CAAC,MAAM,MAAM,QAAQ;EAC3B,MAAM,MAAM,KAAK,WAAW,GAAG,IAAI,KAAK,QAAQ,KAAK,QAAQ,IAAI,GAAG,IAAI,IAAI;EAC5E,IAAI,CAAC,OAAO,CAAC,GAAG,WAAW,GAAG,GAAG;EACjC,MAAM,MAAM,KAAK,QAAQ,GAAG,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,YAAY;EACnD,MAAM,MAAM,QAAQ,KAAK,QAAQ,2BAA2B,UAAU,GAAG,aAAa,GAAG,CAAC,CAAC,SAAS,QAAQ;EAC5G,MAAM,KAAK;GAAE;GAAM;GAAM;EAAI,CAAC;CAChC;CACA,KAAK,MAAM,KAAK,OAAO;EACrB,SAAS,OAAO,QAAQ,EAAE,MAAM,SAAS,EAAE,KAAK,KAAK,KAAK,UAAU,EAAE,GAAG,EAAE,EAAE;EAC7E,UAAU;CACZ;CACA,OAAO,UAAU;EAAE,MAAM;EAAQ,KAAK;CAAK,IAAI;AACjD;AACA,SAAS,wBAAwB;CAC/B,OAAO;EACL,MAAM;EACN,YAAY,MAAM,OAAO,mBAAmB,MAAM,EAAE;CACtD;AACF;AACA,SAAS,iBAAiB,SAAS;CACjC,OAAO;EACL,MAAM;EAKN,GAAG,UAAU,EACX,WAAW;GACT,QAAQ,EAAE,MAAM,aAAa;GAC7B,QAAQ,MAAM,IAAI;IAChB,MAAM,MAAM,KAAK;IACjB,IAAI,CAAC,OAAO,IAAI,SAAS,SAAS,IAAI,SAAS,OAAO;IACtD,OAAO,mBAAmB,MAAM,EAAE;GACpC;EACF,EACF,IAAI,CAAC;EACL,OAAO,aAAa,KAAK;GACvB,IAAI,CAAC,WAAW,IAAI,YAAY,SAAS;GACzC,OAAO;IACL,cAAc,EAAE,YAAY,KAAK;IACjC,cAAc,EACZ,QAAQ,EACN,OAAO,EACL,iBAAiB;KAGf,OAAO,CAAC,cAAc;KACtB,SAAS,CAAC,sBAAsB,CAAC;KACjC,cAAc,EAIZ,YAAY,MACd;KAKA,oBAAoB;IACtB,EACF,EACF,EACF;GACF;EACF;CACF;AACF"}