{
  "version": 3,
  "sources": ["../../src/index.ts", "../../src/banner.ts"],
  "sourcesContent": ["import MagicString from 'magic-string';\nimport { decode, encode } from '@jridgewell/sourcemap-codec';\nimport type { Plugin } from 'vite';\nimport { insertStylesheet, modifyImports, prependBanner } from './banner';\nimport type { PiletPluginOptions } from './types';\n\nexport { PiletPluginOptions };\n\nexport default function pilet({ id, debug, piletName, importmap, requireRef, schema }: PiletPluginOptions): Plugin {\n  const cssFiles: Array<string> = [];\n\n  return {\n    name: 'pilet',\n    transform(_, id) {\n      if (id.endsWith('.css') || id.endsWith('.scss') || id.endsWith('.sass')) {\n        cssFiles.push(id);\n      }\n    },\n    generateBundle(_, bundle) {\n      Object.keys(bundle).forEach((file) => {\n        const asset = bundle[file];\n\n        if (asset.type === 'chunk' && asset.isEntry && asset.name === id) {\n          const sm = bundle[`${file}.map`];\n          const ms = new MagicString(asset.code);\n          prependBanner(ms, requireRef, importmap, schema);\n          asset.code = ms.toString();\n\n          if (sm && 'source' in sm && typeof sm.source === 'string') {\n            // shift source map by a single (unmapped) line\n            const map = JSON.parse(sm.source);\n            const arr = decode(map.mappings);\n            arr.unshift([]);\n            map.mappings = encode(arr);\n            sm.source = JSON.stringify(map);\n          }\n        }\n      });\n    },\n    renderChunk(content, asset) {\n      const ms = new MagicString(content);\n      modifyImports(ms, importmap);\n\n      if (asset.isEntry && asset.name === id && cssFiles.length) {\n        insertStylesheet(ms, piletName, debug, schema);\n      }\n\n      return {\n        code: ms.toString(),\n        map: ms.generateMap({ hires: true }),\n      };\n    },\n  };\n}\n", "import MagicString from 'magic-string';\nimport type { SharedDependency } from 'piral-cli';\nimport { PiletPluginOptions } from './types';\n\nexport function modifyImports(ms: MagicString, dependencies: Array<SharedDependency>) {\n  ms.replace(/\\[.*?\\]/, (s) => {\n    dependencies.forEach((dep) => {\n      const depRef = (dep as any).requireId || dep.id;\n      s = s.replace(`'${dep.name}'`, `'${depRef}'`);\n    });\n\n    return s;\n  });\n}\n\nexport function prependBanner(\n  ms: MagicString,\n  requireRef: string,\n  dependencies: Array<SharedDependency>,\n  schema: PiletPluginOptions['schema'],\n) {\n  const deps = dependencies.reduce((deps, dep) => {\n    deps[dep.id] = dep.ref;\n    return deps;\n  }, {});\n\n  if (schema === 'v2') {\n    ms.prepend(`//@pilet v:2(${requireRef},${JSON.stringify(deps)})\\n`);\n  } else if (schema === 'v3') {\n    ms.prepend(`//@pilet v:3(${requireRef},${JSON.stringify(deps)})\\n`);\n  }\n}\n\nexport function insertStylesheet(ms: MagicString, name: string, debug: boolean, schema: PiletPluginOptions['schema']) {\n  if (schema === 'v2') {\n    const bundleUrl = `function(){try{throw new Error}catch(t){const e=(\"\"+t.stack).match(/(https?|file|ftp|chrome-extension|moz-extension):\\\\/\\\\/[^)\\\\n]+/g);if(e)return e[0].replace(/^((?:https?|file|ftp|chrome-extension|moz-extension):\\\\/\\\\/.+)\\\\/[^\\\\/]+$/,\"$1\")+\"/\"}return\"/\"}`;\n    const cssFiles = ['style.css'];\n    const stylesheet = [\n      `var d=document`,\n      `var __bundleUrl__=(${bundleUrl})()`,\n      `${JSON.stringify(cssFiles)}.forEach(cf=>{`,\n      `  var u=__bundleUrl__+cf`,\n      `  var e=d.createElement(\"link\")`,\n      `  e.setAttribute('data-origin', ${JSON.stringify(name)})`,\n      `  e.type=\"text/css\"`,\n      `  e.rel=\"stylesheet\"`,\n      `  e.href=${debug ? 'u+\"?_=\"+Math.random()' : 'u'}`,\n      `  d.head.appendChild(e)`,\n      `})`,\n    ].join(';\\n  ');\n    const insertLink = `(function(){\\n  ${stylesheet};\\n})()`;\n    const execute = 'execute: (function () {';\n    ms.replace(execute, `${execute}\\n${insertLink}`);\n  } else if (schema === 'v3') {\n    const cssFiles = ['style.css'];\n    const execute = 'execute: (function () {';\n    const insertLink = `exports(\"styles\", ${JSON.stringify(cssFiles)})`;\n    ms.replace(execute, `${execute}\\n${insertLink}`);\n  }\n}\n"],
  "mappings": "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",
  "names": ["deps", "id"]
}
