Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

WIP: use runtime api #2908

Open
wants to merge 124 commits into
base: main
Choose a base branch
from
Open
Changes from 1 commit
Commits
Show all changes
124 commits
Select commit Hold shift + click to select a range
329e7c8
feat: async chunk startup
ScriptedAlchemy Aug 1, 2024
f7b685e
feat: async chunk startup
ScriptedAlchemy Aug 6, 2024
5483925
Merge branch 'refs/heads/main' into feat/async-entry-startup
ScriptedAlchemy Aug 6, 2024
aeef5a5
feat: async chunk startup
ScriptedAlchemy Aug 6, 2024
c8227ad
Merge branch 'refs/heads/main' into feat/async-entry-startup
ScriptedAlchemy Aug 6, 2024
6eda7ab
chore: locks
ScriptedAlchemy Aug 6, 2024
2b55aa1
fix: next server startup
ScriptedAlchemy Aug 8, 2024
24c429d
feat: embed runtime
ScriptedAlchemy Aug 14, 2024
52e67d8
feat: embed runtime
ScriptedAlchemy Aug 15, 2024
f2fcea5
fix: early return runtime module if exists on compile
ScriptedAlchemy Aug 15, 2024
386e67f
Merge branch 'main' into feat/embed-runtime
ScriptedAlchemy Aug 15, 2024
392f2f1
fix(enhanced): split runtime from chunk content
ScriptedAlchemy Aug 16, 2024
4e0bd89
Merge branch 'main' into feat/embed-runtime
ScriptedAlchemy Aug 16, 2024
48cd80a
chore: improve child compiler
ScriptedAlchemy Aug 16, 2024
80990b9
chore: improve child compiler
ScriptedAlchemy Aug 19, 2024
ac8de04
chore: improve child compiler
ScriptedAlchemy Aug 19, 2024
dd93b8c
fix(nextjs-mf): re-enable module hoisting
ScriptedAlchemy Aug 19, 2024
6dfcd89
Merge branch 'main' into feat/embed-runtime
ScriptedAlchemy Aug 19, 2024
0cca993
fix(enhanced): refactor runtime module addition hooks
ScriptedAlchemy Aug 19, 2024
fe8477e
fix(enhanced): refactor runtime module addition hooks
ScriptedAlchemy Aug 19, 2024
542da0c
fix(enhanced): runtime requirement once for chunk set
ScriptedAlchemy Aug 19, 2024
f14d9db
fix: enable chunk hoisting
ScriptedAlchemy Aug 20, 2024
04d615e
chore: next in working state again
ScriptedAlchemy Aug 21, 2024
4b5c62f
fix: improve module hoisting
ScriptedAlchemy Aug 21, 2024
88dc18c
fix: improve module hoisting
ScriptedAlchemy Aug 21, 2024
fa90cc2
chore: lint
ScriptedAlchemy Aug 21, 2024
3380f31
Merge branch 'main' into embed-next-wotrking
ScriptedAlchemy Aug 21, 2024
2f39075
chore: update deps
ScriptedAlchemy Aug 21, 2024
371c73e
chore: fix types
ScriptedAlchemy Aug 22, 2024
8068644
fix: prevent runtime module injection on mini css
ScriptedAlchemy Aug 22, 2024
db6d311
fix(enhanced): fix missing module cache crash in macro
ScriptedAlchemy Aug 22, 2024
452136e
fix(enhanced): fix missing module cache crash in macro
ScriptedAlchemy Aug 22, 2024
163c1ab
fix(enhanced): fix runtime requirements chuck on single entry runtime
ScriptedAlchemy Aug 22, 2024
3ed827d
fix(enhanced): fix runtime requirements chuck on single entry runtime
ScriptedAlchemy Aug 22, 2024
7e9b323
fix(enhanced): fix runtime requirements chuck on single entry runtime
ScriptedAlchemy Aug 22, 2024
9d8849e
fix(enhanced): use normal webpack version
ScriptedAlchemy Aug 22, 2024
d9245b0
fix(enhanced): use normal webpack version
ScriptedAlchemy Aug 22, 2024
58b5287
fix(enhanced): use and set chunk runtime requirements not tree requir…
ScriptedAlchemy Aug 22, 2024
f8c1429
Merge branch 'main' into embed-next-wotrking
ScriptedAlchemy Aug 22, 2024
935d745
fix(enhanced): use and set chunk runtime requirements not tree requir…
ScriptedAlchemy Aug 22, 2024
6d1bcf0
fix(enhanced): use and set chunk runtime requirements not tree requir…
ScriptedAlchemy Aug 22, 2024
1377301
chore: update webpack types
ScriptedAlchemy Aug 22, 2024
a93ccf8
fix: resolve type match issues with webpack
ScriptedAlchemy Aug 23, 2024
1835c31
chore: use tree runtime requirement
ScriptedAlchemy Aug 23, 2024
770d6ac
chore: use tree runtime requirement
ScriptedAlchemy Aug 23, 2024
6f6fbe3
fix(nextjs-mf): add container embedding back for now
ScriptedAlchemy Aug 23, 2024
4d49017
fix(enhanced): inject runtime module into apps missing other requrements
ScriptedAlchemy Aug 23, 2024
d6428d9
fix(enhanced): implement fs cache
ScriptedAlchemy Aug 23, 2024
83b9684
fix(enhanced): fix runtime requiremetns additions
ScriptedAlchemy Aug 24, 2024
c1f1db5
fix(enhanced): simplify chunk tree requirements
ScriptedAlchemy Aug 24, 2024
13ef415
Merge branch 'main' into embed-next-wotrking
ScriptedAlchemy Aug 24, 2024
e898b50
chore: clean up types
ScriptedAlchemy Aug 24, 2024
8f4f253
fix: clean up loggers
ScriptedAlchemy Aug 24, 2024
2e87014
chore: changesets
ScriptedAlchemy Aug 24, 2024
fd67a66
Merge branch 'main' into embed-next-wotrking
ScriptedAlchemy Aug 28, 2024
6da5201
feat(enhanced): drop child compiler from runtime module (#2884)
ScriptedAlchemy Aug 28, 2024
fc0c80d
chore: remove useless changes
ScriptedAlchemy Aug 28, 2024
38f9503
Merge branch 'main' into embed-next-wotrking
ScriptedAlchemy Aug 29, 2024
c45d834
chore: update ignore
ScriptedAlchemy Aug 29, 2024
e76b7dc
chore: update ignore
ScriptedAlchemy Aug 29, 2024
10a06a7
chore: reset global ts
ScriptedAlchemy Aug 29, 2024
d8f8d45
chore: reset container entry module
ScriptedAlchemy Aug 29, 2024
05152f1
chore: update gitignore
ScriptedAlchemy Aug 29, 2024
4d5ae5e
chore: reset example code
ScriptedAlchemy Aug 29, 2024
963c781
chore: formatting
ScriptedAlchemy Aug 29, 2024
658680b
chore: preserve child compiler plugin version from git history
ScriptedAlchemy Aug 29, 2024
583dd0d
chore: remove commented out code
ScriptedAlchemy Aug 29, 2024
f3992a1
fix(enhanced): fix type issue on runtime plugin
ScriptedAlchemy Aug 29, 2024
8998977
fix(enhanced): rename plugins
ScriptedAlchemy Aug 29, 2024
17a24b7
fix(enhanced): remove logs
ScriptedAlchemy Aug 29, 2024
5315492
Merge branch 'main' into feat/embed-runtime
ScriptedAlchemy Aug 29, 2024
e5e25f1
Merge branch 'feat/embed-runtime' into embed-next-wotrking
ScriptedAlchemy Aug 29, 2024
66be91a
fix(enhanced): remove logs
ScriptedAlchemy Aug 29, 2024
a6823cf
Merge branch 'main' into feat/embed-runtime
ScriptedAlchemy Aug 29, 2024
50c12dc
Merge branch 'feat/embed-runtime' into embed-next-wotrking
ScriptedAlchemy Aug 29, 2024
c19449e
fix(enhanced): enable federation runtime always
ScriptedAlchemy Aug 29, 2024
06f5717
fix(enhanced): enable federation runtime always
ScriptedAlchemy Aug 29, 2024
5df5856
fix(enhanced): fix merge issues
ScriptedAlchemy Aug 29, 2024
6383d6e
fix(enhanced): fix merge issues
ScriptedAlchemy Aug 29, 2024
dd885d7
fix(enhanced): fix merge issues
ScriptedAlchemy Aug 29, 2024
e3889cb
Merge branch 'main' into embed-next-wotrking
ScriptedAlchemy Aug 29, 2024
ba22ba7
chore: ignore cypress/downloads
ScriptedAlchemy Aug 29, 2024
1482dfd
Merge remote-tracking branch 'origin/main' into embed-next-wotrking
ScriptedAlchemy Aug 29, 2024
999263f
Merge branch 'main' into embed-next-wotrking
ScriptedAlchemy Aug 30, 2024
f963915
Merge branch 'main' into feat/embed-runtime
ScriptedAlchemy Aug 30, 2024
f70f97c
Merge branch 'feat/embed-runtime' into embed-next-wotrking
ScriptedAlchemy Aug 30, 2024
caf9bb3
fix(enhanced): remove embedded runtime resolve paths
ScriptedAlchemy Aug 30, 2024
0b1fd2b
Merge branch 'feat/embed-runtime' into embed-next-wotrking
ScriptedAlchemy Aug 30, 2024
8007020
chore: enable embed runtime (#2900)
2heal1 Aug 30, 2024
d1c7980
fix(enhanced): remove embedded runtime resolve paths
ScriptedAlchemy Aug 30, 2024
f3e297b
Merge branch 'main' into embed-next-wotrking
ScriptedAlchemy Aug 30, 2024
d232bb8
chore(nextjs-mf): replace some type imports
ScriptedAlchemy Aug 30, 2024
5a68c1b
chore(nextjs-mf): replace some type imports
ScriptedAlchemy Aug 30, 2024
db16bc6
chore(nextjs-mf): replace some type imports
ScriptedAlchemy Aug 30, 2024
535b310
chore(nextjs-mf): replace some type imports
ScriptedAlchemy Aug 30, 2024
2aaff9d
chore(nextjs-mf): replace some type imports
ScriptedAlchemy Aug 30, 2024
7ba706a
feat(enhanced): eager runtime (#2874)
ScriptedAlchemy Aug 30, 2024
e9dd267
Merge branch 'main' into feat/embed-runtime
ScriptedAlchemy Aug 30, 2024
8b78b5c
chore: use runtime api demo
2heal1 Aug 30, 2024
6f05560
Merge branch 'main' into chore/use-runtime-api
ScriptedAlchemy Aug 30, 2024
9902b10
Merge branch 'feat/embed-runtime' into chore/use-runtime-api
ScriptedAlchemy Aug 30, 2024
5b5b1b5
fix(enhanced): startup helper check runtime reqs of handler
ScriptedAlchemy Aug 30, 2024
af054d4
Merge branch 'feat/embed-runtime' into chore/use-runtime-api
ScriptedAlchemy Aug 30, 2024
3610464
fix(enhanced): startup helper check runtime reqs of handler
ScriptedAlchemy Aug 30, 2024
5a79281
Merge branch 'feat/embed-runtime' into chore/use-runtime-api
ScriptedAlchemy Aug 30, 2024
8698b54
fix(enhanced): startup helper check runtime reqs of handler
ScriptedAlchemy Aug 30, 2024
70d8547
fix(enhanced): startup helper check runtime reqs of handler
ScriptedAlchemy Aug 30, 2024
fef2d67
fix(enhanced): startup helper check runtime reqs of handler
ScriptedAlchemy Aug 30, 2024
912f492
Merge branch 'feat/embed-runtime' into chore/use-runtime-api
ScriptedAlchemy Aug 30, 2024
05a20b2
Merge remote-tracking branch 'origin/chore/use-runtime-api' into chor…
ScriptedAlchemy Aug 30, 2024
3d4c8bb
fix(enhanced): startup helper check runtime reqs of handler
ScriptedAlchemy Aug 30, 2024
2dacf87
fix(enhanced): startup helper check runtime reqs of handler
ScriptedAlchemy Aug 30, 2024
adad550
Merge branch 'feat/embed-runtime' into chore/use-runtime-api
ScriptedAlchemy Aug 30, 2024
00ab0d7
fix(enhanced): set bundler runtime as used in unknown way
ScriptedAlchemy Aug 30, 2024
69b295a
fix(enhanced): pass entry and bundler runtime to hoist plugin
ScriptedAlchemy Aug 31, 2024
203337e
ci: update build for next dev and prod jobs
ScriptedAlchemy Aug 31, 2024
4085f41
ci: update build for next dev and prod jobs
ScriptedAlchemy Aug 31, 2024
8c7d8d2
ci: update build for next dev and prod jobs
ScriptedAlchemy Aug 31, 2024
e8f238f
Merge branch 'main' into feat/embed-runtime
ScriptedAlchemy Aug 31, 2024
dd1e74e
Merge branch 'feat/embed-runtime' into chore/use-runtime-api
ScriptedAlchemy Aug 31, 2024
7156105
fix(enhanced): do not use embedded bundler runtime
ScriptedAlchemy Sep 2, 2024
3c66f93
fix(enhanced): do not use embedded bundler runtime
ScriptedAlchemy Sep 2, 2024
04d47ff
fix(enhanced): align wrapper plugins with actual
ScriptedAlchemy Sep 2, 2024
78e367c
Merge branch 'feat/embed-runtime' into chore/use-runtime-api
ScriptedAlchemy Sep 3, 2024
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Prev Previous commit
Next Next commit
Merge branch 'main' into feat/embed-runtime
# Conflicts:
#	packages/enhanced/src/lib/container/ModuleFederationPlugin.ts
#	packages/enhanced/src/lib/container/runtime/FederationRuntimePlugin.ts
#	packages/nextjs-mf/src/plugins/NextFederationPlugin/index.ts
#	packages/nextjs-mf/src/plugins/container/runtimePlugin.ts
#	packages/sdk/src/types/plugins/ModuleFederationPlugin.ts
#	webpack/lib/Compiler.d.ts
#	webpack/types.d.ts
ScriptedAlchemy committed Aug 29, 2024
commit 5315492b89c3865ee2a28b0f9f0fa70eba70056b
17 changes: 1 addition & 16 deletions packages/enhanced/src/lib/container/ModuleFederationPlugin.ts
Original file line number Diff line number Diff line change
@@ -19,29 +19,14 @@ import ContainerReferencePlugin from './ContainerReferencePlugin';
import FederationRuntimePlugin from './runtime/FederationRuntimePlugin';
import { RemoteEntryPlugin } from './runtime/RemoteEntryPlugin';
import { ExternalsType } from 'webpack/declarations/WebpackOptions';
import StartupChunkDependenciesPlugin from '../startup/MfStartupChunkDependenciesPlugin';

const isValidExternalsType = require(
normalizeWebpackPath(
'webpack/schemas/plugins/container/ExternalsType.check.js',
),
) as typeof import('webpack/schemas/plugins/container/ExternalsType.check.js');

const createSchemaValidation = require(
normalizeWebpackPath('webpack/lib/util/create-schema-validation'),
) as typeof import('webpack/lib/util/create-schema-validation');
//@ts-ignore
import StartupChunkDependenciesPlugin from '../startup/MfStartupChunkDependenciesPlugin';

const validate = createSchemaValidation(
// just use schema to validate
() => true,
() => schema,
{
name: 'Module Federation Plugin',
baseDataPath: 'options',
},
);

class ModuleFederationPlugin implements WebpackPluginInstance {
private _options: moduleFederationPlugin.ModuleFederationPluginOptions;
private _statsPlugin?: StatsPlugin;
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
import type { Compiler, Chunk } from 'webpack';
import type { Compiler, Chunk, WebpackPluginInstance } from 'webpack';
import { normalizeWebpackPath } from '@module-federation/sdk/normalize-webpack-path';
import FederationRuntimeModule from './FederationRuntimeModule';
import type { moduleFederationPlugin } from '@module-federation/sdk';
@@ -13,6 +13,7 @@ import fs from 'fs';
import path from 'path';
import { TEMP_DIR } from '../constant';
import CustomRuntimePlugin from './CustomRuntimePlugin';
import pBtoa from 'btoa';

const { RuntimeGlobals, Template } = require(
normalizeWebpackPath('webpack'),
@@ -162,12 +163,21 @@ class FederationRuntimePlugin {
return '';
}

this.entryFilePath = FederationRuntimePlugin.getFilePath(
this.options.name!,
this.options.runtimePlugins!,
this.bundlerRuntimePath,
this.options.embedRuntime,
);
if (!this.options?.virtualRuntimeEntry) {
this.entryFilePath = FederationRuntimePlugin.getFilePath(
this.options.name!,
this.options.runtimePlugins!,
this.bundlerRuntimePath,
this.options.embedRuntime,
);
} else {
this.entryFilePath = `data:text/javascript;charset=utf-8;base64,${pBtoa(
FederationRuntimePlugin.getTemplate(
this.options.runtimePlugins!,
this.bundlerRuntimePath,
),
)}`;
}
return this.entryFilePath;
}

Original file line number Diff line number Diff line change
@@ -198,6 +198,7 @@ export class NextFederationPlugin {
: { manifest: { filePath: '/static/chunks' } }),
// nextjs project needs to add config.watchOptions = ['**/node_modules/**', '**/@mf-types/**'] to prevent loop types update
dts: this._options.dts ?? false,
shareStrategy: this._options.shareStrategy ?? 'loaded-first',
embedRuntime: true,
};
}
17 changes: 1 addition & 16 deletions packages/nextjs-mf/src/plugins/container/runtimePlugin.ts
Original file line number Diff line number Diff line change
@@ -61,23 +61,8 @@ export default function (): FederationRuntimePlugin {

return mod;
},
beforeInit: function (args: any) {
var userOptions = args.userOptions;
var shareInfo = args.shareInfo;
var shared = userOptions.shared;
beforeInit: function (args) {
if (!globalThis.usedChunks) globalThis.usedChunks = new Set();
if (shared) {
Object.keys(shared || {}).forEach(function (sharedKey) {
var rawShared = shared[sharedKey];
var arrayShared = Array.isArray(rawShared) ? rawShared : [rawShared];
arrayShared.forEach(function (s) {
if (!s.strategy) {
s.strategy = 'loaded-first';
}
});
});
}

if (
typeof __webpack_runtime_id__ === 'string' &&
!__webpack_runtime_id__.startsWith('webpack')
3 changes: 2 additions & 1 deletion packages/sdk/src/types/plugins/ModuleFederationPlugin.ts
Original file line number Diff line number Diff line change
@@ -226,8 +226,9 @@ export interface ModuleFederationPluginOptions {

dev?: boolean | PluginDevOptions;
dts?: boolean | PluginDtsOptions;
async?: boolean;
async?: boolean | AsyncBoundaryOptions;
embedRuntime?: boolean;
virtualRuntimeEntry?: boolean;
}
/**
* Modules that should be exposed by this container. Property names are used as public paths.
2 changes: 1 addition & 1 deletion webpack/lib/Compiler.d.ts
Original file line number Diff line number Diff line change
@@ -35,7 +35,7 @@ declare class Compiler {
afterResolvers: SyncHook<[Compiler]>;
entryOption: SyncBailHook<[string, EntryNormalized], boolean>;
}>;
webpack: typeof exports;
webpack: typeof import('../types');
name?: string;
parentCompilation?: Compilation;
root: Compiler;
122 changes: 0 additions & 122 deletions webpack/types.d.ts
Original file line number Diff line number Diff line change
@@ -836,129 +836,7 @@ declare interface CompilationParams {
normalModuleFactory: NormalModuleFactory;
contextModuleFactory: ContextModuleFactory;
}
declare class Compiler {
constructor(context: string, options?: WebpackOptionsNormalized);
hooks: Readonly<{
initialize: SyncHook<[]>;
shouldEmit: SyncBailHook<[Compilation], undefined | boolean>;
done: AsyncSeriesHook<[Stats]>;
afterDone: SyncHook<[Stats]>;
additionalPass: AsyncSeriesHook<[]>;
beforeRun: AsyncSeriesHook<[Compiler]>;
run: AsyncSeriesHook<[Compiler]>;
emit: AsyncSeriesHook<[Compilation]>;
assetEmitted: AsyncSeriesHook<[string, AssetEmittedInfo]>;
afterEmit: AsyncSeriesHook<[Compilation]>;
thisCompilation: SyncHook<[Compilation, CompilationParams]>;
compilation: SyncHook<[Compilation, CompilationParams]>;
normalModuleFactory: SyncHook<[NormalModuleFactory]>;
contextModuleFactory: SyncHook<[ContextModuleFactory]>;
beforeCompile: AsyncSeriesHook<[CompilationParams]>;
compile: SyncHook<[CompilationParams]>;
make: AsyncParallelHook<[Compilation]>;
finishMake: AsyncParallelHook<[Compilation]>;
afterCompile: AsyncSeriesHook<[Compilation]>;
readRecords: AsyncSeriesHook<[]>;
emitRecords: AsyncSeriesHook<[]>;
watchRun: AsyncSeriesHook<[Compiler]>;
failed: SyncHook<[Error]>;
invalid: SyncHook<[null | string, number]>;
watchClose: SyncHook<[]>;
shutdown: AsyncSeriesHook<[]>;
infrastructureLog: SyncBailHook<[string, string, any[]], true>;
environment: SyncHook<[]>;
afterEnvironment: SyncHook<[]>;
afterPlugins: SyncHook<[Compiler]>;
afterResolvers: SyncHook<[Compiler]>;
entryOption: SyncBailHook<[string, EntryNormalized], boolean>;
}>;
webpack: typeof exports;
name?: string;
parentCompilation?: Compilation;
root: Compiler;
outputPath: string;
watching?: Watching;
outputFileSystem: null | OutputFileSystem;
intermediateFileSystem: null | IntermediateFileSystem;
inputFileSystem: null | InputFileSystem;
watchFileSystem: null | WatchFileSystem;
recordsInputPath: null | string;
recordsOutputPath: null | string;
records: Record<string, any>;
managedPaths: Set<string | RegExp>;
unmanagedPaths: Set<string | RegExp>;
immutablePaths: Set<string | RegExp>;
modifiedFiles?: ReadonlySet<string>;
removedFiles?: ReadonlySet<string>;
fileTimestamps?: ReadonlyMap<string, null | FileSystemInfoEntry | 'ignore'>;
contextTimestamps?: ReadonlyMap<
string,
null | FileSystemInfoEntry | 'ignore'
>;
fsStartTime?: number;
resolverFactory: ResolverFactory;
infrastructureLogger?: (arg0: string, arg1: LogTypeEnum, arg2: any[]) => void;
platform: Readonly<PlatformTargetProperties>;
options: WebpackOptionsNormalized;
context: string;
requestShortener: RequestShortener;
cache: Cache;
moduleMemCaches?: Map<
Module,
{
buildInfo: BuildInfo;
references?: WeakMap<Dependency, Module>;
memCache: WeakTupleMap<any, any>;
}
>;
compilerPath: string;
running: boolean;
idle: boolean;
watchMode: boolean;
getCache(name: string): CacheFacade;
getInfrastructureLogger(name: string | (() => string)): WebpackLogger;
watch(watchOptions: WatchOptions, handler: RunCallback<Stats>): Watching;
run(callback: RunCallback<Stats>): void;
runAsChild(
callback: (
err: null | Error,
entries?: Chunk[],
compilation?: Compilation,
) => any,
): void;
purgeInputFileSystem(): void;
emitAssets(
compilation: Compilation,
callback: CallbackFunction_2<void>,
): void;
emitRecords(callback: CallbackFunction_2<void>): void;
readRecords(callback: CallbackFunction_2<void>): void;
createChildCompiler(
compilation: Compilation,
compilerName: string,
compilerIndex: number,
outputOptions?: OutputNormalized,
plugins?: WebpackPluginInstance[],
): Compiler;
isChild(): boolean;
createCompilation(params: CompilationParams): Compilation;
newCompilation(params: CompilationParams): Compilation;
createNormalModuleFactory(): NormalModuleFactory;
createContextModuleFactory(): ContextModuleFactory;
newCompilationParams(): {
normalModuleFactory: NormalModuleFactory;
contextModuleFactory: ContextModuleFactory;
};
compile(callback: RunCallback<Compilation>): void;
close(callback: RunCallback<void>): void;
}

declare class ConcatSource extends Source {
constructor(...args: (string | Source)[]);
getChildren(): Source[];
add(item: string | Source): void;
addAllSkipOptimizing(items: Source[]): void;
}
declare interface ConcatenatedModuleInfo {
index: number;
module: Module;
You are viewing a condensed version of this merge commit. You can view the full changes here.