@module-federation/rspack 0.19.0 → 0.20.0

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.
@@ -0,0 +1,70 @@
1
+ 'use strict';
2
+
3
+ var pBtoa = require('btoa');
4
+ var managers = require('@module-federation/managers');
5
+ var sdk = require('@module-federation/sdk');
6
+
7
+ const isLoggerFactory = (candidate) => typeof candidate === 'function';
8
+ const createBundlerLogger = isLoggerFactory(sdk.createInfrastructureLogger)
9
+ ? (prefix) => sdk.createInfrastructureLogger(prefix)
10
+ : sdk.createLogger;
11
+ const logger = createBundlerLogger('[ Module Federation Rspack Plugin ]');
12
+
13
+ // @ts-ignore
14
+ const charMap = {
15
+ '<': '\\u003C',
16
+ '>': '\\u003E',
17
+ '/': '\\u002F',
18
+ '\\': '\\\\',
19
+ '\b': '\\b',
20
+ '\f': '\\f',
21
+ '\n': '\\n',
22
+ '\r': '\\r',
23
+ '\t': '\\t',
24
+ '\0': '\\0',
25
+ '\u2028': '\\u2028',
26
+ '\u2029': '\\u2029',
27
+ };
28
+ function escapeUnsafeChars(str) {
29
+ return str.replace(/[<>\b\f\n\r\t\0\u2028\u2029\\]/g, (x) => charMap[x]);
30
+ }
31
+ class RemoteEntryPlugin {
32
+ constructor(options) {
33
+ this.name = 'VmokRemoteEntryPlugin';
34
+ this._options = options;
35
+ }
36
+ static addPublicPathEntry(compiler, getPublicPath, name) {
37
+ let code;
38
+ const sanitizedPublicPath = escapeUnsafeChars(getPublicPath);
39
+ if (!getPublicPath.startsWith('function')) {
40
+ code = `${compiler.webpack.RuntimeGlobals.publicPath} = new Function(${JSON.stringify(sanitizedPublicPath)})()`;
41
+ }
42
+ else {
43
+ code = `(${sanitizedPublicPath}())`;
44
+ }
45
+ const base64Code = pBtoa(code);
46
+ const dataUrl = `data:text/javascript;base64,${base64Code}`;
47
+ compiler.hooks.afterPlugins.tap('VmokRemoteEntryPlugin', () => {
48
+ new compiler.webpack.EntryPlugin(compiler.context, dataUrl, {
49
+ name: name,
50
+ }).apply(compiler);
51
+ });
52
+ }
53
+ apply(compiler) {
54
+ const { name, getPublicPath } = this._options;
55
+ if (!getPublicPath || !name) {
56
+ return;
57
+ }
58
+ const containerManager = new managers.ContainerManager();
59
+ containerManager.init(this._options);
60
+ if (!containerManager.enable) {
61
+ logger.warn("Detect you don't set exposes, 'getPublicPath' will not have effect.");
62
+ return;
63
+ }
64
+ RemoteEntryPlugin.addPublicPathEntry(compiler, getPublicPath, name);
65
+ }
66
+ }
67
+
68
+ exports.RemoteEntryPlugin = RemoteEntryPlugin;
69
+ exports.logger = logger;
70
+ //# sourceMappingURL=RemoteEntryPlugin.cjs.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"RemoteEntryPlugin.cjs.js","sources":["../../src/logger.ts","../../src/RemoteEntryPlugin.ts"],"sourcesContent":[null,null],"names":["createInfrastructureLogger","createLogger","ContainerManager"],"mappings":";;;;;;AAQA,MAAM,eAAe,GAAG,CAAC,SAAkB,KACzC,OAAO,SAAS,KAAK,UAAU;AAEjC,MAAM,mBAAmB,GAAkB,eAAe,CACxDA,8BAA0B;MAExB,CAAC,MAAM,KAAKA,8BAA0B,CAAC,MAAM;MAC7CC,gBAAY;AAEhB,MAAM,MAAM,GAAG,mBAAmB,CAAC,qCAAqC;;ACXxE;AAEA,MAAM,OAAO,GAA2B;AACtC,IAAA,GAAG,EAAE,SAAS;AACd,IAAA,GAAG,EAAE,SAAS;AACd,IAAA,GAAG,EAAE,SAAS;AACd,IAAA,IAAI,EAAE,MAAM;AACZ,IAAA,IAAI,EAAE,KAAK;AACX,IAAA,IAAI,EAAE,KAAK;AACX,IAAA,IAAI,EAAE,KAAK;AACX,IAAA,IAAI,EAAE,KAAK;AACX,IAAA,IAAI,EAAE,KAAK;AACX,IAAA,IAAI,EAAE,KAAK;AACX,IAAA,QAAQ,EAAE,SAAS;AACnB,IAAA,QAAQ,EAAE,SAAS;CACpB;AAED,SAAS,iBAAiB,CAAC,GAAW,EAAA;AACpC,IAAA,OAAO,GAAG,CAAC,OAAO,CAAC,iCAAiC,EAAE,CAAC,CAAC,KAAK,OAAO,CAAC,CAAC,CAAC,CAAC;AAC1E;MAEa,iBAAiB,CAAA;AAI5B,IAAA,WAAA,CAAY,OAA6D,EAAA;QAHhE,IAAI,CAAA,IAAA,GAAG,uBAAuB;AAIrC,QAAA,IAAI,CAAC,QAAQ,GAAG,OAAO;;AAGzB,IAAA,OAAO,kBAAkB,CACvB,QAAkB,EAClB,aAAqB,EACrB,IAAY,EAAA;AAEZ,QAAA,IAAI,IAAI;AACR,QAAA,MAAM,mBAAmB,GAAG,iBAAiB,CAAC,aAAa,CAAC;QAE5D,IAAI,CAAC,aAAa,CAAC,UAAU,CAAC,UAAU,CAAC,EAAE;AACzC,YAAA,IAAI,GAAG,CACL,EAAA,QAAQ,CAAC,OAAO,CAAC,cAAc,CAAC,UAClC,CAAA,gBAAA,EAAmB,IAAI,CAAC,SAAS,CAAC,mBAAmB,CAAC,KAAK;;aACtD;AACL,YAAA,IAAI,GAAG,CAAA,CAAA,EAAI,mBAAmB,CAAA,GAAA,CAAK;;AAErC,QAAA,MAAM,UAAU,GAAG,KAAK,CAAC,IAAI,CAAC;AAC9B,QAAA,MAAM,OAAO,GAAG,CAA+B,4BAAA,EAAA,UAAU,EAAE;QAE3D,QAAQ,CAAC,KAAK,CAAC,YAAY,CAAC,GAAG,CAAC,uBAAuB,EAAE,MAAK;YAC5D,IAAI,QAAQ,CAAC,OAAO,CAAC,WAAW,CAAC,QAAQ,CAAC,OAAO,EAAE,OAAO,EAAE;AAC1D,gBAAA,IAAI,EAAE,IAAI;AACX,aAAA,CAAC,CAAC,KAAK,CAAC,QAAQ,CAAC;AACpB,SAAC,CAAC;;AAGJ,IAAA,KAAK,CAAC,QAAkB,EAAA;QACtB,MAAM,EAAE,IAAI,EAAE,aAAa,EAAE,GAAG,IAAI,CAAC,QAAQ;AAC7C,QAAA,IAAI,CAAC,aAAa,IAAI,CAAC,IAAI,EAAE;YAC3B;;AAEF,QAAA,MAAM,gBAAgB,GAAG,IAAIC,yBAAgB,EAAE;AAC/C,QAAA,gBAAgB,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC;AACpC,QAAA,IAAI,CAAC,gBAAgB,CAAC,MAAM,EAAE;AAC5B,YAAA,MAAM,CAAC,IAAI,CACT,qEAAqE,CACtE;YACD;;QAEF,iBAAiB,CAAC,kBAAkB,CAAC,QAAQ,EAAE,aAAa,EAAE,IAAI,CAAC;;AAEtE;;;;;"}
@@ -0,0 +1,67 @@
1
+ import pBtoa from 'btoa';
2
+ import { ContainerManager } from '@module-federation/managers';
3
+ import { createInfrastructureLogger, createLogger } from '@module-federation/sdk';
4
+
5
+ const isLoggerFactory = (candidate) => typeof candidate === 'function';
6
+ const createBundlerLogger = isLoggerFactory(createInfrastructureLogger)
7
+ ? (prefix) => createInfrastructureLogger(prefix)
8
+ : createLogger;
9
+ const logger = createBundlerLogger('[ Module Federation Rspack Plugin ]');
10
+
11
+ // @ts-ignore
12
+ const charMap = {
13
+ '<': '\\u003C',
14
+ '>': '\\u003E',
15
+ '/': '\\u002F',
16
+ '\\': '\\\\',
17
+ '\b': '\\b',
18
+ '\f': '\\f',
19
+ '\n': '\\n',
20
+ '\r': '\\r',
21
+ '\t': '\\t',
22
+ '\0': '\\0',
23
+ '\u2028': '\\u2028',
24
+ '\u2029': '\\u2029',
25
+ };
26
+ function escapeUnsafeChars(str) {
27
+ return str.replace(/[<>\b\f\n\r\t\0\u2028\u2029\\]/g, (x) => charMap[x]);
28
+ }
29
+ class RemoteEntryPlugin {
30
+ constructor(options) {
31
+ this.name = 'VmokRemoteEntryPlugin';
32
+ this._options = options;
33
+ }
34
+ static addPublicPathEntry(compiler, getPublicPath, name) {
35
+ let code;
36
+ const sanitizedPublicPath = escapeUnsafeChars(getPublicPath);
37
+ if (!getPublicPath.startsWith('function')) {
38
+ code = `${compiler.webpack.RuntimeGlobals.publicPath} = new Function(${JSON.stringify(sanitizedPublicPath)})()`;
39
+ }
40
+ else {
41
+ code = `(${sanitizedPublicPath}())`;
42
+ }
43
+ const base64Code = pBtoa(code);
44
+ const dataUrl = `data:text/javascript;base64,${base64Code}`;
45
+ compiler.hooks.afterPlugins.tap('VmokRemoteEntryPlugin', () => {
46
+ new compiler.webpack.EntryPlugin(compiler.context, dataUrl, {
47
+ name: name,
48
+ }).apply(compiler);
49
+ });
50
+ }
51
+ apply(compiler) {
52
+ const { name, getPublicPath } = this._options;
53
+ if (!getPublicPath || !name) {
54
+ return;
55
+ }
56
+ const containerManager = new ContainerManager();
57
+ containerManager.init(this._options);
58
+ if (!containerManager.enable) {
59
+ logger.warn("Detect you don't set exposes, 'getPublicPath' will not have effect.");
60
+ return;
61
+ }
62
+ RemoteEntryPlugin.addPublicPathEntry(compiler, getPublicPath, name);
63
+ }
64
+ }
65
+
66
+ export { RemoteEntryPlugin as R, logger as l };
67
+ //# sourceMappingURL=RemoteEntryPlugin.esm.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"RemoteEntryPlugin.esm.mjs","sources":["../../src/logger.ts","../../src/RemoteEntryPlugin.ts"],"sourcesContent":[null,null],"names":[],"mappings":";;;;AAQA,MAAM,eAAe,GAAG,CAAC,SAAkB,KACzC,OAAO,SAAS,KAAK,UAAU;AAEjC,MAAM,mBAAmB,GAAkB,eAAe,CACxD,0BAA0B;MAExB,CAAC,MAAM,KAAK,0BAA0B,CAAC,MAAM;MAC7C,YAAY;AAEhB,MAAM,MAAM,GAAG,mBAAmB,CAAC,qCAAqC;;ACXxE;AAEA,MAAM,OAAO,GAA2B;AACtC,IAAA,GAAG,EAAE,SAAS;AACd,IAAA,GAAG,EAAE,SAAS;AACd,IAAA,GAAG,EAAE,SAAS;AACd,IAAA,IAAI,EAAE,MAAM;AACZ,IAAA,IAAI,EAAE,KAAK;AACX,IAAA,IAAI,EAAE,KAAK;AACX,IAAA,IAAI,EAAE,KAAK;AACX,IAAA,IAAI,EAAE,KAAK;AACX,IAAA,IAAI,EAAE,KAAK;AACX,IAAA,IAAI,EAAE,KAAK;AACX,IAAA,QAAQ,EAAE,SAAS;AACnB,IAAA,QAAQ,EAAE,SAAS;CACpB;AAED,SAAS,iBAAiB,CAAC,GAAW,EAAA;AACpC,IAAA,OAAO,GAAG,CAAC,OAAO,CAAC,iCAAiC,EAAE,CAAC,CAAC,KAAK,OAAO,CAAC,CAAC,CAAC,CAAC;AAC1E;MAEa,iBAAiB,CAAA;AAI5B,IAAA,WAAA,CAAY,OAA6D,EAAA;QAHhE,IAAI,CAAA,IAAA,GAAG,uBAAuB;AAIrC,QAAA,IAAI,CAAC,QAAQ,GAAG,OAAO;;AAGzB,IAAA,OAAO,kBAAkB,CACvB,QAAkB,EAClB,aAAqB,EACrB,IAAY,EAAA;AAEZ,QAAA,IAAI,IAAI;AACR,QAAA,MAAM,mBAAmB,GAAG,iBAAiB,CAAC,aAAa,CAAC;QAE5D,IAAI,CAAC,aAAa,CAAC,UAAU,CAAC,UAAU,CAAC,EAAE;AACzC,YAAA,IAAI,GAAG,CACL,EAAA,QAAQ,CAAC,OAAO,CAAC,cAAc,CAAC,UAClC,CAAA,gBAAA,EAAmB,IAAI,CAAC,SAAS,CAAC,mBAAmB,CAAC,KAAK;;aACtD;AACL,YAAA,IAAI,GAAG,CAAA,CAAA,EAAI,mBAAmB,CAAA,GAAA,CAAK;;AAErC,QAAA,MAAM,UAAU,GAAG,KAAK,CAAC,IAAI,CAAC;AAC9B,QAAA,MAAM,OAAO,GAAG,CAA+B,4BAAA,EAAA,UAAU,EAAE;QAE3D,QAAQ,CAAC,KAAK,CAAC,YAAY,CAAC,GAAG,CAAC,uBAAuB,EAAE,MAAK;YAC5D,IAAI,QAAQ,CAAC,OAAO,CAAC,WAAW,CAAC,QAAQ,CAAC,OAAO,EAAE,OAAO,EAAE;AAC1D,gBAAA,IAAI,EAAE,IAAI;AACX,aAAA,CAAC,CAAC,KAAK,CAAC,QAAQ,CAAC;AACpB,SAAC,CAAC;;AAGJ,IAAA,KAAK,CAAC,QAAkB,EAAA;QACtB,MAAM,EAAE,IAAI,EAAE,aAAa,EAAE,GAAG,IAAI,CAAC,QAAQ;AAC7C,QAAA,IAAI,CAAC,aAAa,IAAI,CAAC,IAAI,EAAE;YAC3B;;AAEF,QAAA,MAAM,gBAAgB,GAAG,IAAI,gBAAgB,EAAE;AAC/C,QAAA,gBAAgB,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC;AACpC,QAAA,IAAI,CAAC,gBAAgB,CAAC,MAAM,EAAE;AAC5B,YAAA,MAAM,CAAC,IAAI,CACT,qEAAqE,CACtE;YACD;;QAEF,iBAAiB,CAAC,kBAAkB,CAAC,QAAQ,EAAE,aAAa,EAAE,IAAI,CAAC;;AAEtE;;;;"}
package/dist/index.cjs.js CHANGED
@@ -3,8 +3,8 @@
3
3
  var plugin = require('./plugin.cjs.js');
