rolldown 0.10.0 → 0.10.1

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.
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "rolldown",
3
- "version": "0.10.0",
3
+ "version": "0.10.1",
4
4
  "description": "Fast JavaScript/TypeScript bundler in Rust with Rollup-compatible API.",
5
5
  "homepage": "https://rolldown.rs/",
6
6
  "repository": {
@@ -64,33 +64,35 @@
64
64
  "rollup": "^4.12.1",
65
65
  "type-fest": "^4.12.0",
66
66
  "unbuild": "^2.0.0",
67
- "vitest": "^1.3.1"
67
+ "vite": "^5.1.5",
68
+ "vitest": "^1.3.1",
69
+ "rolldown": "0.10.1"
68
70
  },
69
71
  "optionalDependencies": {
70
- "@rolldown/binding-darwin-arm64": "0.10.0",
71
- "@rolldown/binding-darwin-x64": "0.10.0",
72
- "@rolldown/binding-linux-arm-gnueabihf": "0.10.0",
73
- "@rolldown/binding-linux-arm64-musl": "0.10.0",
74
- "@rolldown/binding-linux-arm64-gnu": "0.10.0",
75
- "@rolldown/binding-linux-x64-gnu": "0.10.0",
76
- "@rolldown/binding-linux-x64-musl": "0.10.0",
77
- "@rolldown/binding-win32-arm64-msvc": "0.10.0",
78
- "@rolldown/binding-win32-x64-msvc": "0.10.0",
79
- "@rolldown/binding-win32-ia32-msvc": "0.10.0"
72
+ "@rolldown/binding-darwin-arm64": "0.10.1",
73
+ "@rolldown/binding-darwin-x64": "0.10.1",
74
+ "@rolldown/binding-linux-arm-gnueabihf": "0.10.1",
75
+ "@rolldown/binding-linux-x64-gnu": "0.10.1",
76
+ "@rolldown/binding-linux-x64-musl": "0.10.1",
77
+ "@rolldown/binding-linux-arm64-musl": "0.10.1",
78
+ "@rolldown/binding-linux-arm64-gnu": "0.10.1",
79
+ "@rolldown/binding-win32-arm64-msvc": "0.10.1",
80
+ "@rolldown/binding-win32-ia32-msvc": "0.10.1",
81
+ "@rolldown/binding-win32-x64-msvc": "0.10.1"
80
82
  },
81
83
  "scripts": {
82
84
  "# Scrips for binding #": "_",
83
85
  "artifacts": "napi artifacts -o=./artifacts --npm-dir ./npm",
84
86
  "format-generated-binding-files": "prettier --write src/binding.js src/binding.d.ts",
85
- "build-binding": "napi build -o=./src --manifest-path ../../crates/rolldown_binding/Cargo.toml --platform -p rolldown_binding --js binding.js --dts binding.d.ts --dts-header \"type MaybePromise<T> = T | Promise<T>\"",
86
- "build-binding:release": "napi build -o=./src --release --manifest-path ../../crates/rolldown_binding/Cargo.toml --platform -p rolldown_binding --js binding.js --dts binding.d.ts --dts-header \"type MaybePromise<T> = T | Promise<T>\"",
87
+ "build-binding": "napi build -o=./src --manifest-path ../../crates/rolldown_binding/Cargo.toml --platform -p rolldown_binding --js binding.js --dts binding.d.ts --dts-header \"type MaybePromise<T> = T | Promise<T>\ntype Nullable<T> = T | null | undefined\ntype VoidNullable<T = void> = T | null | undefined | void\"",
88
+ "build-binding:release": "napi build -o=./src --release --manifest-path ../../crates/rolldown_binding/Cargo.toml --platform -p rolldown_binding --js binding.js --dts binding.d.ts --dts-header \"type MaybePromise<T> = T | Promise<T>\ntype Nullable<T> = T | null | undefined\ntype VoidNullable<T = void> = T | null | undefined | void\"",
87
89
  "# Scrips for node #": "_",
88
90
  "build-node": "unbuild",
89
91
  "build": "pnpm build-binding && pnpm build-node && pnpm format-generated-binding-files",
90
92
  "build:release": "pnpm build-binding:release && pnpm build-node && pnpm format-generated-binding-files",
91
93
  "# Scrips for checking #": "_",
92
- "test": "vitest run",
94
+ "test": "vitest run --reporter verbose --hideSkippedTests",
93
95
  "test:update": "vitest run -u",
94
- "type-check": "tsc -p tsconfig.check.json"
96
+ "type-check": "tsc"
95
97
  }
96
98
  }
