Skip to content

Commit c5e3e52

Browse files
authored
feat: add rsdoctor native plugin (#8930)
1 parent 89135bf commit c5e3e52

File tree

61 files changed

+2895
-43
lines changed

Some content is hidden

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

61 files changed

+2895
-43
lines changed

Cargo.lock

Lines changed: 22 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

Cargo.toml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -172,6 +172,7 @@ rspack_plugin_progress = { version = "0.2.0", path = "crates/rsp
172172
rspack_plugin_real_content_hash = { version = "0.2.0", path = "crates/rspack_plugin_real_content_hash" }
173173
rspack_plugin_remove_duplicate_modules = { version = "0.2.0", path = "crates/rspack_plugin_remove_duplicate_modules" }
174174
rspack_plugin_remove_empty_chunks = { version = "0.2.0", path = "crates/rspack_plugin_remove_empty_chunks" }
175+
rspack_plugin_rsdoctor = { version = "0.2.0", path = "crates/rspack_plugin_rsdoctor" }
175176
rspack_plugin_runtime = { version = "0.2.0", path = "crates/rspack_plugin_runtime" }
176177
rspack_plugin_runtime_chunk = { version = "0.2.0", path = "crates/rspack_plugin_runtime_chunk" }
177178
rspack_plugin_schemes = { version = "0.2.0", path = "crates/rspack_plugin_schemes" }

crates/node_binding/Cargo.toml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -28,6 +28,7 @@ rspack_napi = { workspace = true }
2828
rspack_paths = { workspace = true }
2929
rspack_plugin_html = { workspace = true }
3030
rspack_plugin_javascript = { workspace = true }
31+
rspack_plugin_rsdoctor = { workspace = true }
3132
rspack_plugin_runtime = { workspace = true }
3233
rspack_util = { workspace = true }
3334

crates/node_binding/binding.d.ts

Lines changed: 168 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -374,6 +374,7 @@ export declare enum BuiltinPluginName {
374374
LightningCssMinimizerRspackPlugin = 'LightningCssMinimizerRspackPlugin',
375375
BundlerInfoRspackPlugin = 'BundlerInfoRspackPlugin',
376376
CssExtractRspackPlugin = 'CssExtractRspackPlugin',
377+
RsdoctorPlugin = 'RsdoctorPlugin',
377378
JsLoaderRspackPlugin = 'JsLoaderRspackPlugin',
378379
LazyCompilationPlugin = 'LazyCompilationPlugin'
379380
}
@@ -840,6 +841,157 @@ export interface JsResourceData {
840841
fragment?: string
841842
}
842843

844+
export interface JsRsdoctorAsset {
845+
ukey: number
846+
path: string
847+
chunks: Array<number>
848+
size: number
849+
}
850+
851+
export interface JsRsdoctorAssetPatch {
852+
assets: Array<JsRsdoctorAsset>
853+
chunkAssets: Array<JsRsdoctorChunkAssets>
854+
entrypointAssets: Array<JsRsdoctorEntrypointAssets>
855+
}
856+
857+
export interface JsRsdoctorChunk {
858+
ukey: number
859+
name: string
860+
initial: boolean
861+
entry: boolean
862+
dependencies: Array<number>
863+
imported: Array<number>
864+
}
865+
866+
export interface JsRsdoctorChunkAssets {
867+
chunk: number
868+
assets: Array<number>
869+
}
870+
871+
export interface JsRsdoctorChunkGraph {
872+
chunks: Array<JsRsdoctorChunk>
873+
entrypoints: Array<JsRsdoctorEntrypoint>
874+
}
875+
876+
export interface JsRsdoctorChunkModules {
877+
chunk: number
878+
modules: Array<number>
879+
}
880+
881+
export interface JsRsdoctorDependency {
882+
ukey: number
883+
kind: string
884+
request: string
885+
module: number
886+
dependency: number
887+
}
888+
889+
export interface JsRsdoctorEntrypoint {
890+
ukey: number
891+
name: string
892+
chunks: Array<number>
893+
}
894+
895+
export interface JsRsdoctorEntrypointAssets {
896+
entrypoint: number
897+
assets: Array<number>
898+
}
899+
900+
export interface JsRsdoctorExportInfo {
901+
ukey: number
902+
name: string
903+
from?: number
904+
variable?: number
905+
identifier?: JsRsdoctorStatement
906+
sideEffects: Array<number>
907+
}
908+
909+
export interface JsRsdoctorModule {
910+
ukey: number
911+
identifier: string
912+
path: string
913+
isEntry: boolean
914+
kind: 'normal' | 'concatenated'
915+
layer?: string
916+
dependencies: Array<number>
917+
imported: Array<number>
918+
modules: Array<number>
919+
belongModules: Array<number>
920+
chunks: Array<number>
921+
}
922+
923+
export interface JsRsdoctorModuleGraph {
924+
modules: Array<JsRsdoctorModule>
925+
dependencies: Array<JsRsdoctorDependency>
926+
chunkModules: Array<JsRsdoctorChunkModules>
927+
}
928+
929+
export interface JsRsdoctorModuleGraphModule {
930+
ukey: number
931+
module: number
932+
exports: Array<number>
933+
sideEffects: Array<number>
934+
variables: Array<number>
935+
dynamic: boolean
936+
}
937+
938+
export interface JsRsdoctorModuleId {
939+
module: number
940+
renderId: string
941+
}
942+
943+
export interface JsRsdoctorModuleIdsPatch {
944+
moduleIds: Array<JsRsdoctorModuleId>
945+
}
946+
947+
export interface JsRsdoctorModuleOriginalSource {
948+
module: number
949+
source: string
950+
size: number
951+
}
952+
953+
export interface JsRsdoctorModuleSourcesPatch {
954+
moduleOriginalSources: Array<JsRsdoctorModuleOriginalSource>
955+
}
956+
957+
export interface JsRsdoctorSideEffect {
958+
ukey: number
959+
name: string
960+
originName?: string
961+
module: number
962+
identifier: JsRsdoctorStatement
963+
isNameSpace: boolean
964+
fromDependency?: number
965+
exports: Array<number>
966+
variable?: number
967+
}
968+
969+
export interface JsRsdoctorSourcePosition {
970+
line?: number
971+
column?: number
972+
index?: number
973+
}
974+
975+
export interface JsRsdoctorSourceRange {
976+
start: JsRsdoctorSourcePosition
977+
end?: JsRsdoctorSourcePosition
978+
}
979+
980+
export interface JsRsdoctorStatement {
981+
module: number
982+
sourcePosition?: JsRsdoctorSourceRange
983+
transformedPosition: JsRsdoctorSourceRange
984+
}
985+
986+
export interface JsRsdoctorVariable {
987+
ukey: number
988+
name: string
989+
module: number
990+
usedInfo: string
991+
identififer: JsRsdoctorStatement
992+
exported?: number
993+
}
994+
843995
export interface JsRspackDiagnostic {
844996
severity: JsRspackSeverity
845997
error: JsRspackError
@@ -1974,6 +2126,11 @@ export interface RawResolveTsconfigOptions {
19742126
references?: Array<string>
19752127
}
19762128

2129+
export interface RawRsdoctorPluginOptions {
2130+
moduleGraphFeatures: boolean | Array<'graph' | 'ids' | 'sources'>
2131+
chunkGraphFeatures: boolean | Array<'graph' | 'assets'>
2132+
}
2133+
19772134
export interface RawRspackFuture {
19782135

19792136
}
@@ -2147,7 +2304,12 @@ export declare enum RegisterJsTapKind {
21472304
HtmlPluginAfterEmit = 40,
21482305
RuntimePluginCreateScript = 41,
21492306
RuntimePluginLinkPreload = 42,
2150-
RuntimePluginLinkPrefetch = 43
2307+
RuntimePluginLinkPrefetch = 43,
2308+
RsdoctorPluginModuleGraph = 44,
2309+
RsdoctorPluginChunkGraph = 45,
2310+
RsdoctorPluginModuleIds = 46,
2311+
RsdoctorPluginModuleSources = 47,
2312+
RsdoctorPluginAssets = 48
21512313
}
21522314

21532315
export interface RegisterJsTaps {
@@ -2195,6 +2357,11 @@ export interface RegisterJsTaps {
21952357
registerRuntimePluginCreateScriptTaps: (stages: Array<number>) => Array<{ function: ((arg: JsCreateScriptData) => String); stage: number; }>
21962358
registerRuntimePluginLinkPreloadTaps: (stages: Array<number>) => Array<{ function: ((arg: JsLinkPreloadData) => String); stage: number; }>
21972359
registerRuntimePluginLinkPrefetchTaps: (stages: Array<number>) => Array<{ function: ((arg: JsLinkPrefetchData) => String); stage: number; }>
2360+
registerRsdoctorPluginModuleGraphTaps: (stages: Array<number>) => Array<{ function: ((arg: JsRsdoctorModuleGraph) => Promise<boolean | undefined>); stage: number; }>
2361+
registerRsdoctorPluginChunkGraphTaps: (stages: Array<number>) => Array<{ function: ((arg: JsRsdoctorChunkGraph) => Promise<boolean | undefined>); stage: number; }>
2362+
registerRsdoctorPluginModuleIdsTaps: (stages: Array<number>) => Array<{ function: ((arg: JsRsdoctorModuleIdsPatch) => Promise<boolean | undefined>); stage: number; }>
2363+
registerRsdoctorPluginModuleSourcesTaps: (stages: Array<number>) => Array<{ function: ((arg: JsRsdoctorModuleSourcesPatch) => Promise<boolean | undefined>); stage: number; }>
2364+
registerRsdoctorPluginAssetsTaps: (stages: Array<number>) => Array<{ function: ((arg: JsRsdoctorAssetPatch) => Promise<boolean | undefined>); stage: number; }>
21982365
}
21992366

22002367
export interface ThreadsafeNodeFS {

0 commit comments

Comments
 (0)