4
4
  var core = require('@rspack/core');
5
5
 
6
- var ContainerPlugin = core.container.ContainerPlugin;
7
- var ContainerReferencePlugin = core.container.ContainerReferencePlugin;
6
+ const ContainerPlugin = core.container.ContainerPlugin;
7
+ const ContainerReferencePlugin = core.container.ContainerReferencePlugin;
8
8
 
9
9
  exports.ModuleFederationPlugin = plugin.ModuleFederationPlugin;
10
10
  exports.PLUGIN_NAME = plugin.PLUGIN_NAME;
@@ -1 +1 @@
1
- {"version":3,"file":"index.cjs.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;"}
1
+ {"version":3,"file":"index.cjs.js","sources":["../../src/index.ts"],"sourcesContent":[null],"names":["container"],"mappings":";;;;;AAEa,MAAA,eAAe,GAAGA,cAAS,CAAC;AAC5B,MAAA,wBAAwB,GAAGA,cAAS,CAAC;;;;;;;"}
@@ -1,8 +1,8 @@
1
1
  export { ModuleFederationPlugin, PLUGIN_NAME } from './plugin.esm.mjs';
2
2
  import { container } from '@rspack/core';
3
3
 
4
- var ContainerPlugin = container.ContainerPlugin;
5
- var ContainerReferencePlugin = container.ContainerReferencePlugin;
4
+ const ContainerPlugin = container.ContainerPlugin;
5
+ const ContainerReferencePlugin = container.ContainerReferencePlugin;
6
6
 
7
7
  export { ContainerPlugin, ContainerReferencePlugin };
8
8
  //# sourceMappingURL=index.esm.mjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.esm.mjs","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;"}
1
+ {"version":3,"file":"index.esm.mjs","sources":["../../src/index.ts"],"sourcesContent":[null],"names":[],"mappings":";;;AAEa,MAAA,eAAe,GAAG,SAAS,CAAC;AAC5B,MAAA,wBAAwB,GAAG,SAAS,CAAC;;;;"}