@@ -1 +0,0 @@
1
- {"version":3,"file":"rolldown.63afb352.cjs","sources":["../../src/utils/async-flatten.ts","../../src/utils/transform-to-rollup-output.ts","../../src/utils/normalize-plugin-option.ts","../../src/utils/ensure-array.ts","../../src/binding.js","../../src/options/input-options.ts","../../src/options/create-build-plugin-adapter.ts","../../src/options/input-options-adapter.ts","../../src/options/output-options.ts","../../src/utils/create-bundler.ts","../../src/utils/transform-sourcemap.ts","../../src/utils/index.ts","../../src/rolldown-build.ts","../../src/rolldown.ts"],"sourcesContent":["// Copied from https://github.com/rollup/rollup/blob/3b560f7c889a63968dabc9b6970aabf52a77d3fd/src/utils/asyncFlatten.ts\n\nexport async function asyncFlatten<T>(array: T[]): Promise<T[]> {\n do {\n array = (await Promise.all(array)).flat(Infinity) as any\n } while (array.some((v: any) => v?.then))\n return array\n}\n","import {\n RolldownOutput,\n RolldownOutputAsset,\n RolldownOutputChunk,\n} from '../objects/rolldown-output'\nimport { OutputBundle } from '../objects/output-bundle'\nimport {\n BindingOutputAsset,\n BindingOutputChunk,\n BindingOutputs,\n} from '../binding'\n\nfunction transformToRollupOutputChunk(\n chunk: BindingOutputChunk,\n): RolldownOutputChunk {\n return {\n type: 'chunk',\n code: chunk.code,\n fileName: chunk.fileName,\n modules: Object.fromEntries(\n Object.entries(chunk.modules).map(([key, _]) => [key, {}]),\n ),\n exports: chunk.exports,\n isEntry: chunk.isEntry,\n facadeModuleId: chunk.facadeModuleId || null,\n isDynamicEntry: chunk.isDynamicEntry,\n moduleIds: chunk.moduleIds,\n map: chunk.map ? JSON.parse(chunk.map) : null,\n sourcemapFileName: chunk.sourcemapFileName || null,\n }\n}\n\nfunction transformToRollupOutputAsset(\n asset: BindingOutputAsset,\n): RolldownOutputAsset {\n return {\n type: 'asset',\n fileName: asset.fileName,\n source: asset.source,\n }\n}\n\nexport function transformToRollupOutput(\n output: BindingOutputs,\n): RolldownOutput {\n const { chunks, assets } = output\n const [firstChunk, ...restChunks] = chunks\n return {\n output: [\n transformToRollupOutputChunk(firstChunk),\n ...restChunks.map(transformToRollupOutputChunk),\n ...assets.map(transformToRollupOutputAsset),\n ],\n }\n}\n\nexport function transformToOutputBundle(output: BindingOutputs): OutputBundle {\n return Object.fromEntries(\n transformToRollupOutput(output).output.map((item) => [item.fileName, item]),\n )\n}\n","import type {\n InputOptions,\n OutputOptions,\n Plugin,\n OutputPlugin,\n} from '../rollup-types'\nimport { asyncFlatten } from './async-flatten'\n\nexport const normalizePluginOption: {\n (plugins: InputOptions['plugins']): Promise<Plugin[]>\n (plugins: OutputOptions['plugins']): Promise<OutputPlugin[]>\n (plugins: unknown): Promise<any[]>\n} = async (plugins: any) => (await asyncFlatten([plugins])).filter(Boolean)\n","export function ensureArray<T>(\n items: (T | false | null | undefined)[] | T | false | null | undefined,\n): T[] {\n if (Array.isArray(items)) {\n return items.filter(Boolean) as T[]\n }\n if (items) {\n return [items]\n }\n return []\n}\n","// prettier-ignore\n/* eslint-disable */\n/* auto-generated by NAPI-RS */\n\nconst { readFileSync } = require('fs')\n\nlet nativeBinding = null\nconst loadErrors = []\n\nconst isMusl = () => {\n let musl = false\n if (process.platform === 'linux') {\n musl = isMuslFromFilesystem()\n if (musl === null) {\n musl = isMuslFromReport()\n }\n if (musl === null) {\n musl = isMuslFromChildProcess()\n }\n }\n return musl\n}\n\nconst isFileMusl = (f) => f.includes('libc.musl-') || f.includes('ld-musl-')\n\nconst isMuslFromFilesystem = () => {\n try {\n return readFileSync('/usr/bin/ldd', 'utf-8').includes('musl')\n } catch {\n return null\n }\n}\n\nconst isMuslFromReport = () => {\n const report =\n typeof process.report.getReport === 'function'\n ? process.report.getReport()\n : null\n if (!report) {\n return null\n }\n if (report.header && report.header.glibcVersionRuntime) {\n return false\n }\n if (Array.isArray(report.sharedObjects)) {\n if (report.sharedObjects.some(isFileMusl)) {\n return true\n }\n }\n return false\n}\n\nconst isMuslFromChildProcess = () => {\n try {\n return require('child_process')\n .execSync('ldd --version', { encoding: 'utf8' })\n .includes('musl')\n } catch (e) {\n // If we reach this case, we don't know if the system is musl or not, so is better to just fallback to false\n return false\n }\n}\n\nfunction requireNative() {\n if (process.platform === 'android') {\n if (process.arch === 'arm64') {\n try {\n return require('./rolldown-binding.android-arm64.node')\n } catch (e) {\n loadErrors.push(e)\n }\n try {\n return require('@rolldown/binding-android-arm64')\n } catch (e) {\n loadErrors.push(e)\n }\n } else if (process.arch === 'arm') {\n try {\n return require('./rolldown-binding.android-arm-eabi.node')\n } catch (e) {\n loadErrors.push(e)\n }\n try {\n return require('@rolldown/binding-android-arm-eabi')\n } catch (e) {\n loadErrors.push(e)\n }\n } else {\n loadErrors.push(\n new Error(`Unsupported architecture on Android ${process.arch}`),\n )\n }\n } else if (process.platform === 'win32') {\n if (process.arch === 'x64') {\n try {\n return require('./rolldown-binding.win32-x64-msvc.node')\n } catch (e) {\n loadErrors.push(e)\n }\n try {\n return require('@rolldown/binding-win32-x64-msvc')\n } catch (e) {\n loadErrors.push(e)\n }\n } else if (process.arch === 'ia32') {\n try {\n return require('./rolldown-binding.win32-ia32-msvc.node')\n } catch (e) {\n loadErrors.push(e)\n }\n try {\n return require('@rolldown/binding-win32-ia32-msvc')\n } catch (e) {\n loadErrors.push(e)\n }\n } else if (process.arch === 'arm64') {\n try {\n return require('./rolldown-binding.win32-arm64-msvc.node')\n } catch (e) {\n loadErrors.push(e)\n }\n try {\n return require('@rolldown/binding-win32-arm64-msvc')\n } catch (e) {\n loadErrors.push(e)\n }\n } else {\n loadErrors.push(\n new Error(`Unsupported architecture on Windows: ${process.arch}`),\n )\n }\n } else if (process.platform === 'darwin') {\n try {\n return require('./rolldown-binding.darwin-universal.node')\n } catch (e) {\n loadErrors.push(e)\n }\n try {\n return require('@rolldown/binding-darwin-universal')\n } catch (e) {\n loadErrors.push(e)\n }\n\n if (process.arch === 'x64') {\n try {\n return require('./rolldown-binding.darwin-x64.node')\n } catch (e) {\n loadErrors.push(e)\n }\n try {\n return require('@rolldown/binding-darwin-x64')\n } catch (e) {\n loadErrors.push(e)\n }\n } else if (process.arch === 'arm64') {\n try {\n return require('./rolldown-binding.darwin-arm64.node')\n } catch (e) {\n loadErrors.push(e)\n }\n try {\n return require('@rolldown/binding-darwin-arm64')\n } catch (e) {\n loadErrors.push(e)\n }\n } else {\n loadErrors.push(\n new Error(`Unsupported architecture on macOS: ${process.arch}`),\n )\n }\n } else if (process.platform === 'freebsd') {\n if (process.arch === 'x64') {\n try {\n return require('./rolldown-binding.freebsd-x64.node')\n } catch (e) {\n loadErrors.push(e)\n }\n try {\n return require('@rolldown/binding-freebsd-x64')\n } catch (e) {\n loadErrors.push(e)\n }\n } else if (process.arch === 'arm64') {\n try {\n return require('./rolldown-binding.freebsd-arm64.node')\n } catch (e) {\n loadErrors.push(e)\n }\n try {\n return require('@rolldown/binding-freebsd-arm64')\n } catch (e) {\n loadErrors.push(e)\n }\n } else {\n loadErrors.push(\n new Error(`Unsupported architecture on FreeBSD: ${process.arch}`),\n )\n }\n } else if (process.platform === 'linux') {\n if (process.arch === 'x64') {\n if (isMusl()) {\n try {\n return require('./rolldown-binding.linux-x64-musl.node')\n } catch (e) {\n loadErrors.push(e)\n }\n try {\n return require('@rolldown/binding-linux-x64-musl')\n } catch (e) {\n loadErrors.push(e)\n }\n } else {\n try {\n return require('./rolldown-binding.linux-x64-gnu.node')\n } catch (e) {\n loadErrors.push(e)\n }\n try {\n return require('@rolldown/binding-linux-x64-gnu')\n } catch (e) {\n loadErrors.push(e)\n }\n }\n } else if (process.arch === 'arm64') {\n if (isMusl()) {\n try {\n return require('./rolldown-binding.linux-arm64-musl.node')\n } catch (e) {\n loadErrors.push(e)\n }\n try {\n return require('@rolldown/binding-linux-arm64-musl')\n } catch (e) {\n loadErrors.push(e)\n }\n } else {\n try {\n return require('./rolldown-binding.linux-arm64-gnu.node')\n } catch (e) {\n loadErrors.push(e)\n }\n try {\n return require('@rolldown/binding-linux-arm64-gnu')\n } catch (e) {\n loadErrors.push(e)\n }\n }\n } else if (process.arch === 'arm') {\n try {\n return require('./rolldown-binding.linux-arm-gnueabihf.node')\n } catch (e) {\n loadErrors.push(e)\n }\n try {\n return require('@rolldown/binding-linux-arm-gnueabihf')\n } catch (e) {\n loadErrors.push(e)\n }\n } else if (process.arch === 'riscv64') {\n if (isMusl()) {\n try {\n return require('./rolldown-binding.linux-riscv64-musl.node')\n } catch (e) {\n loadErrors.push(e)\n }\n try {\n return require('@rolldown/binding-linux-riscv64-musl')\n } catch (e) {\n loadErrors.push(e)\n }\n } else {\n try {\n return require('./rolldown-binding.linux-riscv64-gnu.node')\n } catch (e) {\n loadErrors.push(e)\n }\n try {\n return require('@rolldown/binding-linux-riscv64-gnu')\n } catch (e) {\n loadErrors.push(e)\n }\n }\n } else if (process.arch === 's390x') {\n try {\n return require('./rolldown-binding.linux-s390x-gnu.node')\n } catch (e) {\n loadErrors.push(e)\n }\n try {\n return require('@rolldown/binding-linux-s390x-gnu')\n } catch (e) {\n loadErrors.push(e)\n }\n } else {\n loadErrors.push(\n new Error(`Unsupported architecture on Linux: ${process.arch}`),\n )\n }\n } else {\n loadErrors.push(\n new Error(\n `Unsupported OS: ${process.platform}, architecture: ${process.arch}`,\n ),\n )\n }\n}\n\nnativeBinding = requireNative()\n\nif (!nativeBinding || process.env.NAPI_RS_FORCE_WASI) {\n try {\n nativeBinding = require('./rolldown-binding.wasi.cjs')\n } catch (err) {\n if (process.env.NAPI_RS_FORCE_WASI) {\n console.error(err)\n }\n }\n if (!nativeBinding) {\n try {\n nativeBinding = require('@rolldown/binding-wasm32-wasi')\n } catch (err) {\n if (process.env.NAPI_RS_FORCE_WASI) {\n console.error(err)\n }\n }\n }\n}\n\nif (!nativeBinding) {\n if (loadErrors.length > 0) {\n // TODO Link to documentation with potential fixes\n // - The package owner could build/publish bindings for this arch\n // - The user may need to bundle the correct files\n // - The user may need to re-install node_modules to get new packages\n throw new Error('Failed to load native binding', { cause: loadErrors })\n }\n throw new Error(`Failed to load native binding`)\n}\n\nmodule.exports.BindingPluginContext = nativeBinding.BindingPluginContext\nmodule.exports.Bundler = nativeBinding.Bundler\n","import {\n NormalizedInputOptions,\n InputOptions as RollupInputOptions,\n Plugin,\n} from '../rollup-types'\nimport { ensureArray, normalizePluginOption } from '../utils'\nimport { BindingResolveOptions } from '../binding'\n\n// TODO export compat plugin type\nexport type RolldownPlugin = Plugin\nexport interface InputOptions {\n input?: RollupInputOptions['input']\n plugins?: RolldownPlugin[]\n external?: RollupInputOptions['external']\n resolve?: RolldownResolveOptions\n}\n\nexport type RolldownResolveOptions = Omit<BindingResolveOptions, 'alias'> & {\n alias?: Record<string, string>\n}\n\nexport type RolldownNormalizedInputOptions = NormalizedInputOptions & {\n resolve?: BindingResolveOptions\n}\n\nexport async function normalizeInputOptions(\n config: InputOptions,\n): Promise<RolldownNormalizedInputOptions> {\n // @ts-expect-error\n return {\n input: getInput(config),\n plugins: await normalizePluginOption(config.plugins),\n external: getIdMatcher(config.external),\n resolve: getResolve(config.resolve),\n }\n}\n\nfunction getInput(config: InputOptions): NormalizedInputOptions['input'] {\n const configInput = config.input\n return configInput == null\n ? []\n : typeof configInput === 'string'\n ? [configInput]\n : configInput\n}\n\nconst getIdMatcher = <T extends Array<any>>(\n option:\n | undefined\n // | boolean\n | string\n | RegExp\n | (string | RegExp)[]\n | ((id: string, ...parameters: T) => boolean | null | void),\n): ((id: string, ...parameters: T) => boolean) => {\n // if (option === true) {\n // \treturn () => true;\n // }\n if (typeof option === 'function') {\n return (id, ...parameters) =>\n (!id.startsWith('\\0') && option(id, ...parameters)) || false\n }\n if (option) {\n const ids = new Set<string>()\n const matchers: RegExp[] = []\n for (const value of ensureArray(option)) {\n if (value instanceof RegExp) {\n matchers.push(value)\n } else {\n ids.add(value)\n }\n }\n return (id: string, ..._arguments) =>\n ids.has(id) || matchers.some((matcher) => matcher.test(id))\n }\n // Rollup here convert `undefined` to function, it is bad for performance. So it will convert to `undefined` at adapter.\n return () => false\n}\n\nfunction getResolve(\n resolve?: RolldownResolveOptions,\n): RolldownNormalizedInputOptions['resolve'] {\n if (resolve) {\n return {\n ...resolve,\n alias: resolve.alias\n ? Object.fromEntries(\n Object.entries(resolve.alias).map(([key, value]) => [key, [value]]),\n )\n : undefined,\n }\n }\n}\n","import type { Plugin, NormalizedInputOptions } from '../rollup-types'\nimport type {\n BindingPluginOptions,\n BindingHookLoadOutput,\n BindingHookResolveIdOutput,\n RenderedChunk,\n BindingHookRenderChunkOutput,\n BindingOutputs as Outputs,\n} from '../binding'\nimport {\n transformToOutputBundle,\n unimplemented,\n transformSourcemap,\n} from '../utils'\n\n// Note: because napi not catch error, so we need to catch error and print error to debugger in adapter.\nexport function createBuildPluginAdapter(\n plugin: Plugin,\n options: NormalizedInputOptions,\n): BindingPluginOptions {\n return {\n name: plugin.name ?? 'unknown',\n buildStart: buildStart(plugin.buildStart, options),\n resolveId: resolveId(plugin.resolveId),\n load: load(plugin.load),\n transform: transform(plugin.transform),\n buildEnd: buildEnd(plugin.buildEnd),\n renderChunk: renderChunk(plugin.renderChunk),\n generateBundle: generateBundle(plugin.generateBundle),\n writeBundle: writeBundle(plugin.writeBundle),\n }\n}\n\nfunction writeBundle(hook: Plugin['writeBundle']) {\n if (hook) {\n if (typeof hook !== 'function') {\n return unimplemented()\n }\n return async (outputs: Outputs) => {\n try {\n // @ts-expect-error: FIXME: hyf0\n await hook.call({} as any, {} as any, transformToOutputBundle(outputs))\n } catch (error) {\n console.error(error)\n throw error\n }\n }\n }\n}\n\nfunction generateBundle(hook: Plugin['generateBundle']) {\n if (hook) {\n if (typeof hook !== 'function') {\n return unimplemented()\n }\n return async (outputs: Outputs, isWrite: boolean) => {\n try {\n await hook.call(\n {} as any,\n {} as any,\n // @ts-expect-error: FIXME: hyf0\n transformToOutputBundle(outputs),\n isWrite,\n )\n } catch (error) {\n console.error(error)\n throw error\n }\n }\n }\n}\n\nfunction renderChunk(hook: Plugin['renderChunk']) {\n if (hook) {\n if (typeof hook !== 'function') {\n return unimplemented()\n }\n return async (\n code: string,\n chunk: RenderedChunk,\n ): Promise<undefined | BindingHookRenderChunkOutput> => {\n try {\n let renderedChunk = Object.assign(\n {\n get name() {\n return unimplemented()\n },\n get dynamicImports() {\n return unimplemented()\n },\n get imports() {\n return unimplemented()\n },\n get implicitlyLoadedBefore() {\n return unimplemented()\n },\n get importedBindings() {\n return unimplemented()\n },\n get isImplicitEntry() {\n return unimplemented()\n },\n get referencedFiles() {\n return unimplemented()\n },\n type: 'chunk' as const,\n },\n chunk,\n {\n get modules() {\n return Object.fromEntries(\n Object.entries(chunk.modules).map(([key, value]) => [\n key,\n Object.assign(\n {\n get code() {\n return unimplemented()\n },\n },\n value,\n ),\n ]),\n )\n },\n get facadeModuleId() {\n return chunk.facadeModuleId || null\n },\n },\n )\n // TODO options and meta\n const value = await hook.call(\n {} as any,\n code,\n // @ts-expect-error: FIXME: hyf0\n renderedChunk,\n {} as any,\n {} as any,\n )\n if (value === undefined || value === null) {\n return\n }\n if (typeof value === 'string') {\n return { code: value }\n }\n if (typeof value === 'object') {\n // TODO other filed\n return { code: value.code }\n }\n } catch (error) {\n console.error(error)\n throw error\n }\n }\n }\n}\n\nfunction buildStart(\n hook: Plugin['buildStart'],\n options: NormalizedInputOptions,\n) {\n if (hook) {\n if (typeof hook !== 'function') {\n return unimplemented()\n }\n return async () => {\n try {\n // Here use `Object.freeze` to prevent plugin from modifying the options.\n await hook.call({} as any, Object.freeze(options))\n } catch (error) {\n console.error(error)\n throw error\n }\n }\n }\n}\n\nfunction buildEnd(hook: Plugin['buildEnd']) {\n if (hook) {\n if (typeof hook !== 'function') {\n return unimplemented()\n }\n return async (e?: string) => {\n try {\n await hook.call({} as any, e ? new Error(e) : undefined)\n } catch (error) {\n console.error(error)\n throw error\n }\n }\n }\n return\n}\n\nfunction transform(hook: Plugin['transform']) {\n if (hook) {\n if (typeof hook !== 'function') {\n return unimplemented()\n }\n return async (\n code: string,\n id: string,\n ): Promise<undefined | BindingHookLoadOutput> => {\n try {\n // TODO: Need to investigate how to pass context to plugin.\n const value = await hook.call({} as any, code, id)\n if (value === undefined || value === null) {\n return\n }\n if (typeof value === 'string') {\n return { code: value }\n }\n if (value.code === undefined) {\n return\n }\n // TODO other filed\n return { code: value.code, map: transformSourcemap(value.map) }\n } catch (error) {\n console.error(error)\n throw error\n }\n }\n }\n}\n\nfunction resolveId(hook: Plugin['resolveId']) {\n if (hook) {\n if (typeof hook !== 'function') {\n return unimplemented()\n }\n return async (\n source: string,\n importer?: string,\n options?: any,\n ): Promise<undefined | BindingHookResolveIdOutput> => {\n try {\n const value = await hook.call(\n {} as any,\n source,\n importer ? importer : undefined,\n options,\n )\n if (value === undefined || value === null) {\n return\n }\n if (typeof value === 'string') {\n return { id: value }\n }\n if (value === false) {\n return { id: source, external: true }\n }\n if (value.external === 'absolute' || value.external === 'relative') {\n throw new Error(\n `External module type {${value.external}} is not supported yet.`,\n )\n }\n // TODO other filed\n return value as BindingHookResolveIdOutput\n } catch (error) {\n console.error(error)\n throw error\n }\n }\n }\n}\n\nfunction load(hook: Plugin['load']) {\n if (hook) {\n if (typeof hook !== 'function') {\n return unimplemented()\n }\n return async (id: string): Promise<undefined | BindingHookLoadOutput> => {\n try {\n const value = await hook.call({} as any, id)\n if (value === undefined || value === null) {\n return\n }\n if (typeof value === 'string') {\n return { code: value }\n }\n if (value.code === undefined) {\n return\n }\n // TODO other filed\n return { code: value.code, map: transformSourcemap(value.map) }\n } catch (error) {\n console.error(error)\n throw error\n }\n }\n }\n}\n","import { NormalizedInputOptions } from '../rollup-types'\nimport { BindingInputOptions } from '../binding'\nimport path from 'node:path'\nimport { createBuildPluginAdapter } from './create-build-plugin-adapter'\nimport { InputOptions, RolldownNormalizedInputOptions } from './input-options'\n\nexport function createInputOptionsAdapter(\n options: RolldownNormalizedInputOptions,\n inputOptions: InputOptions,\n): BindingInputOptions {\n return {\n input: normalizeInput(options.input),\n plugins: options.plugins.map((plugin) =>\n createBuildPluginAdapter(plugin, options),\n ),\n cwd: process.cwd(),\n external: inputOptions.external ? options.external : undefined,\n resolve: options.resolve,\n }\n}\n\nfunction normalizeInput(\n input: NormalizedInputOptions['input'],\n): BindingInputOptions['input'] {\n if (Array.isArray(input)) {\n return input.map((src) => {\n const name = path.parse(src).name\n return {\n name,\n import: src,\n }\n })\n } else {\n return Object.entries(input).map((value) => {\n return { name: value[0], import: value[1] }\n })\n }\n}\n","import { OutputOptions as RollupOutputOptions } from '../rollup-types'\nimport { BindingOutputOptions } from '../binding'\nimport { unimplemented } from '../utils'\n\nexport interface OutputOptions {\n dir?: RollupOutputOptions['dir']\n format?: 'es'\n exports?: RollupOutputOptions['exports']\n sourcemap?: RollupOutputOptions['sourcemap']\n}\n\nfunction normalizeFormat(\n format: OutputOptions['format'],\n): BindingOutputOptions['format'] {\n if (format == null || format === 'es' || format === 'cjs') {\n return format\n } else {\n return unimplemented(`output.format: ${format}`)\n }\n}\n\nfunction normalizeSourcemap(\n sourcemap: OutputOptions['sourcemap'],\n): BindingOutputOptions['sourcemap'] {\n switch (sourcemap) {\n case true:\n return 'file'\n\n case 'inline':\n return 'inline'\n\n case false:\n case undefined:\n case 'hidden':\n return 'hidden'\n\n default:\n throw new Error(`unknown sourcemap: ${sourcemap}`)\n }\n}\n\nexport function normalizeOutputOptions(\n opts: OutputOptions,\n): BindingOutputOptions {\n const { dir, format, exports, sourcemap } = opts\n return {\n dir: dir,\n format: normalizeFormat(format),\n exports,\n sourcemap: normalizeSourcemap(sourcemap),\n plugins: [],\n }\n}\n","import { Bundler } from '../binding'\nimport {\n normalizeInputOptions,\n type InputOptions,\n} from '../options/input-options'\nimport { createInputOptionsAdapter } from '../options/input-options-adapter'\nimport {\n OutputOptions,\n normalizeOutputOptions,\n} from '../options/output-options'\n\nexport async function createBundler(\n inputOptions: InputOptions,\n outputOptions: OutputOptions,\n): Promise<Bundler> {\n // Convert `InputOptions` to `NormalizedInputOptions`.\n const normalizedInputOptions = await normalizeInputOptions(inputOptions)\n // Convert `NormalizedInputOptions` to `BindingInputOptions`\n const bindingInputOptions = createInputOptionsAdapter(\n normalizedInputOptions,\n inputOptions,\n )\n return new Bundler(bindingInputOptions, normalizeOutputOptions(outputOptions))\n}\n","import type { SourceMapInput } from '../rollup-types'\n\nexport function transformSourcemap(value?: SourceMapInput): string | undefined {\n if (typeof value === 'object') {\n return JSON.stringify(value)\n }\n return value\n}\n","export * from './async-flatten'\nexport * from './transform-to-rollup-output'\nexport * from './normalize-plugin-option'\nexport * from './ensure-array'\nexport * from './create-bundler'\nexport * from './transform-sourcemap'\n\nexport function arraify<T>(value: T | T[]): T[] {\n return Array.isArray(value) ? value : [value]\n}\n\nexport function unimplemented(info?: string): never {\n if (info) {\n throw new Error(`unimplemented: ${info}`)\n }\n throw new Error('unimplemented')\n}\n\nexport function unreachable(info?: string): never {\n if (info) {\n throw new Error(`unreachable: ${info}`)\n }\n throw new Error('unreachable')\n}\n\nexport function noop(..._args: any[]) {}\n","import { Bundler } from './binding'\nimport { normalizeOutputOptions, OutputOptions } from './options/output-options'\nimport { createBundler, transformToRollupOutput, unimplemented } from './utils'\nimport { RolldownOutput } from './objects/rolldown-output'\nimport { HasProperty, TypeAssert } from './utils/type-assert'\nimport { InputOptions } from './options/input-options'\n\nexport class RolldownBuild {\n #inputOptions: InputOptions\n #bundler?: Bundler\n\n constructor(inputOptions: InputOptions) {\n // TODO: Check if `inputOptions.output` is set. If so, throw an warning that it is ignored.\n this.#inputOptions = inputOptions\n }\n\n async #getBundler(outputOptions: OutputOptions): Promise<Bundler> {\n if (typeof this.#bundler === 'undefined') {\n this.#bundler = await createBundler(this.#inputOptions, outputOptions)\n }\n return this.#bundler\n }\n\n async generate(outputOptions: OutputOptions = {}): Promise<RolldownOutput> {\n const bundler = await this.#getBundler(outputOptions)\n const output = await bundler.generate()\n return transformToRollupOutput(output)\n }\n\n async write(outputOptions: OutputOptions = {}): Promise<RolldownOutput> {\n const bundler = await this.#getBundler(outputOptions)\n const output = await bundler.write()\n return transformToRollupOutput(output)\n }\n}\n\nfunction _assert() {\n type _ = TypeAssert<HasProperty<RolldownBuild, 'generate' | 'write'>>\n}\n","import { InputOptions } from './options/input-options'\nimport { RolldownBuild } from './rolldown-build'\nimport { createBundler } from './utils'\n\n// Compat to `rollup.rollup`, it is included scan module graph and linker.\nexport const rolldown = async (input: InputOptions): Promise<RolldownBuild> => {\n return new RolldownBuild(input)\n}\n\n/**\n * @description\n * This is an experimental API. It's behavior may change in the future.\n * Calling this API will only execute the scan stage of rolldown.\n */\nexport const experimental_scan = async (input: InputOptions): Promise<void> => {\n const bundler = await createBundler(input, {})\n await bundler.scan()\n}\n"],"names":["require$$0","value","path"],"mappings":"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"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"rolldown.dda7e541.mjs","sources":["../../src/utils/async-flatten.ts","../../src/utils/transform-to-rollup-output.ts","../../src/utils/normalize-plugin-option.ts","../../src/utils/ensure-array.ts","../../src/binding.js","../../src/options/input-options.ts","../../src/options/create-build-plugin-adapter.ts","../../src/options/input-options-adapter.ts","../../src/options/output-options.ts","../../src/utils/create-bundler.ts","../../src/utils/transform-sourcemap.ts","../../src/utils/index.ts","../../src/rolldown-build.ts","../../src/rolldown.ts"],"sourcesContent":["// Copied from https://github.com/rollup/rollup/blob/3b560f7c889a63968dabc9b6970aabf52a77d3fd/src/utils/asyncFlatten.ts\n\nexport async function asyncFlatten<T>(array: T[]): Promise<T[]> {\n do {\n array = (await Promise.all(array)).flat(Infinity) as any\n } while (array.some((v: any) => v?.then))\n return array\n}\n","import {\n RolldownOutput,\n RolldownOutputAsset,\n RolldownOutputChunk,\n} from '../objects/rolldown-output'\nimport { OutputBundle } from '../objects/output-bundle'\nimport {\n BindingOutputAsset,\n BindingOutputChunk,\n BindingOutputs,\n} from '../binding'\n\nfunction transformToRollupOutputChunk(\n chunk: BindingOutputChunk,\n): RolldownOutputChunk {\n return {\n type: 'chunk',\n code: chunk.code,\n fileName: chunk.fileName,\n modules: Object.fromEntries(\n Object.entries(chunk.modules).map(([key, _]) => [key, {}]),\n ),\n exports: chunk.exports,\n isEntry: chunk.isEntry,\n facadeModuleId: chunk.facadeModuleId || null,\n isDynamicEntry: chunk.isDynamicEntry,\n moduleIds: chunk.moduleIds,\n map: chunk.map ? JSON.parse(chunk.map) : null,\n sourcemapFileName: chunk.sourcemapFileName || null,\n }\n}\n\nfunction transformToRollupOutputAsset(\n asset: BindingOutputAsset,\n): RolldownOutputAsset {\n return {\n type: 'asset',\n fileName: asset.fileName,\n source: asset.source,\n }\n}\n\nexport function transformToRollupOutput(\n output: BindingOutputs,\n): RolldownOutput {\n const { chunks, assets } = output\n const [firstChunk, ...restChunks] = chunks\n return {\n output: [\n transformToRollupOutputChunk(firstChunk),\n ...restChunks.map(transformToRollupOutputChunk),\n ...assets.map(transformToRollupOutputAsset),\n ],\n }\n}\n\nexport function transformToOutputBundle(output: BindingOutputs): OutputBundle {\n return Object.fromEntries(\n transformToRollupOutput(output).output.map((item) => [item.fileName, item]),\n )\n}\n","import type {\n InputOptions,\n OutputOptions,\n Plugin,\n OutputPlugin,\n} from '../rollup-types'\nimport { asyncFlatten } from './async-flatten'\n\nexport const normalizePluginOption: {\n (plugins: InputOptions['plugins']): Promise<Plugin[]>\n (plugins: OutputOptions['plugins']): Promise<OutputPlugin[]>\n (plugins: unknown): Promise<any[]>\n} = async (plugins: any) => (await asyncFlatten([plugins])).filter(Boolean)\n","export function ensureArray<T>(\n items: (T | false | null | undefined)[] | T | false | null | undefined,\n): T[] {\n if (Array.isArray(items)) {\n return items.filter(Boolean) as T[]\n }\n if (items) {\n return [items]\n }\n return []\n}\n","// prettier-ignore\n/* eslint-disable */\n/* auto-generated by NAPI-RS */\n\nconst { readFileSync } = require('fs')\n\nlet nativeBinding = null\nconst loadErrors = []\n\nconst isMusl = () => {\n let musl = false\n if (process.platform === 'linux') {\n musl = isMuslFromFilesystem()\n if (musl === null) {\n musl = isMuslFromReport()\n }\n if (musl === null) {\n musl = isMuslFromChildProcess()\n }\n }\n return musl\n}\n\nconst isFileMusl = (f) => f.includes('libc.musl-') || f.includes('ld-musl-')\n\nconst isMuslFromFilesystem = () => {\n try {\n return readFileSync('/usr/bin/ldd', 'utf-8').includes('musl')\n } catch {\n return null\n }\n}\n\nconst isMuslFromReport = () => {\n const report =\n typeof process.report.getReport === 'function'\n ? process.report.getReport()\n : null\n if (!report) {\n return null\n }\n if (report.header && report.header.glibcVersionRuntime) {\n return false\n }\n if (Array.isArray(report.sharedObjects)) {\n if (report.sharedObjects.some(isFileMusl)) {\n return true\n }\n }\n return false\n}\n\nconst isMuslFromChildProcess = () => {\n try {\n return require('child_process')\n .execSync('ldd --version', { encoding: 'utf8' })\n .includes('musl')\n } catch (e) {\n // If we reach this case, we don't know if the system is musl or not, so is better to just fallback to false\n return false\n }\n}\n\nfunction requireNative() {\n if (process.platform === 'android') {\n if (process.arch === 'arm64') {\n try {\n return require('./rolldown-binding.android-arm64.node')\n } catch (e) {\n loadErrors.push(e)\n }\n try {\n return require('@rolldown/binding-android-arm64')\n } catch (e) {\n loadErrors.push(e)\n }\n } else if (process.arch === 'arm') {\n try {\n return require('./rolldown-binding.android-arm-eabi.node')\n } catch (e) {\n loadErrors.push(e)\n }\n try {\n return require('@rolldown/binding-android-arm-eabi')\n } catch (e) {\n loadErrors.push(e)\n }\n } else {\n loadErrors.push(\n new Error(`Unsupported architecture on Android ${process.arch}`),\n )\n }\n } else if (process.platform === 'win32') {\n if (process.arch === 'x64') {\n try {\n return require('./rolldown-binding.win32-x64-msvc.node')\n } catch (e) {\n loadErrors.push(e)\n }\n try {\n return require('@rolldown/binding-win32-x64-msvc')\n } catch (e) {\n loadErrors.push(e)\n }\n } else if (process.arch === 'ia32') {\n try {\n return require('./rolldown-binding.win32-ia32-msvc.node')\n } catch (e) {\n loadErrors.push(e)\n }\n try {\n return require('@rolldown/binding-win32-ia32-msvc')\n } catch (e) {\n loadErrors.push(e)\n }\n } else if (process.arch === 'arm64') {\n try {\n return require('./rolldown-binding.win32-arm64-msvc.node')\n } catch (e) {\n loadErrors.push(e)\n }\n try {\n return require('@rolldown/binding-win32-arm64-msvc')\n } catch (e) {\n loadErrors.push(e)\n }\n } else {\n loadErrors.push(\n new Error(`Unsupported architecture on Windows: ${process.arch}`),\n )\n }\n } else if (process.platform === 'darwin') {\n try {\n return require('./rolldown-binding.darwin-universal.node')\n } catch (e) {\n loadErrors.push(e)\n }\n try {\n return require('@rolldown/binding-darwin-universal')\n } catch (e) {\n loadErrors.push(e)\n }\n\n if (process.arch === 'x64') {\n try {\n return require('./rolldown-binding.darwin-x64.node')\n } catch (e) {\n loadErrors.push(e)\n }\n try {\n return require('@rolldown/binding-darwin-x64')\n } catch (e) {\n loadErrors.push(e)\n }\n } else if (process.arch === 'arm64') {\n try {\n return require('./rolldown-binding.darwin-arm64.node')\n } catch (e) {\n loadErrors.push(e)\n }\n try {\n return require('@rolldown/binding-darwin-arm64')\n } catch (e) {\n loadErrors.push(e)\n }\n } else {\n loadErrors.push(\n new Error(`Unsupported architecture on macOS: ${process.arch}`),\n )\n }\n } else if (process.platform === 'freebsd') {\n if (process.arch === 'x64') {\n try {\n return require('./rolldown-binding.freebsd-x64.node')\n } catch (e) {\n loadErrors.push(e)\n }\n try {\n return require('@rolldown/binding-freebsd-x64')\n } catch (e) {\n loadErrors.push(e)\n }\n } else if (process.arch === 'arm64') {\n try {\n return require('./rolldown-binding.freebsd-arm64.node')\n } catch (e) {\n loadErrors.push(e)\n }\n try {\n return require('@rolldown/binding-freebsd-arm64')\n } catch (e) {\n loadErrors.push(e)\n }\n } else {\n loadErrors.push(\n new Error(`Unsupported architecture on FreeBSD: ${process.arch}`),\n )\n }\n } else if (process.platform === 'linux') {\n if (process.arch === 'x64') {\n if (isMusl()) {\n try {\n return require('./rolldown-binding.linux-x64-musl.node')\n } catch (e) {\n loadErrors.push(e)\n }\n try {\n return require('@rolldown/binding-linux-x64-musl')\n } catch (e) {\n loadErrors.push(e)\n }\n } else {\n try {\n return require('./rolldown-binding.linux-x64-gnu.node')\n } catch (e) {\n loadErrors.push(e)\n }\n try {\n return require('@rolldown/binding-linux-x64-gnu')\n } catch (e) {\n loadErrors.push(e)\n }\n }\n } else if (process.arch === 'arm64') {\n if (isMusl()) {\n try {\n return require('./rolldown-binding.linux-arm64-musl.node')\n } catch (e) {\n loadErrors.push(e)\n }\n try {\n return require('@rolldown/binding-linux-arm64-musl')\n } catch (e) {\n loadErrors.push(e)\n }\n } else {\n try {\n return require('./rolldown-binding.linux-arm64-gnu.node')\n } catch (e) {\n loadErrors.push(e)\n }\n try {\n return require('@rolldown/binding-linux-arm64-gnu')\n } catch (e) {\n loadErrors.push(e)\n }\n }\n } else if (process.arch === 'arm') {\n try {\n return require('./rolldown-binding.linux-arm-gnueabihf.node')\n } catch (e) {\n loadErrors.push(e)\n }\n try {\n return require('@rolldown/binding-linux-arm-gnueabihf')\n } catch (e) {\n loadErrors.push(e)\n }\n } else if (process.arch === 'riscv64') {\n if (isMusl()) {\n try {\n return require('./rolldown-binding.linux-riscv64-musl.node')\n } catch (e) {\n loadErrors.push(e)\n }\n try {\n return require('@rolldown/binding-linux-riscv64-musl')\n } catch (e) {\n loadErrors.push(e)\n }\n } else {\n try {\n return require('./rolldown-binding.linux-riscv64-gnu.node')\n } catch (e) {\n loadErrors.push(e)\n }\n try {\n return require('@rolldown/binding-linux-riscv64-gnu')\n } catch (e) {\n loadErrors.push(e)\n }\n }\n } else if (process.arch === 's390x') {\n try {\n return require('./rolldown-binding.linux-s390x-gnu.node')\n } catch (e) {\n loadErrors.push(e)\n }\n try {\n return require('@rolldown/binding-linux-s390x-gnu')\n } catch (e) {\n loadErrors.push(e)\n }\n } else {\n loadErrors.push(\n new Error(`Unsupported architecture on Linux: ${process.arch}`),\n )\n }\n } else {\n loadErrors.push(\n new Error(\n `Unsupported OS: ${process.platform}, architecture: ${process.arch}`,\n ),\n )\n }\n}\n\nnativeBinding = requireNative()\n\nif (!nativeBinding || process.env.NAPI_RS_FORCE_WASI) {\n try {\n nativeBinding = require('./rolldown-binding.wasi.cjs')\n } catch (err) {\n if (process.env.NAPI_RS_FORCE_WASI) {\n console.error(err)\n }\n }\n if (!nativeBinding) {\n try {\n nativeBinding = require('@rolldown/binding-wasm32-wasi')\n } catch (err) {\n if (process.env.NAPI_RS_FORCE_WASI) {\n console.error(err)\n }\n }\n }\n}\n\nif (!nativeBinding) {\n if (loadErrors.length > 0) {\n // TODO Link to documentation with potential fixes\n // - The package owner could build/publish bindings for this arch\n // - The user may need to bundle the correct files\n // - The user may need to re-install node_modules to get new packages\n throw new Error('Failed to load native binding', { cause: loadErrors })\n }\n throw new Error(`Failed to load native binding`)\n}\n\nmodule.exports.BindingPluginContext = nativeBinding.BindingPluginContext\nmodule.exports.Bundler = nativeBinding.Bundler\n","import {\n NormalizedInputOptions,\n InputOptions as RollupInputOptions,\n Plugin,\n} from '../rollup-types'\nimport { ensureArray, normalizePluginOption } from '../utils'\nimport { BindingResolveOptions } from '../binding'\n\n// TODO export compat plugin type\nexport type RolldownPlugin = Plugin\nexport interface InputOptions {\n input?: RollupInputOptions['input']\n plugins?: RolldownPlugin[]\n external?: RollupInputOptions['external']\n resolve?: RolldownResolveOptions\n}\n\nexport type RolldownResolveOptions = Omit<BindingResolveOptions, 'alias'> & {\n alias?: Record<string, string>\n}\n\nexport type RolldownNormalizedInputOptions = NormalizedInputOptions & {\n resolve?: BindingResolveOptions\n}\n\nexport async function normalizeInputOptions(\n config: InputOptions,\n): Promise<RolldownNormalizedInputOptions> {\n // @ts-expect-error\n return {\n input: getInput(config),\n plugins: await normalizePluginOption(config.plugins),\n external: getIdMatcher(config.external),\n resolve: getResolve(config.resolve),\n }\n}\n\nfunction getInput(config: InputOptions): NormalizedInputOptions['input'] {\n const configInput = config.input\n return configInput == null\n ? []\n : typeof configInput === 'string'\n ? [configInput]\n : configInput\n}\n\nconst getIdMatcher = <T extends Array<any>>(\n option:\n | undefined\n // | boolean\n | string\n | RegExp\n | (string | RegExp)[]\n | ((id: string, ...parameters: T) => boolean | null | void),\n): ((id: string, ...parameters: T) => boolean) => {\n // if (option === true) {\n // \treturn () => true;\n // }\n if (typeof option === 'function') {\n return (id, ...parameters) =>\n (!id.startsWith('\\0') && option(id, ...parameters)) || false\n }\n if (option) {\n const ids = new Set<string>()\n const matchers: RegExp[] = []\n for (const value of ensureArray(option)) {\n if (value instanceof RegExp) {\n matchers.push(value)\n } else {\n ids.add(value)\n }\n }\n return (id: string, ..._arguments) =>\n ids.has(id) || matchers.some((matcher) => matcher.test(id))\n }\n // Rollup here convert `undefined` to function, it is bad for performance. So it will convert to `undefined` at adapter.\n return () => false\n}\n\nfunction getResolve(\n resolve?: RolldownResolveOptions,\n): RolldownNormalizedInputOptions['resolve'] {\n if (resolve) {\n return {\n ...resolve,\n alias: resolve.alias\n ? Object.fromEntries(\n Object.entries(resolve.alias).map(([key, value]) => [key, [value]]),\n )\n : undefined,\n }\n }\n}\n","import type { Plugin, NormalizedInputOptions } from '../rollup-types'\nimport type {\n BindingPluginOptions,\n BindingHookLoadOutput,\n BindingHookResolveIdOutput,\n RenderedChunk,\n BindingHookRenderChunkOutput,\n BindingOutputs as Outputs,\n} from '../binding'\nimport {\n transformToOutputBundle,\n unimplemented,\n transformSourcemap,\n} from '../utils'\n\n// Note: because napi not catch error, so we need to catch error and print error to debugger in adapter.\nexport function createBuildPluginAdapter(\n plugin: Plugin,\n options: NormalizedInputOptions,\n): BindingPluginOptions {\n return {\n name: plugin.name ?? 'unknown',\n buildStart: buildStart(plugin.buildStart, options),\n resolveId: resolveId(plugin.resolveId),\n load: load(plugin.load),\n transform: transform(plugin.transform),\n buildEnd: buildEnd(plugin.buildEnd),\n renderChunk: renderChunk(plugin.renderChunk),\n generateBundle: generateBundle(plugin.generateBundle),\n writeBundle: writeBundle(plugin.writeBundle),\n }\n}\n\nfunction writeBundle(hook: Plugin['writeBundle']) {\n if (hook) {\n if (typeof hook !== 'function') {\n return unimplemented()\n }\n return async (outputs: Outputs) => {\n try {\n // @ts-expect-error: FIXME: hyf0\n await hook.call({} as any, {} as any, transformToOutputBundle(outputs))\n } catch (error) {\n console.error(error)\n throw error\n }\n }\n }\n}\n\nfunction generateBundle(hook: Plugin['generateBundle']) {\n if (hook) {\n if (typeof hook !== 'function') {\n return unimplemented()\n }\n return async (outputs: Outputs, isWrite: boolean) => {\n try {\n await hook.call(\n {} as any,\n {} as any,\n // @ts-expect-error: FIXME: hyf0\n transformToOutputBundle(outputs),\n isWrite,\n )\n } catch (error) {\n console.error(error)\n throw error\n }\n }\n }\n}\n\nfunction renderChunk(hook: Plugin['renderChunk']) {\n if (hook) {\n if (typeof hook !== 'function') {\n return unimplemented()\n }\n return async (\n code: string,\n chunk: RenderedChunk,\n ): Promise<undefined | BindingHookRenderChunkOutput> => {\n try {\n let renderedChunk = Object.assign(\n {\n get name() {\n return unimplemented()\n },\n get dynamicImports() {\n return unimplemented()\n },\n get imports() {\n return unimplemented()\n },\n get implicitlyLoadedBefore() {\n return unimplemented()\n },\n get importedBindings() {\n return unimplemented()\n },\n get isImplicitEntry() {\n return unimplemented()\n },\n get referencedFiles() {\n return unimplemented()\n },\n type: 'chunk' as const,\n },\n chunk,\n {\n get modules() {\n return Object.fromEntries(\n Object.entries(chunk.modules).map(([key, value]) => [\n key,\n Object.assign(\n {\n get code() {\n return unimplemented()\n },\n },\n value,\n ),\n ]),\n )\n },\n get facadeModuleId() {\n return chunk.facadeModuleId || null\n },\n },\n )\n // TODO options and meta\n const value = await hook.call(\n {} as any,\n code,\n // @ts-expect-error: FIXME: hyf0\n renderedChunk,\n {} as any,\n {} as any,\n )\n if (value === undefined || value === null) {\n return\n }\n if (typeof value === 'string') {\n return { code: value }\n }\n if (typeof value === 'object') {\n // TODO other filed\n return { code: value.code }\n }\n } catch (error) {\n console.error(error)\n throw error\n }\n }\n }\n}\n\nfunction buildStart(\n hook: Plugin['buildStart'],\n options: NormalizedInputOptions,\n) {\n if (hook) {\n if (typeof hook !== 'function') {\n return unimplemented()\n }\n return async () => {\n try {\n // Here use `Object.freeze` to prevent plugin from modifying the options.\n await hook.call({} as any, Object.freeze(options))\n } catch (error) {\n console.error(error)\n throw error\n }\n }\n }\n}\n\nfunction buildEnd(hook: Plugin['buildEnd']) {\n if (hook) {\n if (typeof hook !== 'function') {\n return unimplemented()\n }\n return async (e?: string) => {\n try {\n await hook.call({} as any, e ? new Error(e) : undefined)\n } catch (error) {\n console.error(error)\n throw error\n }\n }\n }\n return\n}\n\nfunction transform(hook: Plugin['transform']) {\n if (hook) {\n if (typeof hook !== 'function') {\n return unimplemented()\n }\n return async (\n code: string,\n id: string,\n ): Promise<undefined | BindingHookLoadOutput> => {\n try {\n // TODO: Need to investigate how to pass context to plugin.\n const value = await hook.call({} as any, code, id)\n if (value === undefined || value === null) {\n return\n }\n if (typeof value === 'string') {\n return { code: value }\n }\n if (value.code === undefined) {\n return\n }\n // TODO other filed\n return { code: value.code, map: transformSourcemap(value.map) }\n } catch (error) {\n console.error(error)\n throw error\n }\n }\n }\n}\n\nfunction resolveId(hook: Plugin['resolveId']) {\n if (hook) {\n if (typeof hook !== 'function') {\n return unimplemented()\n }\n return async (\n source: string,\n importer?: string,\n options?: any,\n ): Promise<undefined | BindingHookResolveIdOutput> => {\n try {\n const value = await hook.call(\n {} as any,\n source,\n importer ? importer : undefined,\n options,\n )\n if (value === undefined || value === null) {\n return\n }\n if (typeof value === 'string') {\n return { id: value }\n }\n if (value === false) {\n return { id: source, external: true }\n }\n if (value.external === 'absolute' || value.external === 'relative') {\n throw new Error(\n `External module type {${value.external}} is not supported yet.`,\n )\n }\n // TODO other filed\n return value as BindingHookResolveIdOutput\n } catch (error) {\n console.error(error)\n throw error\n }\n }\n }\n}\n\nfunction load(hook: Plugin['load']) {\n if (hook) {\n if (typeof hook !== 'function') {\n return unimplemented()\n }\n return async (id: string): Promise<undefined | BindingHookLoadOutput> => {\n try {\n const value = await hook.call({} as any, id)\n if (value === undefined || value === null) {\n return\n }\n if (typeof value === 'string') {\n return { code: value }\n }\n if (value.code === undefined) {\n return\n }\n // TODO other filed\n return { code: value.code, map: transformSourcemap(value.map) }\n } catch (error) {\n console.error(error)\n throw error\n }\n }\n }\n}\n","import { NormalizedInputOptions } from '../rollup-types'\nimport { BindingInputOptions } from '../binding'\nimport path from 'node:path'\nimport { createBuildPluginAdapter } from './create-build-plugin-adapter'\nimport { InputOptions, RolldownNormalizedInputOptions } from './input-options'\n\nexport function createInputOptionsAdapter(\n options: RolldownNormalizedInputOptions,\n inputOptions: InputOptions,\n): BindingInputOptions {\n return {\n input: normalizeInput(options.input),\n plugins: options.plugins.map((plugin) =>\n createBuildPluginAdapter(plugin, options),\n ),\n cwd: process.cwd(),\n external: inputOptions.external ? options.external : undefined,\n resolve: options.resolve,\n }\n}\n\nfunction normalizeInput(\n input: NormalizedInputOptions['input'],\n): BindingInputOptions['input'] {\n if (Array.isArray(input)) {\n return input.map((src) => {\n const name = path.parse(src).name\n return {\n name,\n import: src,\n }\n })\n } else {\n return Object.entries(input).map((value) => {\n return { name: value[0], import: value[1] }\n })\n }\n}\n","import { OutputOptions as RollupOutputOptions } from '../rollup-types'\nimport { BindingOutputOptions } from '../binding'\nimport { unimplemented } from '../utils'\n\nexport interface OutputOptions {\n dir?: RollupOutputOptions['dir']\n format?: 'es'\n exports?: RollupOutputOptions['exports']\n sourcemap?: RollupOutputOptions['sourcemap']\n}\n\nfunction normalizeFormat(\n format: OutputOptions['format'],\n): BindingOutputOptions['format'] {\n if (format == null || format === 'es' || format === 'cjs') {\n return format\n } else {\n return unimplemented(`output.format: ${format}`)\n }\n}\n\nfunction normalizeSourcemap(\n sourcemap: OutputOptions['sourcemap'],\n): BindingOutputOptions['sourcemap'] {\n switch (sourcemap) {\n case true:\n return 'file'\n\n case 'inline':\n return 'inline'\n\n case false:\n case undefined:\n case 'hidden':\n return 'hidden'\n\n default:\n throw new Error(`unknown sourcemap: ${sourcemap}`)\n }\n}\n\nexport function normalizeOutputOptions(\n opts: OutputOptions,\n): BindingOutputOptions {\n const { dir, format, exports, sourcemap } = opts\n return {\n dir: dir,\n format: normalizeFormat(format),\n exports,\n sourcemap: normalizeSourcemap(sourcemap),\n plugins: [],\n }\n}\n","import { Bundler } from '../binding'\nimport {\n normalizeInputOptions,\n type InputOptions,\n} from '../options/input-options'\nimport { createInputOptionsAdapter } from '../options/input-options-adapter'\nimport {\n OutputOptions,\n normalizeOutputOptions,\n} from '../options/output-options'\n\nexport async function createBundler(\n inputOptions: InputOptions,\n outputOptions: OutputOptions,\n): Promise<Bundler> {\n // Convert `InputOptions` to `NormalizedInputOptions`.\n const normalizedInputOptions = await normalizeInputOptions(inputOptions)\n // Convert `NormalizedInputOptions` to `BindingInputOptions`\n const bindingInputOptions = createInputOptionsAdapter(\n normalizedInputOptions,\n inputOptions,\n )\n return new Bundler(bindingInputOptions, normalizeOutputOptions(outputOptions))\n}\n","import type { SourceMapInput } from '../rollup-types'\n\nexport function transformSourcemap(value?: SourceMapInput): string | undefined {\n if (typeof value === 'object') {\n return JSON.stringify(value)\n }\n return value\n}\n","export * from './async-flatten'\nexport * from './transform-to-rollup-output'\nexport * from './normalize-plugin-option'\nexport * from './ensure-array'\nexport * from './create-bundler'\nexport * from './transform-sourcemap'\n\nexport function arraify<T>(value: T | T[]): T[] {\n return Array.isArray(value) ? value : [value]\n}\n\nexport function unimplemented(info?: string): never {\n if (info) {\n throw new Error(`unimplemented: ${info}`)\n }\n throw new Error('unimplemented')\n}\n\nexport function unreachable(info?: string): never {\n if (info) {\n throw new Error(`unreachable: ${info}`)\n }\n throw new Error('unreachable')\n}\n\nexport function noop(..._args: any[]) {}\n","import { Bundler } from './binding'\nimport { normalizeOutputOptions, OutputOptions } from './options/output-options'\nimport { createBundler, transformToRollupOutput, unimplemented } from './utils'\nimport { RolldownOutput } from './objects/rolldown-output'\nimport { HasProperty, TypeAssert } from './utils/type-assert'\nimport { InputOptions } from './options/input-options'\n\nexport class RolldownBuild {\n #inputOptions: InputOptions\n #bundler?: Bundler\n\n constructor(inputOptions: InputOptions) {\n // TODO: Check if `inputOptions.output` is set. If so, throw an warning that it is ignored.\n this.#inputOptions = inputOptions\n }\n\n async #getBundler(outputOptions: OutputOptions): Promise<Bundler> {\n if (typeof this.#bundler === 'undefined') {\n this.#bundler = await createBundler(this.#inputOptions, outputOptions)\n }\n return this.#bundler\n }\n\n async generate(outputOptions: OutputOptions = {}): Promise<RolldownOutput> {\n const bundler = await this.#getBundler(outputOptions)\n const output = await bundler.generate()\n return transformToRollupOutput(output)\n }\n\n async write(outputOptions: OutputOptions = {}): Promise<RolldownOutput> {\n const bundler = await this.#getBundler(outputOptions)\n const output = await bundler.write()\n return transformToRollupOutput(output)\n }\n}\n\nfunction _assert() {\n type _ = TypeAssert<HasProperty<RolldownBuild, 'generate' | 'write'>>\n}\n","import { InputOptions } from './options/input-options'\nimport { RolldownBuild } from './rolldown-build'\nimport { createBundler } from './utils'\n\n// Compat to `rollup.rollup`, it is included scan module graph and linker.\nexport const rolldown = async (input: InputOptions): Promise<RolldownBuild> => {\n return new RolldownBuild(input)\n}\n\n/**\n * @description\n * This is an experimental API. It's behavior may change in the future.\n * Calling this API will only execute the scan stage of rolldown.\n */\nexport const experimental_scan = async (input: InputOptions): Promise<void> => {\n const bundler = await createBundler(input, {})\n await bundler.scan()\n}\n"],"names":[],"mappings":"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"}