Skip to content

Commit

Permalink
feat: export more typing to compat rollup (#1418)
Browse files Browse the repository at this point in the history
  • Loading branch information
underfin committed Jun 19, 2024
1 parent 39761b0 commit 949c819
Show file tree
Hide file tree
Showing 6 changed files with 131 additions and 38 deletions.
46 changes: 44 additions & 2 deletions packages/rolldown/src/index.ts
Original file line number Diff line number Diff line change
@@ -1,4 +1,8 @@
import { RolldownOutput, RolldownOutputChunk } from './types/rolldown-output'
import {
RolldownOutput,
RolldownOutputChunk,
SourceMap,
} from './types/rolldown-output'
import type {
ExternalOption,
InputOption,
Expand All @@ -7,11 +11,19 @@ import type {
import type { ModuleFormat, OutputOptions } from './options/output-options'
import type { RolldownOptions } from './types/rolldown-options'
import type {
AsyncPluginHooks,
CustomPluginOptions,
FunctionPluginHooks,
ImportKind,
LoadResult,
ModuleOptions,
ObjectHook,
ParallelPluginHooks,
PartialResolvedId,
Plugin,
ResolveIdResult,
ResolvedId,
SourceDescription,
TransformResult,
} from './plugin'
import { defineParallelPlugin, DefineParallelPluginResult } from './plugin'
Expand All @@ -21,8 +33,19 @@ import { ConfigExport } from './types/config-export'
import { BuiltinWasmPlugin } from './plugin/bindingify-builtin-plugin'
import { RolldownBuild } from './rolldown-build'
import { InternalModuleFormat } from './options/bindingify-output-options'
import { PluginContext } from './plugin/plugin-context'
import {
EmittedAsset,
EmittedFile,
PluginContext,
} from './plugin/plugin-context'
import { TransformPluginContext } from './plugin/transfrom-plugin-context'
import { NormalizedOutputOptions } from './options/normalized-output-options'
import { RenderedChunk } from './binding'
import { PartialNull } from './types/utils'
import { NormalizedInputOptions } from './options/normalized-input-options'
import { ModuleInfo } from './types/module-info'
import { MinimalPluginContext } from './log/logger'
import { ExistingRawSourceMap } from './types/sourcemap'

export {
defineConfig,
Expand All @@ -38,7 +61,9 @@ export type {
RolldownOutput,
RolldownBuild,
InputOptions,
NormalizedInputOptions,
OutputOptions,
NormalizedOutputOptions,
Plugin,
DefineParallelPluginResult,
ConfigExport,
Expand All @@ -53,6 +78,22 @@ export type {
PluginContext,
TransformPluginContext,
ObjectHook,
RenderedChunk,
SourceMap,
SourceDescription,
PartialNull,
PartialResolvedId,
ResolvedId,
ModuleOptions,
ModuleInfo,
MinimalPluginContext,
EmittedFile,
EmittedAsset,
CustomPluginOptions,
AsyncPluginHooks,
ParallelPluginHooks,
FunctionPluginHooks,
ExistingRawSourceMap,
}

// Exports for compatibility
Expand All @@ -61,5 +102,6 @@ export type {
RolldownOutput as RollupOutput,
RolldownOptions as RollupOptions,
RolldownBuild as RollupBuild,
RolldownOutputChunk as OutputChunk,
}
export type { RollupError, RollupLog, LoggingFunction } from './rollup'
7 changes: 2 additions & 5 deletions packages/rolldown/src/plugin/bindingify-build-hooks.ts
Original file line number Diff line number Diff line change
Expand Up @@ -10,10 +10,7 @@ import { NormalizedInputOptions } from '../options/normalized-input-options'
import { isEmptySourcemapFiled } from '../utils/transform-sourcemap'
import { transformModuleInfo } from '../utils/transform-module-info'
import path from 'node:path'
import {
bindingifySourcemap,
type SourceMapInputObject,
} from '../types/sourcemap'
import { bindingifySourcemap, ExistingRawSourceMap } from '../types/sourcemap'
import { PluginContext } from './plugin-context'
import { TransformPluginContext } from './transfrom-plugin-context'
import { bindingifySideEffects } from '../utils/transform-side-effects'
Expand Down Expand Up @@ -196,7 +193,7 @@ export function bindingifyLoad(
let map =
typeof ret.map === 'object'
? ret.map
: (JSON.parse(ret.map) as SourceMapInputObject)
: (JSON.parse(ret.map) as ExistingRawSourceMap)
if (!isEmptySourcemapFiled(map.sources)) {
// normalize original sourcemap sources
// Port form https://github.com/rollup/rollup/blob/master/src/utils/collapseSourcemaps.ts#L180-L188.
Expand Down
103 changes: 75 additions & 28 deletions packages/rolldown/src/plugin/index.ts
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,13 @@ import type {
RenderedChunk,
} from '../binding'
import type { NormalizedInputOptions } from '../options/normalized-input-options'
import type { AnyFn, AnyObj, NullValue, MaybePromise } from '../types/utils'
import type {
AnyFn,
AnyObj,
NullValue,
MaybePromise,
PartialNull,
} from '../types/utils'
import type { SourceMapInput } from '../types/sourcemap'
import { pathToFileURL } from 'node:url'
import type { ModuleInfo } from '../types/module-info'
Expand All @@ -28,33 +34,34 @@ export type ModuleSideEffects = boolean | 'no-treeshake' | null

export type ImportKind = BindingHookResolveIdExtraOptions['kind']

export type ResolveIdResult =
| string
| NullValue
| false
| {
id: string
external?: boolean
moduleSideEffects?: ModuleSideEffects
}

export type LoadResult =
| NullValue
| string
| {
code: string
map?: SourceMapInput
moduleSideEffects?: ModuleSideEffects
}

export type TransformResult =
| NullValue
| string
| {
code: string
map?: SourceMapInput
moduleSideEffects?: ModuleSideEffects
}
export interface CustomPluginOptions {
[plugin: string]: any
}

export interface ModuleOptions {
moduleSideEffects: ModuleSideEffects
}

export interface ResolvedId extends ModuleOptions {
external: boolean
id: string
}

export interface PartialResolvedId extends Partial<PartialNull<ModuleOptions>> {
external?: boolean
id: string
}

export interface SourceDescription extends Partial<PartialNull<ModuleOptions>> {
code: string
map?: SourceMapInput
}

export type ResolveIdResult = string | NullValue | false | PartialResolvedId

export type LoadResult = NullValue | string | SourceDescription

export type TransformResult = NullValue | string | SourceDescription

export interface Plugin {
name?: string
Expand Down Expand Up @@ -197,3 +204,43 @@ export function defineParallelPlugin<Options>(
return { _parallel: { fileUrl: pathToFileURL(pluginPath).href, options } }
}
}

export type FunctionPluginHooks = Plugin

export type SyncPluginHooks =
| 'augmentChunkHash'
| 'onLog'
| 'outputOptions'
| 'renderDynamicImport'
| 'resolveFileUrl'
| 'resolveImportMeta'

export type AsyncPluginHooks = Exclude<
keyof FunctionPluginHooks,
SyncPluginHooks
>

export type FirstPluginHooks =
| 'load'
| 'renderDynamicImport'
| 'resolveDynamicImport'
| 'resolveFileUrl'
| 'resolveId'
| 'resolveImportMeta'
| 'shouldTransformCachedModule'

export type SequentialPluginHooks =
| 'augmentChunkHash'
| 'generateBundle'
| 'onLog'
| 'options'
| 'outputOptions'
| 'renderChunk'
| 'transform'

export type AddonHooks = 'banner' | 'footer' | 'intro' | 'outro'

export type ParallelPluginHooks = Exclude<
keyof FunctionPluginHooks | AddonHooks,
FirstPluginHooks | SequentialPluginHooks
>
2 changes: 2 additions & 0 deletions packages/rolldown/src/plugin/plugin-context.ts
Original file line number Diff line number Diff line change
Expand Up @@ -15,6 +15,8 @@ export interface EmittedAsset {
source: AssetSource
}

export type EmittedFile = EmittedAsset

export class PluginContext {
debug: LoggingFunction
info: LoggingFunction
Expand Down
7 changes: 4 additions & 3 deletions packages/rolldown/src/types/sourcemap.ts
Original file line number Diff line number Diff line change
@@ -1,16 +1,17 @@
import { BindingSourcemap } from '../binding'

export interface SourceMapInputObject {
export interface ExistingRawSourceMap {
file?: string | null
mappings: string
names?: string[]
sources?: (string | null)[]
sourcesContent?: (string | null)[]
sourceRoot?: string
version: number
version?: number // make it optional to compat { mappings: '' }
x_google_ignoreList?: number[]
}

export type SourceMapInput = SourceMapInputObject | string | null
export type SourceMapInput = ExistingRawSourceMap | string | null

export function bindingifySourcemap(
map?: SourceMapInput,
Expand Down
4 changes: 4 additions & 0 deletions packages/rolldown/src/types/utils.ts
Original file line number Diff line number Diff line change
Expand Up @@ -7,3 +7,7 @@ export interface AnyFn {
export interface AnyObj {}

export type NullValue<T = void> = T | undefined | null | void

export type PartialNull<T> = {
[P in keyof T]: T[P] | null
}

0 comments on commit 949c819

Please sign in to comment.