Skip to content

Commit 6dadaa5

Browse files
authored
feat: support module subtype in js side (#9613)
1 parent 1c7554b commit 6dadaa5

55 files changed

Lines changed: 1540 additions & 1008 deletions

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

crates/node_binding/binding.d.ts

Lines changed: 119 additions & 58 deletions
Original file line numberDiff line numberDiff line change
@@ -8,9 +8,47 @@ export type JsFilename =
88

99
export type LocalJsFilename = JsFilename;
1010

11-
export type RawLazyCompilationTest = RegExp | ((m: JsModule) => boolean);
11+
export type RawLazyCompilationTest = RegExp | ((module: Module) => boolean);
1212

1313
export type AssetInfo = KnownAssetInfo & Record<string, any>;
14+
15+
export interface Module {
16+
readonly type: string;
17+
get context(): string | undefined;
18+
get layer(): string | undefined;
19+
get factoryMeta(): JsFactoryMeta | undefined
20+
get useSourceMap(): boolean;
21+
get useSimpleSourceMap(): boolean;
22+
buildInfo: Record<string, any>;
23+
buildMeta: Record<string, any>;
24+
}
25+
26+
interface NormalModuleConstructor {
27+
new (): NormalModule;
28+
readonly prototype: NormalModule;
29+
}
30+
31+
export var NormalModule: NormalModuleConstructor;
32+
33+
export interface NormalModule extends Module {
34+
get resource(): string | undefined;
35+
get request(): string | undefined
36+
get userRequest(): string | undefined
37+
set userRequest(val: string | undefined)
38+
get rawRequest(): string | undefined
39+
get resourceResolveData(): JsResourceData | undefined
40+
get matchResource(): string | undefined
41+
set matchResource(val: string | undefined)
42+
}
43+
44+
export interface ConcatenatedModule extends Module {
45+
}
46+
47+
export interface ContextModule extends Module {
48+
}
49+
50+
export interface ExternalModule extends Module {
51+
}
1452
/* -- banner.d.ts end -- */
1553

1654
/* -- napi-rs generated below -- */
@@ -21,6 +59,29 @@ export declare class ExternalObject<T> {
2159
[K: symbol]: T
2260
}
2361
}
62+
export declare class ConcatenatedModule {
63+
get modules(): Module[] | undefined
64+
_originalSource(): JsCompatSource | undefined
65+
identifier(): string
66+
nameForCondition(): string | undefined
67+
get _blocks(): JsDependenciesBlock[]
68+
get dependencies(): Dependency[]
69+
size(ty?: string | undefined | null): number
70+
libIdent(options: JsLibIdentOptions): string | null
71+
_emitFile(filename: string, source: JsCompatSource, jsAssetInfo?: AssetInfo | undefined | null): void
72+
}
73+
74+
export declare class ContextModule {
75+
_originalSource(): JsCompatSource | undefined
76+
identifier(): string
77+
nameForCondition(): string | undefined
78+
get _blocks(): JsDependenciesBlock[]
79+
get dependencies(): Dependency[]
80+
size(ty?: string | undefined | null): number
81+
libIdent(options: JsLibIdentOptions): string | null
82+
_emitFile(filename: string, source: JsCompatSource, jsAssetInfo?: AssetInfo | undefined | null): void
83+
}
84+
2485
export declare class Dependency {
2586
get type(): string
2687
get category(): string
@@ -64,6 +125,19 @@ export declare class EntryOptionsDto {
64125
}
65126
export type EntryOptionsDTO = EntryOptionsDto
66127

128+
export declare class ExternalModule {
129+
get userRequest(): string | undefined
130+
set userRequest(val: string | undefined)
131+
_originalSource(): JsCompatSource | undefined
132+
identifier(): string
133+
nameForCondition(): string | undefined
134+
get _blocks(): JsDependenciesBlock[]
135+
get dependencies(): Dependency[]
136+
size(ty?: string | undefined | null): number
137+
libIdent(options: JsLibIdentOptions): string | null
138+
_emitFile(filename: string, source: JsCompatSource, jsAssetInfo?: AssetInfo | undefined | null): void
139+
}
140+
67141
export declare class JsChunk {
68142
get name(): string | undefined
69143
get id(): string | undefined
@@ -89,14 +163,14 @@ export declare class JsChunk {
89163
}
90164

91165
export declare class JsChunkGraph {
92-
getChunkModules(chunk: JsChunk): JsModule[]
93-
getChunkEntryModules(chunk: JsChunk): JsModule[]
166+
getChunkModules(chunk: JsChunk): Module[]
167+
getChunkEntryModules(chunk: JsChunk): Module[]
94168
getNumberOfEntryModules(chunk: JsChunk): number
95169
getChunkEntryDependentChunksIterable(chunk: JsChunk): JsChunk[]
96-
getChunkModulesIterableBySourceType(chunk: JsChunk, sourceType: string): JsModule[]
97-
getModuleChunks(module: JsModule): JsChunk[]
98-
getModuleId(jsModule: JsModule): string | null
99-
getModuleHash(module: JsModule, runtime: string | string[] | undefined): string | null
170+
getChunkModulesIterableBySourceType(chunk: JsChunk, sourceType: string): Module[]
171+
getModuleChunks(module: Module): JsChunk[]
172+
getModuleId(module: Module): string | null
173+
getModuleHash(module: Module, runtime: string | string[] | undefined): string | null
100174
getBlockChunkGroup(jsBlock: JsDependenciesBlock): JsChunkGroup | null
101175
}
102176

@@ -111,17 +185,17 @@ export declare class JsChunkGroup {
111185
getRuntimeChunk(): JsChunk
112186
getEntrypointChunk(): JsChunk
113187
getFiles(): Array<string>
114-
getModulePreOrderIndex(module: JsModule): number | null
115-
getModulePostOrderIndex(module: JsModule): number | null
188+
getModulePreOrderIndex(module: Module): number | null
189+
getModulePostOrderIndex(module: Module): number | null
116190
}
117191

118192
export declare class JsCompilation {
119193
updateAsset(filename: string, newSourceOrFunction: JsCompatSource | ((source: JsCompatSourceOwned) => JsCompatSourceOwned), assetInfoUpdateOrFunction?: AssetInfo | ((assetInfo: AssetInfo) => AssetInfo | undefined)): void
120194
getAssets(): Readonly<JsAsset>[]
121195
getAsset(name: string): JsAsset | null
122196
getAssetSource(name: string): JsCompatSource | null
123-
get modules(): Array<JsModule>
124-
get builtModules(): Array<JsModule>
197+
get modules(): Array<Module>
198+
get builtModules(): Array<Module>
125199
getOptimizationBailout(): Array<JsStatsOptimizationBailout>
126200
getChunks(): JsChunk[]
127201
getNamedChunkKeys(): Array<string>
@@ -165,7 +239,7 @@ export declare class JsCompilation {
165239
addRuntimeModule(chunk: JsChunk, runtimeModule: JsAddingRuntimeModule): void
166240
get moduleGraph(): JsModuleGraph
167241
get chunkGraph(): JsChunkGraph
168-
addInclude(args: [string, EntryDependency, JsEntryOptions | undefined][], callback: (errMsg: Error | null, results: [string | null, JsModule][]) => void): void
242+
addInclude(args: [string, EntryDependency, JsEntryOptions | undefined][], callback: (errMsg: Error | null, results: [string | null, Module][]) => void): void
169243
}
170244

171245
export declare class JsCompiler {
@@ -240,51 +314,26 @@ export declare class JsExportsInfo {
240314
getUsed(name: string | string[], runtime: string | string[] | undefined): 0 | 1 | 2 | 3 | 4
241315
}
242316

243-
export declare class JsModule {
244-
get context(): string | undefined
245-
get originalSource(): JsCompatSource | undefined
246-
get resource(): string | undefined
247-
get moduleIdentifier(): string
248-
get nameForCondition(): string | undefined
249-
get request(): string | undefined
250-
get userRequest(): string | undefined
251-
set userRequest(val: string | undefined)
252-
get rawRequest(): string | undefined
253-
get factoryMeta(): JsFactoryMeta | undefined
254-
get type(): string
255-
get layer(): string | undefined
256-
get blocks(): JsDependenciesBlock[]
257-
get dependencies(): Dependency[]
258-
size(ty?: string | undefined | null): number
259-
get modules(): JsModule[] | undefined
260-
get useSourceMap(): boolean
261-
libIdent(options: JsLibIdentOptions): string | null
262-
get resourceResolveData(): JsResourceData | undefined
263-
get matchResource(): string | undefined
264-
set matchResource(val: string | undefined)
265-
emitFile(filename: string, source: JsCompatSource, jsAssetInfo?: AssetInfo | undefined | null): void
266-
}
267-
268317
export declare class JsModuleGraph {
269-
getModule(dependency: Dependency): JsModule | null
270-
getResolvedModule(dependency: Dependency): JsModule | null
271-
getUsedExports(jsModule: JsModule, jsRuntime: string | Array<string>): boolean | Array<string> | null
272-
getIssuer(module: JsModule): JsModule | null
273-
getExportsInfo(module: JsModule): JsExportsInfo
318+
getModule(dependency: Dependency): Module | null
319+
getResolvedModule(dependency: Dependency): Module | null
320+
getUsedExports(module: Module, runtime: string | string[]): boolean | Array<string> | null
321+
getIssuer(module: Module): Module | null
322+
getExportsInfo(module: Module): JsExportsInfo
274323
getConnection(dependency: Dependency): JsModuleGraphConnection | null
275-
getOutgoingConnections(module: JsModule): JsModuleGraphConnection[]
276-
getOutgoingConnectionsInOrder(module: JsModule): JsModuleGraphConnection[]
277-
getIncomingConnections(module: JsModule): JsModuleGraphConnection[]
278-
getParentModule(dependency: Dependency): JsModule | null
324+
getOutgoingConnections(module: Module): JsModuleGraphConnection[]
325+
getOutgoingConnectionsInOrder(module: Module): JsModuleGraphConnection[]
326+
getIncomingConnections(module: Module): JsModuleGraphConnection[]
327+
getParentModule(dependency: Dependency): Module | null
279328
getParentBlockIndex(dependency: Dependency): number
280-
isAsync(module: JsModule): boolean
329+
isAsync(module: Module): boolean
281330
}
282331

283332
export declare class JsModuleGraphConnection {
284333
get dependency(): Dependency
285-
get module(): JsModule | null
286-
get resolvedModule(): JsModule | null
287-
get originModule(): JsModule | null
334+
get module(): Module | null
335+
get resolvedModule(): Module | null
336+
get originModule(): Module | null
288337
}
289338

290339
export declare class JsResolver {
@@ -304,6 +353,18 @@ export declare class JsStats {
304353
getLogging(acceptedTypes: number): Array<JsStatsLogging>
305354
}
306355

356+
export declare class Module {
357+
_originalSource(): JsCompatSource | undefined
358+
identifier(): string
359+
nameForCondition(): string | undefined
360+
get _blocks(): JsDependenciesBlock[]
361+
get dependencies(): Dependency[]
362+
size(ty?: string | undefined | null): number
363+
libIdent(options: JsLibIdentOptions): string | null
364+
_emitFile(filename: string, source: JsCompatSource, jsAssetInfo?: AssetInfo | undefined | null): void
365+
}
366+
367+
307368
export declare class RawExternalItemFnCtx {
308369
data(): RawExternalItemFnCtxData
309370
getResolver(): JsResolver
@@ -524,7 +585,7 @@ export interface JsBuildTimeExecutionOption {
524585
}
525586

526587
export interface JsCacheGroupTestCtx {
527-
module: JsModule
588+
module: Module
528589
}
529590

530591
export interface JsChunkAssetArgs {
@@ -533,12 +594,12 @@ export interface JsChunkAssetArgs {
533594
}
534595

535596
export interface JsChunkGroupOrigin {
536-
module?: JsModule | undefined
597+
module?: Module | undefined
537598
request?: string
538599
}
539600

540601
export interface JsChunkOptionNameCtx {
541-
module: JsModule
602+
module: Module
542603
chunks: JsChunk[]
543604
cacheGroupKey: string
544605
}
@@ -737,7 +798,7 @@ export interface JsLoaderContext {
737798
resourceData: Readonly<JsResourceData>
738799
/** Will be deprecated. Use module.module_identifier instead */
739800
_moduleIdentifier: Readonly<string>
740-
_module: JsModule
801+
_module: Module
741802
hot: Readonly<boolean>
742803
/** Content maybe empty in pitching stage */
743804
content: null | Buffer
@@ -1339,7 +1400,7 @@ export interface RawAliasOptionItem {
13391400

13401401
export interface RawAssetGeneratorDataUrlFnCtx {
13411402
filename: string
1342-
module: JsModule
1403+
module: Module
13431404
}
13441405

13451406
export interface RawAssetGeneratorDataUrlOptions {
@@ -2362,9 +2423,9 @@ export interface RegisterJsTaps {
23622423
registerCompilerEmitTaps: (stages: Array<number>) => Array<{ function: (() => Promise<void>); stage: number; }>
23632424
registerCompilerAfterEmitTaps: (stages: Array<number>) => Array<{ function: (() => Promise<void>); stage: number; }>
23642425
registerCompilerAssetEmittedTaps: (stages: Array<number>) => Array<{ function: ((arg: JsAssetEmittedArgs) => Promise<void>); stage: number; }>
2365-
registerCompilationBuildModuleTaps: (stages: Array<number>) => Array<{ function: ((arg: JsModule) => void); stage: number; }>
2366-
registerCompilationStillValidModuleTaps: (stages: Array<number>) => Array<{ function: ((arg: JsModule) => void); stage: number; }>
2367-
registerCompilationSucceedModuleTaps: (stages: Array<number>) => Array<{ function: ((arg: JsModule) => void); stage: number; }>
2426+
registerCompilationBuildModuleTaps: (stages: Array<number>) => Array<{ function: ((arg: Module) => void); stage: number; }>
2427+
registerCompilationStillValidModuleTaps: (stages: Array<number>) => Array<{ function: ((arg: Module) => void); stage: number; }>
2428+
registerCompilationSucceedModuleTaps: (stages: Array<number>) => Array<{ function: ((arg: Module) => void); stage: number; }>
23682429
registerCompilationExecuteModuleTaps: (stages: Array<number>) => Array<{ function: ((arg: JsExecuteModuleArg) => void); stage: number; }>
23692430
registerCompilationAdditionalTreeRuntimeRequirementsTaps: (stages: Array<number>) => Array<{ function: ((arg: JsAdditionalTreeRuntimeRequirementsArg) => JsAdditionalTreeRuntimeRequirementsResult | undefined); stage: number; }>
23702431
registerCompilationRuntimeRequirementInTreeTaps: (stages: Array<number>) => Array<{ function: ((arg: JsRuntimeRequirementInTreeArg) => JsRuntimeRequirementInTreeResult | undefined); stage: number; }>

crates/node_binding/rspack.wasi-browser.js

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -60,12 +60,15 @@ const {
6060
}
6161
},
6262
})
63+
export const ConcatenatedModule = __napiModule.exports.ConcatenatedModule
64+
export const ContextModule = __napiModule.exports.ContextModule
6365
export const Dependency = __napiModule.exports.Dependency
6466
export const EntryDataDto = __napiModule.exports.EntryDataDto
6567
export const EntryDataDTO = __napiModule.exports.EntryDataDTO
6668
export const EntryDependency = __napiModule.exports.EntryDependency
6769
export const EntryOptionsDto = __napiModule.exports.EntryOptionsDto
6870
export const EntryOptionsDTO = __napiModule.exports.EntryOptionsDTO
71+
export const ExternalModule = __napiModule.exports.ExternalModule
6972
export const JsChunk = __napiModule.exports.JsChunk
7073
export const JsChunkGraph = __napiModule.exports.JsChunkGraph
7174
export const JsChunkGroup = __napiModule.exports.JsChunkGroup
@@ -77,12 +80,13 @@ export const JsDependencies = __napiModule.exports.JsDependencies
7780
export const JsDependenciesBlock = __napiModule.exports.JsDependenciesBlock
7881
export const JsEntries = __napiModule.exports.JsEntries
7982
export const JsExportsInfo = __napiModule.exports.JsExportsInfo
80-
export const JsModule = __napiModule.exports.JsModule
8183
export const JsModuleGraph = __napiModule.exports.JsModuleGraph
8284
export const JsModuleGraphConnection = __napiModule.exports.JsModuleGraphConnection
8385
export const JsResolver = __napiModule.exports.JsResolver
8486
export const JsResolverFactory = __napiModule.exports.JsResolverFactory
8587
export const JsStats = __napiModule.exports.JsStats
88+
export const Module = __napiModule.exports.Module
89+
export const NormalModule = __napiModule.exports.NormalModule
8690
export const RawExternalItemFnCtx = __napiModule.exports.RawExternalItemFnCtx
8791
export const BuiltinPluginName = __napiModule.exports.BuiltinPluginName
8892
export const cleanupGlobalTrace = __napiModule.exports.cleanupGlobalTrace

crates/node_binding/rspack.wasi.cjs

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -85,12 +85,15 @@ const { instance: __napiInstance, module: __wasiModule, napiModule: __napiModule
8585
},
8686
})
8787

88+
module.exports.ConcatenatedModule = __napiModule.exports.ConcatenatedModule
89+
module.exports.ContextModule = __napiModule.exports.ContextModule
8890
module.exports.Dependency = __napiModule.exports.Dependency
8991
module.exports.EntryDataDto = __napiModule.exports.EntryDataDto
9092
module.exports.EntryDataDTO = __napiModule.exports.EntryDataDTO
9193
module.exports.EntryDependency = __napiModule.exports.EntryDependency
9294
module.exports.EntryOptionsDto = __napiModule.exports.EntryOptionsDto
9395
module.exports.EntryOptionsDTO = __napiModule.exports.EntryOptionsDTO
96+
module.exports.ExternalModule = __napiModule.exports.ExternalModule
9497
module.exports.JsChunk = __napiModule.exports.JsChunk
9598
module.exports.JsChunkGraph = __napiModule.exports.JsChunkGraph
9699
module.exports.JsChunkGroup = __napiModule.exports.JsChunkGroup
@@ -102,12 +105,13 @@ module.exports.JsDependencies = __napiModule.exports.JsDependencies
102105
module.exports.JsDependenciesBlock = __napiModule.exports.JsDependenciesBlock
103106
module.exports.JsEntries = __napiModule.exports.JsEntries
104107
module.exports.JsExportsInfo = __napiModule.exports.JsExportsInfo
105-
module.exports.JsModule = __napiModule.exports.JsModule
106108
module.exports.JsModuleGraph = __napiModule.exports.JsModuleGraph
107109
module.exports.JsModuleGraphConnection = __napiModule.exports.JsModuleGraphConnection
108110
module.exports.JsResolver = __napiModule.exports.JsResolver
109111
module.exports.JsResolverFactory = __napiModule.exports.JsResolverFactory
110112
module.exports.JsStats = __napiModule.exports.JsStats
113+
module.exports.Module = __napiModule.exports.Module
114+
module.exports.NormalModule = __napiModule.exports.NormalModule
111115
module.exports.RawExternalItemFnCtx = __napiModule.exports.RawExternalItemFnCtx
112116
module.exports.BuiltinPluginName = __napiModule.exports.BuiltinPluginName
113117
module.exports.cleanupGlobalTrace = __napiModule.exports.cleanupGlobalTrace

0 commit comments

Comments
 (0)