@module-federation/data-prefetch 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.
@@ -5,7 +5,7 @@ var path = require('path');
5
5
  const attribute = 'id';
6
6
  const hookId = 'usePrefetch';
7
7
  const importPackage = '@module-federation/data-prefetch/react';
8
- var babel = ((babel, options)=>{
8
+ var babel = (babel, options) => {
9
9
  const t = babel.types;
10
10
  let shouldHandle = false;
11
11
  let scope = '';
@@ -14,33 +14,41 @@ var babel = ((babel, options)=>{
14
14
  return {};
15
15
  }
16
16
  const exposesKey = Object.keys(exposes);
17
- const processedExposes = exposesKey.map((expose)=>({
18
- key: expose.replace('.', ''),
19
- value: path.resolve(typeof exposes[expose] === 'string' ? exposes[expose] : exposes[expose].import)
20
- }));
17
+ const processedExposes = exposesKey.map((expose) => ({
18
+ key: expose.replace('.', ''),
19
+ value: path.resolve(typeof exposes[expose] === 'string'
20
+ ?
21
+ exposes[expose]
22
+ :
23
+ exposes[expose].import),
24
+ }));
21
25
  return {
22
26
  visitor: {
23
- ImportDeclaration (nodePath, state) {
27
+ ImportDeclaration(nodePath, state) {
24
28
  const source = nodePath.node.source.value;
25
29
  const { specifiers } = nodePath.node;
26
30
  const { filename } = state.file.opts;
27
31
  if (source === importPackage) {
28
- shouldHandle = specifiers.some((specifier)=>specifier.imported && specifier.imported.name === hookId && processedExposes.find((expose)=>expose.value === filename && (scope = expose.key)));
32
+ shouldHandle = specifiers.some((specifier) => specifier.imported &&
33
+ specifier.imported.name === hookId &&
34
+ processedExposes.find((expose) => expose.value === filename && (scope = expose.key)));
29
35
  }
30
36
  },
31
- CallExpression (nodePath) {
32
- if (shouldHandle && t.isIdentifier(nodePath.node.callee, {
33
- name: hookId
34
- }) && nodePath.node.arguments.length > 0) {
37
+ CallExpression(nodePath) {
38
+ if (shouldHandle &&
39
+ t.isIdentifier(nodePath.node.callee, { name: hookId }) &&
40
+ nodePath.node.arguments.length > 0) {
35
41
  const objectExpression = nodePath.node.arguments[0];
36
- if (objectExpression && t.isObjectExpression(objectExpression) && !objectExpression.properties.find((p)=>p.key.name === attribute)) {
42
+ if (objectExpression &&
43
+ t.isObjectExpression(objectExpression) &&
44
+ !objectExpression.properties.find((p) => p.key.name === attribute)) {
37
45
  objectExpression.properties.push(t.objectProperty(t.identifier(attribute), t.stringLiteral(name + scope)));
38
46
  }
39
47
  }
40
- }
41
- }
48
+ },
49
+ },
42
50
  };
43
- });
51
+ };
44
52
 
45
53
  module.exports = babel;
46
54
  //# sourceMappingURL=babel.cjs.cjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"babel.cjs.cjs","sources":["../src/cli/babel.ts"],"sourcesContent":["import path from 'path';\nconst attribute = 'id';\nconst hookId = 'usePrefetch';\nconst importPackage = '@module-federation/data-prefetch/react';\nexport default (babel, options) => {\n const t = babel.types;\n let shouldHandle = false;\n let scope = '';\n const { name, exposes } = options;\n if (!exposes) {\n return {};\n }\n const exposesKey = Object.keys(exposes);\n const processedExposes = exposesKey.map((expose) => ({\n key: expose.replace('.', ''),\n value: path.resolve(typeof exposes[expose] === 'string'\n ?\n exposes[expose]\n :\n exposes[expose].import),\n }));\n return {\n visitor: {\n ImportDeclaration(nodePath, state) {\n const source = nodePath.node.source.value;\n const { specifiers } = nodePath.node;\n const { filename } = state.file.opts;\n if (source === importPackage) {\n shouldHandle = specifiers.some((specifier) => specifier.imported &&\n specifier.imported.name === hookId &&\n processedExposes.find((expose) => expose.value === filename && (scope = expose.key)));\n }\n },\n CallExpression(nodePath) {\n if (shouldHandle &&\n t.isIdentifier(nodePath.node.callee, { name: hookId }) &&\n nodePath.node.arguments.length > 0) {\n const objectExpression = nodePath.node.arguments[0];\n if (objectExpression &&\n t.isObjectExpression(objectExpression) &&\n !objectExpression.properties.find((p) => p.key.name === attribute)) {\n objectExpression.properties.push(t.objectProperty(t.identifier(attribute), t.stringLiteral(name + scope)));\n }\n }\n },\n },\n };\n};\n"],"names":["attribute","hookId","importPackage","babel","options","t","types","shouldHandle","scope","name","exposes","exposesKey","Object","keys","processedExposes","map","expose","key","replace","value","path","resolve","import","visitor","ImportDeclaration","nodePath","state","source","node","specifiers","filename","file","opts","some","specifier","imported","find","CallExpression","isIdentifier","callee","arguments","length","objectExpression","isObjectExpression","properties","p","push","objectProperty","identifier","stringLiteral"],"mappings":";;;;AACA,MAAMA,SAAY,GAAA,IAAA;AAClB,MAAMC,MAAS,GAAA,aAAA;AACf,MAAMC,aAAgB,GAAA,wCAAA;AACtB,YAAe,CAAA,CAACC,KAAOC,EAAAA,OAAAA,GAAAA;IACnB,MAAMC,CAAAA,GAAIF,MAAMG,KAAK;AACrB,IAAA,IAAIC,YAAe,GAAA,KAAA;AACnB,IAAA,IAAIC,KAAQ,GAAA,EAAA;AACZ,IAAA,MAAM,EAAEC,IAAI,EAAEC,OAAO,EAAE,GAAGN,OAAAA;AAC1B,IAAA,IAAI,CAACM,OAAS,EAAA;AACV,QAAA,OAAO,EAAC;AACZ;IACA,MAAMC,UAAAA,GAAaC,MAAOC,CAAAA,IAAI,CAACH,OAAAA,CAAAA;AAC/B,IAAA,MAAMI,mBAAmBH,UAAWI,CAAAA,GAAG,CAAC,CAACC,UAAY;YACjDC,GAAKD,EAAAA,MAAAA,CAAOE,OAAO,CAAC,GAAK,EAAA,EAAA,CAAA;AACzBC,YAAAA,KAAAA,EAAOC,KAAKC,OAAO,CAAC,OAAOX,OAAO,CAACM,MAAO,CAAA,KAAK,QAEvCN,GAAAA,OAAO,CAACM,MAAO,CAAA,GAEfN,OAAO,CAACM,MAAAA,CAAO,CAACM,MAAM;SAClC,CAAA,CAAA;IACA,OAAO;QACHC,OAAS,EAAA;YACLC,iBAAkBC,CAAAA,CAAAA,QAAQ,EAAEC,KAAK,EAAA;AAC7B,gBAAA,MAAMC,SAASF,QAASG,CAAAA,IAAI,CAACD,MAAM,CAACR,KAAK;AACzC,gBAAA,MAAM,EAAEU,UAAU,EAAE,GAAGJ,SAASG,IAAI;AACpC,gBAAA,MAAM,EAAEE,QAAQ,EAAE,GAAGJ,KAAMK,CAAAA,IAAI,CAACC,IAAI;AACpC,gBAAA,IAAIL,WAAWzB,aAAe,EAAA;oBAC1BK,YAAesB,GAAAA,UAAAA,CAAWI,IAAI,CAAC,CAACC,SAAAA,GAAcA,SAAUC,CAAAA,QAAQ,IAC5DD,SAAAA,CAAUC,QAAQ,CAAC1B,IAAI,KAAKR,MAC5Ba,IAAAA,gBAAAA,CAAiBsB,IAAI,CAAC,CAACpB,MAAAA,GAAWA,MAAOG,CAAAA,KAAK,KAAKW,QAAAA,KAAatB,KAAAA,GAAQQ,MAAOC,CAAAA,GAAG,CAAD,CAAA,CAAA;AACzF;AACJ,aAAA;AACAoB,YAAAA,cAAAA,CAAAA,CAAeZ,QAAQ,EAAA;gBACnB,IAAIlB,YAAAA,IACAF,EAAEiC,YAAY,CAACb,SAASG,IAAI,CAACW,MAAM,EAAE;oBAAE9B,IAAMR,EAAAA;AAAO,iBAAA,CAAA,IACpDwB,SAASG,IAAI,CAACY,SAAS,CAACC,MAAM,GAAG,CAAG,EAAA;AACpC,oBAAA,MAAMC,mBAAmBjB,QAASG,CAAAA,IAAI,CAACY,SAAS,CAAC,CAAE,CAAA;AACnD,oBAAA,IAAIE,oBACArC,CAAEsC,CAAAA,kBAAkB,CAACD,gBACrB,CAAA,IAAA,CAACA,iBAAiBE,UAAU,CAACR,IAAI,CAAC,CAACS,CAAMA,GAAAA,CAAAA,CAAE5B,GAAG,CAACR,IAAI,KAAKT,SAAY,CAAA,EAAA;AACpE0C,wBAAAA,gBAAAA,CAAiBE,UAAU,CAACE,IAAI,CAACzC,EAAE0C,cAAc,CAAC1C,CAAE2C,CAAAA,UAAU,CAAChD,SAAAA,CAAAA,EAAYK,CAAE4C,CAAAA,aAAa,CAACxC,IAAOD,GAAAA,KAAAA,CAAAA,CAAAA,CAAAA;AACtG;AACJ;AACJ;AACJ;AACJ,KAAA;AACJ,CAAA;;;;"}
1
+ {"version":3,"file":"babel.cjs.cjs","sources":["../src/cli/babel.ts"],"sourcesContent":["import path from 'path';\nconst attribute = 'id';\nconst hookId = 'usePrefetch';\nconst importPackage = '@module-federation/data-prefetch/react';\nexport default (babel, options) => {\n const t = babel.types;\n let shouldHandle = false;\n let scope = '';\n const { name, exposes } = options;\n if (!exposes) {\n return {};\n }\n const exposesKey = Object.keys(exposes);\n const processedExposes = exposesKey.map((expose) => ({\n key: expose.replace('.', ''),\n value: path.resolve(typeof exposes[expose] === 'string'\n ?\n exposes[expose]\n :\n exposes[expose].import),\n }));\n return {\n visitor: {\n ImportDeclaration(nodePath, state) {\n const source = nodePath.node.source.value;\n const { specifiers } = nodePath.node;\n const { filename } = state.file.opts;\n if (source === importPackage) {\n shouldHandle = specifiers.some((specifier) => specifier.imported &&\n specifier.imported.name === hookId &&\n processedExposes.find((expose) => expose.value === filename && (scope = expose.key)));\n }\n },\n CallExpression(nodePath) {\n if (shouldHandle &&\n t.isIdentifier(nodePath.node.callee, { name: hookId }) &&\n nodePath.node.arguments.length > 0) {\n const objectExpression = nodePath.node.arguments[0];\n if (objectExpression &&\n t.isObjectExpression(objectExpression) &&\n !objectExpression.properties.find((p) => p.key.name === attribute)) {\n objectExpression.properties.push(t.objectProperty(t.identifier(attribute), t.stringLiteral(name + scope)));\n }\n }\n },\n },\n };\n};\n"],"names":[],"mappings":";;;;AACA,MAAM,SAAS,GAAG,IAAI;AACtB,MAAM,MAAM,GAAG,aAAa;AAC5B,MAAM,aAAa,GAAG,wCAAwC;AAC9D,YAAe,CAAC,KAAK,EAAE,OAAO,KAAK;AACnC,IAAI,MAAM,CAAC,GAAG,KAAK,CAAC,KAAK;AACzB,IAAI,IAAI,YAAY,GAAG,KAAK;AAC5B,IAAI,IAAI,KAAK,GAAG,EAAE;AAClB,IAAI,MAAM,EAAE,IAAI,EAAE,OAAO,EAAE,GAAG,OAAO;AACrC,IAAI,IAAI,CAAC,OAAO,EAAE;AAClB,QAAQ,OAAO,EAAE;AACjB;AACA,IAAI,MAAM,UAAU,GAAG,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC;AAC3C,IAAI,MAAM,gBAAgB,GAAG,UAAU,CAAC,GAAG,CAAC,CAAC,MAAM,MAAM;AACzD,QAAQ,GAAG,EAAE,MAAM,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,CAAC;AACpC,QAAQ,KAAK,EAAE,IAAI,CAAC,OAAO,CAAC,OAAO,OAAO,CAAC,MAAM,CAAC,KAAK;AACvD;AACA,gBAAgB,OAAO,CAAC,MAAM;AAC9B;AACA,gBAAgB,OAAO,CAAC,MAAM,CAAC,CAAC,MAAM,CAAC;AACvC,KAAK,CAAC,CAAC;AACP,IAAI,OAAO;AACX,QAAQ,OAAO,EAAE;AACjB,YAAY,iBAAiB,CAAC,QAAQ,EAAE,KAAK,EAAE;AAC/C,gBAAgB,MAAM,MAAM,GAAG,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK;AACzD,gBAAgB,MAAM,EAAE,UAAU,EAAE,GAAG,QAAQ,CAAC,IAAI;AACpD,gBAAgB,MAAM,EAAE,QAAQ,EAAE,GAAG,KAAK,CAAC,IAAI,CAAC,IAAI;AACpD,gBAAgB,IAAI,MAAM,KAAK,aAAa,EAAE;AAC9C,oBAAoB,YAAY,GAAG,UAAU,CAAC,IAAI,CAAC,CAAC,SAAS,KAAK,SAAS,CAAC,QAAQ;AACpF,wBAAwB,SAAS,CAAC,QAAQ,CAAC,IAAI,KAAK,MAAM;AAC1D,wBAAwB,gBAAgB,CAAC,IAAI,CAAC,CAAC,MAAM,KAAK,MAAM,CAAC,KAAK,KAAK,QAAQ,KAAK,KAAK,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC;AAC7G;AACA,aAAa;AACb,YAAY,cAAc,CAAC,QAAQ,EAAE;AACrC,gBAAgB,IAAI,YAAY;AAChC,oBAAoB,CAAC,CAAC,YAAY,CAAC,QAAQ,CAAC,IAAI,CAAC,MAAM,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC;AAC1E,oBAAoB,QAAQ,CAAC,IAAI,CAAC,SAAS,CAAC,MAAM,GAAG,CAAC,EAAE;AACxD,oBAAoB,MAAM,gBAAgB,GAAG,QAAQ,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC;AACvE,oBAAoB,IAAI,gBAAgB;AACxC,wBAAwB,CAAC,CAAC,kBAAkB,CAAC,gBAAgB,CAAC;AAC9D,wBAAwB,CAAC,gBAAgB,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,IAAI,KAAK,SAAS,CAAC,EAAE;AAC5F,wBAAwB,gBAAgB,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,UAAU,CAAC,SAAS,CAAC,EAAE,CAAC,CAAC,aAAa,CAAC,IAAI,GAAG,KAAK,CAAC,CAAC,CAAC;AAClI;AACA;AACA,aAAa;AACb,SAAS;AACT,KAAK;AACL,CAAC;;;;"}
package/dist/babel.esm.js CHANGED
@@ -3,7 +3,7 @@ import path from 'path';
3
3
  const attribute = 'id';
4
4
  const hookId = 'usePrefetch';
5
5
  const importPackage = '@module-federation/data-prefetch/react';
6
- var babel = ((babel, options)=>{
6
+ var babel = (babel, options) => {
7
7
  const t = babel.types;
8
8
  let shouldHandle = false;
9
9
  let scope = '';
@@ -12,33 +12,41 @@ var babel = ((babel, options)=>{
12
12
  return {};
13
13
  }
14
14
  const exposesKey = Object.keys(exposes);
15
- const processedExposes = exposesKey.map((expose)=>({
16
- key: expose.replace('.', ''),
17
- value: path.resolve(typeof exposes[expose] === 'string' ? exposes[expose] : exposes[expose].import)
18
- }));
15
+ const processedExposes = exposesKey.map((expose) => ({
16
+ key: expose.replace('.', ''),
17
+ value: path.resolve(typeof exposes[expose] === 'string'
18
+ ?
19
+ exposes[expose]
20
+ :
21
+ exposes[expose].import),
22
+ }));
19
23
  return {
20
24
  visitor: {
21
- ImportDeclaration (nodePath, state) {
25
+ ImportDeclaration(nodePath, state) {
22
26
  const source = nodePath.node.source.value;
23
27
  const { specifiers } = nodePath.node;
24
28
  const { filename } = state.file.opts;
25
29
  if (source === importPackage) {
26
- shouldHandle = specifiers.some((specifier)=>specifier.imported && specifier.imported.name === hookId && processedExposes.find((expose)=>expose.value === filename && (scope = expose.key)));
30
+ shouldHandle = specifiers.some((specifier) => specifier.imported &&
31
+ specifier.imported.name === hookId &&
32
+ processedExposes.find((expose) => expose.value === filename && (scope = expose.key)));
27
33
  }
28
34
  },
29
- CallExpression (nodePath) {
30
- if (shouldHandle && t.isIdentifier(nodePath.node.callee, {
31
- name: hookId
32
- }) && nodePath.node.arguments.length > 0) {
35
+ CallExpression(nodePath) {
36
+ if (shouldHandle &&
37
+ t.isIdentifier(nodePath.node.callee, { name: hookId }) &&
38
+ nodePath.node.arguments.length > 0) {
33
39
  const objectExpression = nodePath.node.arguments[0];
34
- if (objectExpression && t.isObjectExpression(objectExpression) && !objectExpression.properties.find((p)=>p.key.name === attribute)) {
40
+ if (objectExpression &&
41
+ t.isObjectExpression(objectExpression) &&
42
+ !objectExpression.properties.find((p) => p.key.name === attribute)) {
35
43
  objectExpression.properties.push(t.objectProperty(t.identifier(attribute), t.stringLiteral(name + scope)));
36
44
  }
37
45
  }
38
- }
39
- }
46
+ },
47
+ },
40
48
  };
41
- });
49
+ };
42
50
 
43
51
  export { babel as default };
44
52
  //# sourceMappingURL=babel.esm.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"babel.esm.js","sources":["../src/cli/babel.ts"],"sourcesContent":["import path from 'path';\nconst attribute = 'id';\nconst hookId = 'usePrefetch';\nconst importPackage = '@module-federation/data-prefetch/react';\nexport default (babel, options) => {\n const t = babel.types;\n let shouldHandle = false;\n let scope = '';\n const { name, exposes } = options;\n if (!exposes) {\n return {};\n }\n const exposesKey = Object.keys(exposes);\n const processedExposes = exposesKey.map((expose) => ({\n key: expose.replace('.', ''),\n value: path.resolve(typeof exposes[expose] === 'string'\n ?\n exposes[expose]\n :\n exposes[expose].import),\n }));\n return {\n visitor: {\n ImportDeclaration(nodePath, state) {\n const source = nodePath.node.source.value;\n const { specifiers } = nodePath.node;\n const { filename } = state.file.opts;\n if (source === importPackage) {\n shouldHandle = specifiers.some((specifier) => specifier.imported &&\n specifier.imported.name === hookId &&\n processedExposes.find((expose) => expose.value === filename && (scope = expose.key)));\n }\n },\n CallExpression(nodePath) {\n if (shouldHandle &&\n t.isIdentifier(nodePath.node.callee, { name: hookId }) &&\n nodePath.node.arguments.length > 0) {\n const objectExpression = nodePath.node.arguments[0];\n if (objectExpression &&\n t.isObjectExpression(objectExpression) &&\n !objectExpression.properties.find((p) => p.key.name === attribute)) {\n objectExpression.properties.push(t.objectProperty(t.identifier(attribute), t.stringLiteral(name + scope)));\n }\n }\n },\n },\n };\n};\n"],"names":["attribute","hookId","importPackage","babel","options","t","types","shouldHandle","scope","name","exposes","exposesKey","Object","keys","processedExposes","map","expose","key","replace","value","path","resolve","import","visitor","ImportDeclaration","nodePath","state","source","node","specifiers","filename","file","opts","some","specifier","imported","find","CallExpression","isIdentifier","callee","arguments","length","objectExpression","isObjectExpression","properties","p","push","objectProperty","identifier","stringLiteral"],"mappings":";;AACA,MAAMA,SAAY,GAAA,IAAA;AAClB,MAAMC,MAAS,GAAA,aAAA;AACf,MAAMC,aAAgB,GAAA,wCAAA;AACtB,YAAe,CAAA,CAACC,KAAOC,EAAAA,OAAAA,GAAAA;IACnB,MAAMC,CAAAA,GAAIF,MAAMG,KAAK;AACrB,IAAA,IAAIC,YAAe,GAAA,KAAA;AACnB,IAAA,IAAIC,KAAQ,GAAA,EAAA;AACZ,IAAA,MAAM,EAAEC,IAAI,EAAEC,OAAO,EAAE,GAAGN,OAAAA;AAC1B,IAAA,IAAI,CAACM,OAAS,EAAA;AACV,QAAA,OAAO,EAAC;AACZ;IACA,MAAMC,UAAAA,GAAaC,MAAOC,CAAAA,IAAI,CAACH,OAAAA,CAAAA;AAC/B,IAAA,MAAMI,mBAAmBH,UAAWI,CAAAA,GAAG,CAAC,CAACC,UAAY;YACjDC,GAAKD,EAAAA,MAAAA,CAAOE,OAAO,CAAC,GAAK,EAAA,EAAA,CAAA;AACzBC,YAAAA,KAAAA,EAAOC,KAAKC,OAAO,CAAC,OAAOX,OAAO,CAACM,MAAO,CAAA,KAAK,QAEvCN,GAAAA,OAAO,CAACM,MAAO,CAAA,GAEfN,OAAO,CAACM,MAAAA,CAAO,CAACM,MAAM;SAClC,CAAA,CAAA;IACA,OAAO;QACHC,OAAS,EAAA;YACLC,iBAAkBC,CAAAA,CAAAA,QAAQ,EAAEC,KAAK,EAAA;AAC7B,gBAAA,MAAMC,SAASF,QAASG,CAAAA,IAAI,CAACD,MAAM,CAACR,KAAK;AACzC,gBAAA,MAAM,EAAEU,UAAU,EAAE,GAAGJ,SAASG,IAAI;AACpC,gBAAA,MAAM,EAAEE,QAAQ,EAAE,GAAGJ,KAAMK,CAAAA,IAAI,CAACC,IAAI;AACpC,gBAAA,IAAIL,WAAWzB,aAAe,EAAA;oBAC1BK,YAAesB,GAAAA,UAAAA,CAAWI,IAAI,CAAC,CAACC,SAAAA,GAAcA,SAAUC,CAAAA,QAAQ,IAC5DD,SAAAA,CAAUC,QAAQ,CAAC1B,IAAI,KAAKR,MAC5Ba,IAAAA,gBAAAA,CAAiBsB,IAAI,CAAC,CAACpB,MAAAA,GAAWA,MAAOG,CAAAA,KAAK,KAAKW,QAAAA,KAAatB,KAAAA,GAAQQ,MAAOC,CAAAA,GAAG,CAAD,CAAA,CAAA;AACzF;AACJ,aAAA;AACAoB,YAAAA,cAAAA,CAAAA,CAAeZ,QAAQ,EAAA;gBACnB,IAAIlB,YAAAA,IACAF,EAAEiC,YAAY,CAACb,SAASG,IAAI,CAACW,MAAM,EAAE;oBAAE9B,IAAMR,EAAAA;AAAO,iBAAA,CAAA,IACpDwB,SAASG,IAAI,CAACY,SAAS,CAACC,MAAM,GAAG,CAAG,EAAA;AACpC,oBAAA,MAAMC,mBAAmBjB,QAASG,CAAAA,IAAI,CAACY,SAAS,CAAC,CAAE,CAAA;AACnD,oBAAA,IAAIE,oBACArC,CAAEsC,CAAAA,kBAAkB,CAACD,gBACrB,CAAA,IAAA,CAACA,iBAAiBE,UAAU,CAACR,IAAI,CAAC,CAACS,CAAMA,GAAAA,CAAAA,CAAE5B,GAAG,CAACR,IAAI,KAAKT,SAAY,CAAA,EAAA;AACpE0C,wBAAAA,gBAAAA,CAAiBE,UAAU,CAACE,IAAI,CAACzC,EAAE0C,cAAc,CAAC1C,CAAE2C,CAAAA,UAAU,CAAChD,SAAAA,CAAAA,EAAYK,CAAE4C,CAAAA,aAAa,CAACxC,IAAOD,GAAAA,KAAAA,CAAAA,CAAAA,CAAAA;AACtG;AACJ;AACJ;AACJ;AACJ,KAAA;AACJ,CAAA;;;;"}
1
+ {"version":3,"file":"babel.esm.js","sources":["../src/cli/babel.ts"],"sourcesContent":["import path from 'path';\nconst attribute = 'id';\nconst hookId = 'usePrefetch';\nconst importPackage = '@module-federation/data-prefetch/react';\nexport default (babel, options) => {\n const t = babel.types;\n let shouldHandle = false;\n let scope = '';\n const { name, exposes } = options;\n if (!exposes) {\n return {};\n }\n const exposesKey = Object.keys(exposes);\n const processedExposes = exposesKey.map((expose) => ({\n key: expose.replace('.', ''),\n value: path.resolve(typeof exposes[expose] === 'string'\n ?\n exposes[expose]\n :\n exposes[expose].import),\n }));\n return {\n visitor: {\n ImportDeclaration(nodePath, state) {\n const source = nodePath.node.source.value;\n const { specifiers } = nodePath.node;\n const { filename } = state.file.opts;\n if (source === importPackage) {\n shouldHandle = specifiers.some((specifier) => specifier.imported &&\n specifier.imported.name === hookId &&\n processedExposes.find((expose) => expose.value === filename && (scope = expose.key)));\n }\n },\n CallExpression(nodePath) {\n if (shouldHandle &&\n t.isIdentifier(nodePath.node.callee, { name: hookId }) &&\n nodePath.node.arguments.length > 0) {\n const objectExpression = nodePath.node.arguments[0];\n if (objectExpression &&\n t.isObjectExpression(objectExpression) &&\n !objectExpression.properties.find((p) => p.key.name === attribute)) {\n objectExpression.properties.push(t.objectProperty(t.identifier(attribute), t.stringLiteral(name + scope)));\n }\n }\n },\n },\n };\n};\n"],"names":[],"mappings":";;AACA,MAAM,SAAS,GAAG,IAAI;AACtB,MAAM,MAAM,GAAG,aAAa;AAC5B,MAAM,aAAa,GAAG,wCAAwC;AAC9D,YAAe,CAAC,KAAK,EAAE,OAAO,KAAK;AACnC,IAAI,MAAM,CAAC,GAAG,KAAK,CAAC,KAAK;AACzB,IAAI,IAAI,YAAY,GAAG,KAAK;AAC5B,IAAI,IAAI,KAAK,GAAG,EAAE;AAClB,IAAI,MAAM,EAAE,IAAI,EAAE,OAAO,EAAE,GAAG,OAAO;AACrC,IAAI,IAAI,CAAC,OAAO,EAAE;AAClB,QAAQ,OAAO,EAAE;AACjB;AACA,IAAI,MAAM,UAAU,GAAG,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC;AAC3C,IAAI,MAAM,gBAAgB,GAAG,UAAU,CAAC,GAAG,CAAC,CAAC,MAAM,MAAM;AACzD,QAAQ,GAAG,EAAE,MAAM,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,CAAC;AACpC,QAAQ,KAAK,EAAE,IAAI,CAAC,OAAO,CAAC,OAAO,OAAO,CAAC,MAAM,CAAC,KAAK;AACvD;AACA,gBAAgB,OAAO,CAAC,MAAM;AAC9B;AACA,gBAAgB,OAAO,CAAC,MAAM,CAAC,CAAC,MAAM,CAAC;AACvC,KAAK,CAAC,CAAC;AACP,IAAI,OAAO;AACX,QAAQ,OAAO,EAAE;AACjB,YAAY,iBAAiB,CAAC,QAAQ,EAAE,KAAK,EAAE;AAC/C,gBAAgB,MAAM,MAAM,GAAG,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK;AACzD,gBAAgB,MAAM,EAAE,UAAU,EAAE,GAAG,QAAQ,CAAC,IAAI;AACpD,gBAAgB,MAAM,EAAE,QAAQ,EAAE,GAAG,KAAK,CAAC,IAAI,CAAC,IAAI;AACpD,gBAAgB,IAAI,MAAM,KAAK,aAAa,EAAE;AAC9C,oBAAoB,YAAY,GAAG,UAAU,CAAC,IAAI,CAAC,CAAC,SAAS,KAAK,SAAS,CAAC,QAAQ;AACpF,wBAAwB,SAAS,CAAC,QAAQ,CAAC,IAAI,KAAK,MAAM;AAC1D,wBAAwB,gBAAgB,CAAC,IAAI,CAAC,CAAC,MAAM,KAAK,MAAM,CAAC,KAAK,KAAK,QAAQ,KAAK,KAAK,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC;AAC7G;AACA,aAAa;AACb,YAAY,cAAc,CAAC,QAAQ,EAAE;AACrC,gBAAgB,IAAI,YAAY;AAChC,oBAAoB,CAAC,CAAC,YAAY,CAAC,QAAQ,CAAC,IAAI,CAAC,MAAM,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC;AAC1E,oBAAoB,QAAQ,CAAC,IAAI,CAAC,SAAS,CAAC,MAAM,GAAG,CAAC,EAAE;AACxD,oBAAoB,MAAM,gBAAgB,GAAG,QAAQ,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC;AACvE,oBAAoB,IAAI,gBAAgB;AACxC,wBAAwB,CAAC,CAAC,kBAAkB,CAAC,gBAAgB,CAAC;AAC9D,wBAAwB,CAAC,gBAAgB,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,IAAI,KAAK,SAAS,CAAC,EAAE;AAC5F,wBAAwB,gBAAgB,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,UAAU,CAAC,SAAS,CAAC,EAAE,CAAC,CAAC,aAAa,CAAC,IAAI,GAAG,KAAK,CAAC,CAAC,CAAC;AAClI;AACA;AACA,aAAa;AACb,SAAS;AACT,KAAK;AACL,CAAC;;;;"}
package/dist/cli.cjs.cjs CHANGED
@@ -9,7 +9,7 @@ var constant = require('./constant.cjs.cjs');
9
9
 
10
10
  const TEMP_DIR = '.mf';
11
11
 
12
- const fileExistsWithCaseSync = (filepath)=>{
12
+ const fileExistsWithCaseSync = (filepath) => {
13
13
  const dir = path.dirname(filepath);
14
14
  if (filepath === '/' || filepath === '.') {
15
15
  return true;
@@ -20,26 +20,33 @@ const fileExistsWithCaseSync = (filepath)=>{
20
20
  }
21
21
  return fileExistsWithCaseSync(dir);
22
22
  };
23
- const fixPrefetchPath = (exposePath)=>{
24
- const pathExt = [
25
- '.js',
26
- '.ts'
27
- ];
23
+ const fixPrefetchPath = (exposePath) => {
24
+ const pathExt = ['.js', '.ts'];
28
25
  const extReg = /\.(ts|js|tsx|jsx)$/;
29
26
  if (extReg.test(exposePath)) {
30
- return pathExt.map((ext)=>exposePath.replace(extReg, `.prefetch${ext}`));
31
- } else {
32
- return pathExt.map((ext)=>exposePath + `.prefetch${ext}`);
27
+ return pathExt.map((ext) => exposePath.replace(extReg, `.prefetch${ext}`));
28
+ }
29
+ else {
30
+ return pathExt.map((ext) => exposePath + `.prefetch${ext}`);
33
31
  }
34
32
  };
35
33
 
36
34
  const { RuntimeGlobals, Template } = require(normalizeWebpackPath.normalizeWebpackPath('webpack'));
35
+ const createBundlerLogger = typeof sdk.createInfrastructureLogger === 'function'
36
+ ? sdk.createInfrastructureLogger
37
+ : sdk.createLogger;
38
+ const logger = createBundlerLogger('[ Module Federation Data Prefetch Plugin ]');
37
39
  function getFederationGlobalScope(runtimeGlobals) {
38
40
  return `${runtimeGlobals.require || '__webpack_require__'}.federation`;
39
41
  }
40
42
  class PrefetchPlugin {
43
+ constructor(options) {
44
+ this.options = options;
45
+ this._reWriteExports = '';
46
+ }
41
47
  apply(compiler) {
42
48
  var _a;
49
+ sdk.bindLoggerToCompiler(logger, compiler, 'PrefetchPlugin');
43
50
  const { name, exposes } = this.options;
44
51
  if (!exposes) {
45
52
  return;
@@ -57,7 +64,7 @@ class PrefetchPlugin {
57
64
  }
58
65
  if (this.options.shareStrategy !== constant.SHARED_STRATEGY) {
59
66
  this.options.shareStrategy = constant.SHARED_STRATEGY;
60
- console.warn(`[Module Federation Data Prefetch]: Your shared strategy is set to '${constant.SHARED_STRATEGY}', this is a necessary condition for data prefetch`);
67
+ logger.warn(`[Module Federation Data Prefetch]: Your shared strategy is set to '${constant.SHARED_STRATEGY}', this is a necessary condition for data prefetch`);
61
68
  }
62
69
  const encodedName = sdk.encodeName(name);
63
70
  const asyncEntryPath = path.resolve(compiler.options.context, `node_modules/${TEMP_DIR}/${encodedName}/bootstrap.js`);
@@ -68,16 +75,17 @@ class PrefetchPlugin {
68
75
  return;
69
76
  }
70
77
  const exposeAlias = Object.keys(exposes);
71
- exposeAlias.forEach((alias)=>{
78
+ exposeAlias.forEach((alias) => {
72
79
  let exposePath;
73
80
  const exposeValue = exposes[alias];
74
81
  if (typeof exposeValue === 'string') {
75
82
  exposePath = exposeValue;
76
- } else {
83
+ }
84
+ else {
77
85
  exposePath = exposeValue.import[0];
78
86
  }
79
87
  const targetPaths = fixPrefetchPath(exposePath);
80
- for (const pathItem of targetPaths){
88
+ for (const pathItem of targetPaths) {
81
89
  const absolutePath = path.resolve(compiler.options.context, pathItem);
82
90
  if (fileExistsWithCaseSync(absolutePath)) {
83
91
  const absoluteAlias = alias.replace('.', '');
@@ -98,7 +106,7 @@ class PrefetchPlugin {
98
106
  }
99
107
  fs.writeFileSync(asyncEntryPath, this._reWriteExports);
100
108
  new compiler.webpack.DefinePlugin({
101
- FederationDataPrefetch: JSON.stringify(asyncEntryPath)
109
+ FederationDataPrefetch: JSON.stringify(asyncEntryPath),
102
110
  }).apply(compiler);
103
111
  }
104
112
  static addRuntime(compiler, options) {
@@ -109,43 +117,37 @@ class PrefetchPlugin {
109
117
  const prefetchEntry = path.resolve(compiler.options.context, `node_modules/.mf/${encodedName}/bootstrap.js`);
110
118
  const federationGlobal = getFederationGlobalScope(RuntimeGlobals || {});
111
119
  return Template.asString([
112
- fs.existsSync(prefetchEntry) ? Template.indent([
113
- 'function injectPrefetch() {',
114
- Template.indent([
115
- `globalThis.__FEDERATION__ = globalThis.__FEDERATION__ || {};`,
116
- `globalThis.__FEDERATION__['${sdk.MFPrefetchCommon.globalKey}'] = globalThis.__FEDERATION__['${sdk.MFPrefetchCommon.globalKey}'] || {`,
117
- `entryLoading: {},`,
118
- `instance: new Map(),`,
119
- `__PREFETCH_EXPORTS__: {},`,
120
- `};`,
121
- `globalThis.__FEDERATION__['${sdk.MFPrefetchCommon.globalKey}']['${sdk.MFPrefetchCommon.exportsKey}'] = globalThis.__FEDERATION__['${sdk.MFPrefetchCommon.globalKey}']['${sdk.MFPrefetchCommon.exportsKey}'] || {};`,
122
- `globalThis.__FEDERATION__['${sdk.MFPrefetchCommon.globalKey}']['${sdk.MFPrefetchCommon.exportsKey}']['${options.name}'] = function(){ return import('${prefetchEntry}');}`
123
- ]),
124
- '}',
125
- `${federationGlobal}.prefetch = injectPrefetch`
126
- ]) : '',
120
+ fs.existsSync(prefetchEntry)
121
+ ? Template.indent([
122
+ 'function injectPrefetch() {',
123
+ Template.indent([
124
+ `globalThis.__FEDERATION__ = globalThis.__FEDERATION__ || {};`,
125
+ `globalThis.__FEDERATION__['${sdk.MFPrefetchCommon.globalKey}'] = globalThis.__FEDERATION__['${sdk.MFPrefetchCommon.globalKey}'] || {`,
126
+ `entryLoading: {},`,
127
+ `instance: new Map(),`,
128
+ `__PREFETCH_EXPORTS__: {},`,
129
+ `};`,
130
+ `globalThis.__FEDERATION__['${sdk.MFPrefetchCommon.globalKey}']['${sdk.MFPrefetchCommon.exportsKey}'] = globalThis.__FEDERATION__['${sdk.MFPrefetchCommon.globalKey}']['${sdk.MFPrefetchCommon.exportsKey}'] || {};`,
131
+ `globalThis.__FEDERATION__['${sdk.MFPrefetchCommon.globalKey}']['${sdk.MFPrefetchCommon.exportsKey}']['${options.name}'] = function(){ return import('${prefetchEntry}');}`,
132
+ ]),
133
+ '}',
134
+ `${federationGlobal}.prefetch = injectPrefetch`,
135
+ ])
136
+ : '',
127
137
  Template.indent([
128
138
  `if(!${federationGlobal}.isMFRemote && ${federationGlobal}.prefetch){`,
129
139
  `${federationGlobal}.prefetch()`,
130
- '}'
131
- ])
140
+ '}',
141
+ ]),
132
142
  ]);
133
143
  }
134
144
  static setRemoteIdentifier() {
135
145
  const federationGlobal = getFederationGlobalScope(RuntimeGlobals || {});
136
- return Template.indent([
137
- `${federationGlobal}.isMFRemote = true;`
138
- ]);
146
+ return Template.indent([`${federationGlobal}.isMFRemote = true;`]);
139
147
  }
140
148
  static removeRemoteIdentifier() {
141
149
  const federationGlobal = getFederationGlobalScope(RuntimeGlobals || {});
142
- return Template.indent([
143
- `${federationGlobal}.isMFRemote = false;`
144
- ]);
145
- }
146
- constructor(options){
147
- this.options = options;
148
- this._reWriteExports = '';
150
+ return Template.indent([`${federationGlobal}.isMFRemote = false;`]);
149
151
  }
150
152
  }
151
153
 
@@ -1 +1 @@
1
- {"version":3,"file":"cli.cjs.cjs","sources":["../src/common/constant.ts","../src/common/node-utils.ts","../src/cli/index.ts"],"sourcesContent":["export const TEMP_DIR = '.mf';\n","import path from 'path';\nimport fs from 'fs-extra';\nexport const fileExistsWithCaseSync = (filepath) => {\n const dir = path.dirname(filepath);\n if (filepath === '/' || filepath === '.') {\n return true;\n }\n const filenames = fs.readdirSync(dir);\n if (filenames.indexOf(path.basename(filepath)) === -1) {\n return false;\n }\n return fileExistsWithCaseSync(dir);\n};\nexport const fixPrefetchPath = (exposePath) => {\n const pathExt = ['.js', '.ts'];\n const extReg = /\\.(ts|js|tsx|jsx)$/;\n if (extReg.test(exposePath)) {\n return pathExt.map((ext) => exposePath.replace(extReg, `.prefetch${ext}`));\n }\n else {\n return pathExt.map((ext) => exposePath + `.prefetch${ext}`);\n }\n};\n","import path from 'path';\nimport fs from 'fs-extra';\nimport { encodeName, MFPrefetchCommon, } from '@module-federation/sdk';\nimport { normalizeWebpackPath } from '@module-federation/sdk/normalize-webpack-path';\nimport { TEMP_DIR } from '../common/constant';\nimport { fileExistsWithCaseSync, fixPrefetchPath } from '../common/node-utils';\nimport { getPrefetchId } from '../common/runtime-utils';\nimport { SHARED_STRATEGY } from '../constant';\nconst { RuntimeGlobals, Template } = require(normalizeWebpackPath('webpack'));\nexport function getFederationGlobalScope(runtimeGlobals) {\n return `${runtimeGlobals.require || '__webpack_require__'}.federation`;\n}\nexport class PrefetchPlugin {\n constructor(options) {\n this.options = options;\n this._reWriteExports = '';\n }\n apply(compiler) {\n var _a;\n const { name, exposes } = this.options;\n if (!exposes) {\n return;\n }\n if (!compiler.options.context) {\n throw new Error('compiler.options.context is not defined');\n }\n const { runtimePlugins } = this.options;\n if (!Array.isArray(runtimePlugins)) {\n this.options.runtimePlugins = [];\n }\n const runtimePath = path.resolve(__dirname, './plugin.esm.js');\n if (!((_a = this.options.runtimePlugins) === null || _a === void 0 ? void 0 : _a.includes(runtimePath))) {\n this.options.runtimePlugins.push(runtimePath);\n }\n if (this.options.shareStrategy !== SHARED_STRATEGY) {\n this.options.shareStrategy = SHARED_STRATEGY;\n console.warn(`[Module Federation Data Prefetch]: Your shared strategy is set to '${SHARED_STRATEGY}', this is a necessary condition for data prefetch`);\n }\n const encodedName = encodeName(name);\n const asyncEntryPath = path.resolve(compiler.options.context, `node_modules/${TEMP_DIR}/${encodedName}/bootstrap.js`);\n if (fs.existsSync(asyncEntryPath)) {\n fs.unlinkSync(asyncEntryPath);\n }\n if (!this.options.dataPrefetch) {\n return;\n }\n const prefetchs = [];\n const exposeAlias = Object.keys(exposes);\n exposeAlias.forEach((alias) => {\n let exposePath;\n const exposeValue = exposes[alias];\n if (typeof exposeValue === 'string') {\n exposePath = exposeValue;\n }\n else {\n exposePath = exposeValue.import[0];\n }\n const targetPaths = fixPrefetchPath(exposePath);\n for (const pathItem of targetPaths) {\n const absolutePath = path.resolve(compiler.options.context, pathItem);\n if (fileExistsWithCaseSync(absolutePath)) {\n prefetchs.push(pathItem);\n const absoluteAlias = alias.replace('.', '');\n this._reWriteExports += `export * as ${getPrefetchId(`${name}${absoluteAlias}`)} from '${absolutePath}';\\n`;\n break;\n }\n }\n });\n if (!this._reWriteExports) {\n return;\n }\n const tempDirRealPath = path.resolve(compiler.options.context, 'node_modules', TEMP_DIR);\n if (!fs.existsSync(tempDirRealPath)) {\n fs.mkdirSync(tempDirRealPath);\n }\n if (!fs.existsSync(`${tempDirRealPath}/${encodedName}`)) {\n fs.mkdirSync(`${tempDirRealPath}/${encodedName}`);\n }\n fs.writeFileSync(asyncEntryPath, this._reWriteExports);\n new compiler.webpack.DefinePlugin({\n FederationDataPrefetch: JSON.stringify(asyncEntryPath),\n }).apply(compiler);\n }\n static addRuntime(compiler, options) {\n const encodedName = encodeName(options.name);\n if (!compiler.options.context) {\n throw new Error('compiler.options.context is not defined');\n }\n const prefetchEntry = path.resolve(compiler.options.context, `node_modules/.mf/${encodedName}/bootstrap.js`);\n const federationGlobal = getFederationGlobalScope(RuntimeGlobals || {});\n return Template.asString([\n fs.existsSync(prefetchEntry)\n ? Template.indent([\n 'function injectPrefetch() {',\n Template.indent([\n `globalThis.__FEDERATION__ = globalThis.__FEDERATION__ || {};`,\n `globalThis.__FEDERATION__['${MFPrefetchCommon.globalKey}'] = globalThis.__FEDERATION__['${MFPrefetchCommon.globalKey}'] || {`,\n `entryLoading: {},`,\n `instance: new Map(),`,\n `__PREFETCH_EXPORTS__: {},`,\n `};`,\n `globalThis.__FEDERATION__['${MFPrefetchCommon.globalKey}']['${MFPrefetchCommon.exportsKey}'] = globalThis.__FEDERATION__['${MFPrefetchCommon.globalKey}']['${MFPrefetchCommon.exportsKey}'] || {};`,\n `globalThis.__FEDERATION__['${MFPrefetchCommon.globalKey}']['${MFPrefetchCommon.exportsKey}']['${options.name}'] = function(){ return import('${prefetchEntry}');}`,\n ]),\n '}',\n `${federationGlobal}.prefetch = injectPrefetch`,\n ])\n : '',\n Template.indent([\n `if(!${federationGlobal}.isMFRemote && ${federationGlobal}.prefetch){`,\n `${federationGlobal}.prefetch()`,\n '}',\n ]),\n ]);\n }\n static setRemoteIdentifier() {\n const federationGlobal = getFederationGlobalScope(RuntimeGlobals || {});\n return Template.indent([`${federationGlobal}.isMFRemote = true;`]);\n }\n static removeRemoteIdentifier() {\n const federationGlobal = getFederationGlobalScope(RuntimeGlobals || {});\n return Template.indent([`${federationGlobal}.isMFRemote = false;`]);\n }\n}\n"],"names":["TEMP_DIR","fileExistsWithCaseSync","filepath","dir","path","dirname","filenames","fs","readdirSync","indexOf","basename","fixPrefetchPath","exposePath","pathExt","extReg","test","map","ext","replace","RuntimeGlobals","Template","require","normalizeWebpackPath","getFederationGlobalScope","runtimeGlobals","PrefetchPlugin","apply","compiler","_a","name","exposes","options","context","Error","runtimePlugins","Array","isArray","runtimePath","resolve","__dirname","includes","push","shareStrategy","SHARED_STRATEGY","console","warn","encodedName","encodeName","asyncEntryPath","existsSync","unlinkSync","dataPrefetch","exposeAlias","Object","keys","forEach","alias","exposeValue","import","targetPaths","pathItem","absolutePath","absoluteAlias","_reWriteExports","getPrefetchId","tempDirRealPath","mkdirSync","writeFileSync","webpack","DefinePlugin","FederationDataPrefetch","JSON","stringify","addRuntime","prefetchEntry","federationGlobal","asString","indent","MFPrefetchCommon","globalKey","exportsKey","setRemoteIdentifier","removeRemoteIdentifier","constructor"],"mappings":"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"}
1
+ {"version":3,"file":"cli.cjs.cjs","sources":["../src/common/constant.ts","../src/common/node-utils.ts","../src/cli/index.ts"],"sourcesContent":["export const TEMP_DIR = '.mf';\n","import path from 'path';\nimport fs from 'fs-extra';\nexport const fileExistsWithCaseSync = (filepath) => {\n const dir = path.dirname(filepath);\n if (filepath === '/' || filepath === '.') {\n return true;\n }\n const filenames = fs.readdirSync(dir);\n if (filenames.indexOf(path.basename(filepath)) === -1) {\n return false;\n }\n return fileExistsWithCaseSync(dir);\n};\nexport const fixPrefetchPath = (exposePath) => {\n const pathExt = ['.js', '.ts'];\n const extReg = /\\.(ts|js|tsx|jsx)$/;\n if (extReg.test(exposePath)) {\n return pathExt.map((ext) => exposePath.replace(extReg, `.prefetch${ext}`));\n }\n else {\n return pathExt.map((ext) => exposePath + `.prefetch${ext}`);\n }\n};\n","import path from 'path';\nimport fs from 'fs-extra';\nimport { bindLoggerToCompiler, createInfrastructureLogger, createLogger, encodeName, MFPrefetchCommon, } from '@module-federation/sdk';\nimport { normalizeWebpackPath } from '@module-federation/sdk/normalize-webpack-path';\nimport { TEMP_DIR } from '../common/constant';\nimport { fileExistsWithCaseSync, fixPrefetchPath } from '../common/node-utils';\nimport { getPrefetchId } from '../common/runtime-utils';\nimport { SHARED_STRATEGY } from '../constant';\nconst { RuntimeGlobals, Template } = require(normalizeWebpackPath('webpack'));\nconst createBundlerLogger = typeof createInfrastructureLogger === 'function'\n ? createInfrastructureLogger\n : createLogger;\nconst logger = createBundlerLogger('[ Module Federation Data Prefetch Plugin ]');\nexport function getFederationGlobalScope(runtimeGlobals) {\n return `${runtimeGlobals.require || '__webpack_require__'}.federation`;\n}\nexport class PrefetchPlugin {\n constructor(options) {\n this.options = options;\n this._reWriteExports = '';\n }\n apply(compiler) {\n var _a;\n bindLoggerToCompiler(logger, compiler, 'PrefetchPlugin');\n const { name, exposes } = this.options;\n if (!exposes) {\n return;\n }\n if (!compiler.options.context) {\n throw new Error('compiler.options.context is not defined');\n }\n const { runtimePlugins } = this.options;\n if (!Array.isArray(runtimePlugins)) {\n this.options.runtimePlugins = [];\n }\n const runtimePath = path.resolve(__dirname, './plugin.esm.js');\n if (!((_a = this.options.runtimePlugins) === null || _a === void 0 ? void 0 : _a.includes(runtimePath))) {\n this.options.runtimePlugins.push(runtimePath);\n }\n if (this.options.shareStrategy !== SHARED_STRATEGY) {\n this.options.shareStrategy = SHARED_STRATEGY;\n logger.warn(`[Module Federation Data Prefetch]: Your shared strategy is set to '${SHARED_STRATEGY}', this is a necessary condition for data prefetch`);\n }\n const encodedName = encodeName(name);\n const asyncEntryPath = path.resolve(compiler.options.context, `node_modules/${TEMP_DIR}/${encodedName}/bootstrap.js`);\n if (fs.existsSync(asyncEntryPath)) {\n fs.unlinkSync(asyncEntryPath);\n }\n if (!this.options.dataPrefetch) {\n return;\n }\n const prefetchs = [];\n const exposeAlias = Object.keys(exposes);\n exposeAlias.forEach((alias) => {\n let exposePath;\n const exposeValue = exposes[alias];\n if (typeof exposeValue === 'string') {\n exposePath = exposeValue;\n }\n else {\n exposePath = exposeValue.import[0];\n }\n const targetPaths = fixPrefetchPath(exposePath);\n for (const pathItem of targetPaths) {\n const absolutePath = path.resolve(compiler.options.context, pathItem);\n if (fileExistsWithCaseSync(absolutePath)) {\n prefetchs.push(pathItem);\n const absoluteAlias = alias.replace('.', '');\n this._reWriteExports += `export * as ${getPrefetchId(`${name}${absoluteAlias}`)} from '${absolutePath}';\\n`;\n break;\n }\n }\n });\n if (!this._reWriteExports) {\n return;\n }\n const tempDirRealPath = path.resolve(compiler.options.context, 'node_modules', TEMP_DIR);\n if (!fs.existsSync(tempDirRealPath)) {\n fs.mkdirSync(tempDirRealPath);\n }\n if (!fs.existsSync(`${tempDirRealPath}/${encodedName}`)) {\n fs.mkdirSync(`${tempDirRealPath}/${encodedName}`);\n }\n fs.writeFileSync(asyncEntryPath, this._reWriteExports);\n new compiler.webpack.DefinePlugin({\n FederationDataPrefetch: JSON.stringify(asyncEntryPath),\n }).apply(compiler);\n }\n static addRuntime(compiler, options) {\n const encodedName = encodeName(options.name);\n if (!compiler.options.context) {\n throw new Error('compiler.options.context is not defined');\n }\n const prefetchEntry = path.resolve(compiler.options.context, `node_modules/.mf/${encodedName}/bootstrap.js`);\n const federationGlobal = getFederationGlobalScope(RuntimeGlobals || {});\n return Template.asString([\n fs.existsSync(prefetchEntry)\n ? Template.indent([\n 'function injectPrefetch() {',\n Template.indent([\n `globalThis.__FEDERATION__ = globalThis.__FEDERATION__ || {};`,\n `globalThis.__FEDERATION__['${MFPrefetchCommon.globalKey}'] = globalThis.__FEDERATION__['${MFPrefetchCommon.globalKey}'] || {`,\n `entryLoading: {},`,\n `instance: new Map(),`,\n `__PREFETCH_EXPORTS__: {},`,\n `};`,\n `globalThis.__FEDERATION__['${MFPrefetchCommon.globalKey}']['${MFPrefetchCommon.exportsKey}'] = globalThis.__FEDERATION__['${MFPrefetchCommon.globalKey}']['${MFPrefetchCommon.exportsKey}'] || {};`,\n `globalThis.__FEDERATION__['${MFPrefetchCommon.globalKey}']['${MFPrefetchCommon.exportsKey}']['${options.name}'] = function(){ return import('${prefetchEntry}');}`,\n ]),\n '}',\n `${federationGlobal}.prefetch = injectPrefetch`,\n ])\n : '',\n Template.indent([\n `if(!${federationGlobal}.isMFRemote && ${federationGlobal}.prefetch){`,\n `${federationGlobal}.prefetch()`,\n '}',\n ]),\n ]);\n }\n static setRemoteIdentifier() {\n const federationGlobal = getFederationGlobalScope(RuntimeGlobals || {});\n return Template.indent([`${federationGlobal}.isMFRemote = true;`]);\n }\n static removeRemoteIdentifier() {\n const federationGlobal = getFederationGlobalScope(RuntimeGlobals || {});\n return Template.indent([`${federationGlobal}.isMFRemote = false;`]);\n }\n}\n"],"names":["normalizeWebpackPath","createInfrastructureLogger","createLogger","bindLoggerToCompiler","SHARED_STRATEGY","encodeName","getPrefetchId","MFPrefetchCommon"],"mappings":";;;;;;;;;AAAO,MAAM,QAAQ,GAAG,KAAK;;ACEtB,MAAM,sBAAsB,GAAG,CAAC,QAAQ,KAAK;AACpD,IAAI,MAAM,GAAG,GAAG,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC;AACtC,IAAI,IAAI,QAAQ,KAAK,GAAG,IAAI,QAAQ,KAAK,GAAG,EAAE;AAC9C,QAAQ,OAAO,IAAI;AACnB;AACA,IAAI,MAAM,SAAS,GAAG,EAAE,CAAC,WAAW,CAAC,GAAG,CAAC;AACzC,IAAI,IAAI,SAAS,CAAC,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC,KAAK,EAAE,EAAE;AAC3D,QAAQ,OAAO,KAAK;AACpB;AACA,IAAI,OAAO,sBAAsB,CAAC,GAAG,CAAC;AACtC,CAAC;AACM,MAAM,eAAe,GAAG,CAAC,UAAU,KAAK;AAC/C,IAAI,MAAM,OAAO,GAAG,CAAC,KAAK,EAAE,KAAK,CAAC;AAClC,IAAI,MAAM,MAAM,GAAG,oBAAoB;AACvC,IAAI,IAAI,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,EAAE;AACjC,QAAQ,OAAO,OAAO,CAAC,GAAG,CAAC,CAAC,GAAG,KAAK,UAAU,CAAC,OAAO,CAAC,MAAM,EAAE,CAAC,SAAS,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC;AAClF;AACA,SAAS;AACT,QAAQ,OAAO,OAAO,CAAC,GAAG,CAAC,CAAC,GAAG,KAAK,UAAU,GAAG,CAAC,SAAS,EAAE,GAAG,CAAC,CAAC,CAAC;AACnE;AACA,CAAC;;ACdD,MAAM,EAAE,cAAc,EAAE,QAAQ,EAAE,GAAG,OAAO,CAACA,yCAAoB,CAAC,SAAS,CAAC,CAAC;AAC7E,MAAM,mBAAmB,GAAG,OAAOC,8BAA0B,KAAK;AAClE,MAAMA;AACN,MAAMC,gBAAY;AAClB,MAAM,MAAM,GAAG,mBAAmB,CAAC,4CAA4C,CAAC;AACzE,SAAS,wBAAwB,CAAC,cAAc,EAAE;AACzD,IAAI,OAAO,CAAC,EAAE,cAAc,CAAC,OAAO,IAAI,qBAAqB,CAAC,WAAW,CAAC;AAC1E;AACO,MAAM,cAAc,CAAC;AAC5B,IAAI,WAAW,CAAC,OAAO,EAAE;AACzB,QAAQ,IAAI,CAAC,OAAO,GAAG,OAAO;AAC9B,QAAQ,IAAI,CAAC,eAAe,GAAG,EAAE;AACjC;AACA,IAAI,KAAK,CAAC,QAAQ,EAAE;AACpB,QAAQ,IAAI,EAAE;AACd,QAAQC,wBAAoB,CAAC,MAAM,EAAE,QAAQ,EAAE,gBAAgB,CAAC;AAChE,QAAQ,MAAM,EAAE,IAAI,EAAE,OAAO,EAAE,GAAG,IAAI,CAAC,OAAO;AAC9C,QAAQ,IAAI,CAAC,OAAO,EAAE;AACtB,YAAY;AACZ;AACA,QAAQ,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,OAAO,EAAE;AACvC,YAAY,MAAM,IAAI,KAAK,CAAC,yCAAyC,CAAC;AACtE;AACA,QAAQ,MAAM,EAAE,cAAc,EAAE,GAAG,IAAI,CAAC,OAAO;AAC/C,QAAQ,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,cAAc,CAAC,EAAE;AAC5C,YAAY,IAAI,CAAC,OAAO,CAAC,cAAc,GAAG,EAAE;AAC5C;AACA,QAAQ,MAAM,WAAW,GAAG,IAAI,CAAC,OAAO,CAAC,SAAS,EAAE,iBAAiB,CAAC;AACtE,QAAQ,IAAI,EAAE,CAAC,EAAE,GAAG,IAAI,CAAC,OAAO,CAAC,cAAc,MAAM,IAAI,IAAI,EAAE,KAAK,MAAM,GAAG,MAAM,GAAG,EAAE,CAAC,QAAQ,CAAC,WAAW,CAAC,CAAC,EAAE;AACjH,YAAY,IAAI,CAAC,OAAO,CAAC,cAAc,CAAC,IAAI,CAAC,WAAW,CAAC;AACzD;AACA,QAAQ,IAAI,IAAI,CAAC,OAAO,CAAC,aAAa,KAAKC,wBAAe,EAAE;AAC5D,YAAY,IAAI,CAAC,OAAO,CAAC,aAAa,GAAGA,wBAAe;AACxD,YAAY,MAAM,CAAC,IAAI,CAAC,CAAC,mEAAmE,EAAEA,wBAAe,CAAC,kDAAkD,CAAC,CAAC;AAClK;AACA,QAAQ,MAAM,WAAW,GAAGC,cAAU,CAAC,IAAI,CAAC;AAC5C,QAAQ,MAAM,cAAc,GAAG,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAC,OAAO,EAAE,CAAC,aAAa,EAAE,QAAQ,CAAC,CAAC,EAAE,WAAW,CAAC,aAAa,CAAC,CAAC;AAC7H,QAAQ,IAAI,EAAE,CAAC,UAAU,CAAC,cAAc,CAAC,EAAE;AAC3C,YAAY,EAAE,CAAC,UAAU,CAAC,cAAc,CAAC;AACzC;AACA,QAAQ,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,YAAY,EAAE;AACxC,YAAY;AACZ;AAEA,QAAQ,MAAM,WAAW,GAAG,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC;AAChD,QAAQ,WAAW,CAAC,OAAO,CAAC,CAAC,KAAK,KAAK;AACvC,YAAY,IAAI,UAAU;AAC1B,YAAY,MAAM,WAAW,GAAG,OAAO,CAAC,KAAK,CAAC;AAC9C,YAAY,IAAI,OAAO,WAAW,KAAK,QAAQ,EAAE;AACjD,gBAAgB,UAAU,GAAG,WAAW;AACxC;AACA,iBAAiB;AACjB,gBAAgB,UAAU,GAAG,WAAW,CAAC,MAAM,CAAC,CAAC,CAAC;AAClD;AACA,YAAY,MAAM,WAAW,GAAG,eAAe,CAAC,UAAU,CAAC;AAC3D,YAAY,KAAK,MAAM,QAAQ,IAAI,WAAW,EAAE;AAChD,gBAAgB,MAAM,YAAY,GAAG,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAC,OAAO,EAAE,QAAQ,CAAC;AACrF,gBAAgB,IAAI,sBAAsB,CAAC,YAAY,CAAC,EAAE;AAE1D,oBAAoB,MAAM,aAAa,GAAG,KAAK,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,CAAC;AAChE,oBAAoB,IAAI,CAAC,eAAe,IAAI,CAAC,YAAY,EAAEC,0BAAa,CAAC,CAAC,EAAE,IAAI,CAAC,EAAE,aAAa,CAAC,CAAC,CAAC,CAAC,OAAO,EAAE,YAAY,CAAC,IAAI,CAAC;AAC/H,oBAAoB;AACpB;AACA;AACA,SAAS,CAAC;AACV,QAAQ,IAAI,CAAC,IAAI,CAAC,eAAe,EAAE;AACnC,YAAY;AACZ;AACA,QAAQ,MAAM,eAAe,GAAG,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAC,OAAO,EAAE,cAAc,EAAE,QAAQ,CAAC;AAChG,QAAQ,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,eAAe,CAAC,EAAE;AAC7C,YAAY,EAAE,CAAC,SAAS,CAAC,eAAe,CAAC;AACzC;AACA,QAAQ,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,CAAC,EAAE,eAAe,CAAC,CAAC,EAAE,WAAW,CAAC,CAAC,CAAC,EAAE;AACjE,YAAY,EAAE,CAAC,SAAS,CAAC,CAAC,EAAE,eAAe,CAAC,CAAC,EAAE,WAAW,CAAC,CAAC,CAAC;AAC7D;AACA,QAAQ,EAAE,CAAC,aAAa,CAAC,cAAc,EAAE,IAAI,CAAC,eAAe,CAAC;AAC9D,QAAQ,IAAI,QAAQ,CAAC,OAAO,CAAC,YAAY,CAAC;AAC1C,YAAY,sBAAsB,EAAE,IAAI,CAAC,SAAS,CAAC,cAAc,CAAC;AAClE,SAAS,CAAC,CAAC,KAAK,CAAC,QAAQ,CAAC;AAC1B;AACA,IAAI,OAAO,UAAU,CAAC,QAAQ,EAAE,OAAO,EAAE;AACzC,QAAQ,MAAM,WAAW,GAAGD,cAAU,CAAC,OAAO,CAAC,IAAI,CAAC;AACpD,QAAQ,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,OAAO,EAAE;AACvC,YAAY,MAAM,IAAI,KAAK,CAAC,yCAAyC,CAAC;AACtE;AACA,QAAQ,MAAM,aAAa,GAAG,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAC,OAAO,EAAE,CAAC,iBAAiB,EAAE,WAAW,CAAC,aAAa,CAAC,CAAC;AACpH,QAAQ,MAAM,gBAAgB,GAAG,wBAAwB,CAAC,cAAc,IAAI,EAAE,CAAC;AAC/E,QAAQ,OAAO,QAAQ,CAAC,QAAQ,CAAC;AACjC,YAAY,EAAE,CAAC,UAAU,CAAC,aAAa;AACvC,kBAAkB,QAAQ,CAAC,MAAM,CAAC;AAClC,oBAAoB,6BAA6B;AACjD,oBAAoB,QAAQ,CAAC,MAAM,CAAC;AACpC,wBAAwB,CAAC,4DAA4D,CAAC;AACtF,wBAAwB,CAAC,2BAA2B,EAAEE,oBAAgB,CAAC,SAAS,CAAC,gCAAgC,EAAEA,oBAAgB,CAAC,SAAS,CAAC,OAAO,CAAC;AACtJ,wBAAwB,CAAC,iBAAiB,CAAC;AAC3C,wBAAwB,CAAC,oBAAoB,CAAC;AAC9C,wBAAwB,CAAC,yBAAyB,CAAC;AACnD,wBAAwB,CAAC,EAAE,CAAC;AAC5B,wBAAwB,CAAC,2BAA2B,EAAEA,oBAAgB,CAAC,SAAS,CAAC,IAAI,EAAEA,oBAAgB,CAAC,UAAU,CAAC,gCAAgC,EAAEA,oBAAgB,CAAC,SAAS,CAAC,IAAI,EAAEA,oBAAgB,CAAC,UAAU,CAAC,SAAS,CAAC;AAC5N,wBAAwB,CAAC,2BAA2B,EAAEA,oBAAgB,CAAC,SAAS,CAAC,IAAI,EAAEA,oBAAgB,CAAC,UAAU,CAAC,IAAI,EAAE,OAAO,CAAC,IAAI,CAAC,gCAAgC,EAAE,aAAa,CAAC,IAAI,CAAC;AAC3L,qBAAqB,CAAC;AACtB,oBAAoB,GAAG;AACvB,oBAAoB,CAAC,EAAE,gBAAgB,CAAC,0BAA0B,CAAC;AACnE,iBAAiB;AACjB,kBAAkB,EAAE;AACpB,YAAY,QAAQ,CAAC,MAAM,CAAC;AAC5B,gBAAgB,CAAC,IAAI,EAAE,gBAAgB,CAAC,eAAe,EAAE,gBAAgB,CAAC,WAAW,CAAC;AACtF,gBAAgB,CAAC,EAAE,gBAAgB,CAAC,WAAW,CAAC;AAChD,gBAAgB,GAAG;AACnB,aAAa,CAAC;AACd,SAAS,CAAC;AACV;AACA,IAAI,OAAO,mBAAmB,GAAG;AACjC,QAAQ,MAAM,gBAAgB,GAAG,wBAAwB,CAAC,cAAc,IAAI,EAAE,CAAC;AAC/E,QAAQ,OAAO,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,gBAAgB,CAAC,mBAAmB,CAAC,CAAC,CAAC;AAC1E;AACA,IAAI,OAAO,sBAAsB,GAAG;AACpC,QAAQ,MAAM,gBAAgB,GAAG,wBAAwB,CAAC,cAAc,IAAI,EAAE,CAAC;AAC/E,QAAQ,OAAO,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,gBAAgB,CAAC,oBAAoB,CAAC,CAAC,CAAC;AAC3E;AACA;;;;;"}
package/dist/cli.esm.js CHANGED
@@ -1,13 +1,13 @@
1
1
  import path from 'path';
2
2
  import fs from 'fs-extra';
3
- import { encodeName, MFPrefetchCommon } from '@module-federation/sdk';
3
+ import { createInfrastructureLogger, createLogger, bindLoggerToCompiler, encodeName, MFPrefetchCommon } from '@module-federation/sdk';
4
4
  import { normalizeWebpackPath } from '@module-federation/sdk/normalize-webpack-path';
5
5
  import { b as getPrefetchId } from './runtime-utils.esm.js';
6
6
  import { S as SHARED_STRATEGY } from './constant.esm.js';
7
7
 
8
8
  const TEMP_DIR = '.mf';
9
9
 
10
- const fileExistsWithCaseSync = (filepath)=>{
10
+ const fileExistsWithCaseSync = (filepath) => {
11
11
  const dir = path.dirname(filepath);
12
12
  if (filepath === '/' || filepath === '.') {
13
13
  return true;
@@ -18,26 +18,33 @@ const fileExistsWithCaseSync = (filepath)=>{
18
18
  }
19
19
  return fileExistsWithCaseSync(dir);
20
20
  };
21
- const fixPrefetchPath = (exposePath)=>{
22
- const pathExt = [
23
- '.js',
24
- '.ts'
25
- ];
21
+ const fixPrefetchPath = (exposePath) => {
22
+ const pathExt = ['.js', '.ts'];
26
23
  const extReg = /\.(ts|js|tsx|jsx)$/;
27
24
  if (extReg.test(exposePath)) {
28
- return pathExt.map((ext)=>exposePath.replace(extReg, `.prefetch${ext}`));
29
- } else {
30
- return pathExt.map((ext)=>exposePath + `.prefetch${ext}`);
25
+ return pathExt.map((ext) => exposePath.replace(extReg, `.prefetch${ext}`));
26
+ }
27
+ else {
28
+ return pathExt.map((ext) => exposePath + `.prefetch${ext}`);
31
29
  }
32
30
  };
33
31
 
34
32
  const { RuntimeGlobals, Template } = require(normalizeWebpackPath('webpack'));
33
+ const createBundlerLogger = typeof createInfrastructureLogger === 'function'
34
+ ? createInfrastructureLogger
35
+ : createLogger;
36
+ const logger = createBundlerLogger('[ Module Federation Data Prefetch Plugin ]');
35
37
  function getFederationGlobalScope(runtimeGlobals) {
36
38
  return `${runtimeGlobals.require || '__webpack_require__'}.federation`;
37
39
  }
38
40
  class PrefetchPlugin {
41
+ constructor(options) {
42
+ this.options = options;
43
+ this._reWriteExports = '';
44
+ }
39
45
  apply(compiler) {
40
46
  var _a;
47
+ bindLoggerToCompiler(logger, compiler, 'PrefetchPlugin');
41
48
  const { name, exposes } = this.options;
42
49
  if (!exposes) {
43
50
  return;
@@ -55,7 +62,7 @@ class PrefetchPlugin {
55
62
  }
56
63
  if (this.options.shareStrategy !== SHARED_STRATEGY) {
57
64
  this.options.shareStrategy = SHARED_STRATEGY;
58
- console.warn(`[Module Federation Data Prefetch]: Your shared strategy is set to '${SHARED_STRATEGY}', this is a necessary condition for data prefetch`);
65
+ logger.warn(`[Module Federation Data Prefetch]: Your shared strategy is set to '${SHARED_STRATEGY}', this is a necessary condition for data prefetch`);
59
66
  }
60
67
  const encodedName = encodeName(name);
61
68
  const asyncEntryPath = path.resolve(compiler.options.context, `node_modules/${TEMP_DIR}/${encodedName}/bootstrap.js`);
@@ -66,16 +73,17 @@ class PrefetchPlugin {
66
73
  return;
67
74
  }
68
75
  const exposeAlias = Object.keys(exposes);
69
- exposeAlias.forEach((alias)=>{
76
+ exposeAlias.forEach((alias) => {
70
77
  let exposePath;
71
78
  const exposeValue = exposes[alias];
72
79
  if (typeof exposeValue === 'string') {
73
80
  exposePath = exposeValue;
74
- } else {
81
+ }
82
+ else {
75
83
  exposePath = exposeValue.import[0];
76
84
  }
77
85
  const targetPaths = fixPrefetchPath(exposePath);
78
- for (const pathItem of targetPaths){
86
+ for (const pathItem of targetPaths) {
79
87
  const absolutePath = path.resolve(compiler.options.context, pathItem);
80
88
  if (fileExistsWithCaseSync(absolutePath)) {
81
89
  const absoluteAlias = alias.replace('.', '');
@@ -96,7 +104,7 @@ class PrefetchPlugin {
96
104
  }
97
105
  fs.writeFileSync(asyncEntryPath, this._reWriteExports);
98
106
  new compiler.webpack.DefinePlugin({
99
- FederationDataPrefetch: JSON.stringify(asyncEntryPath)
107
+ FederationDataPrefetch: JSON.stringify(asyncEntryPath),
100
108
  }).apply(compiler);
101
109
  }
102
110
  static addRuntime(compiler, options) {
@@ -107,43 +115,37 @@ class PrefetchPlugin {
107
115
  const prefetchEntry = path.resolve(compiler.options.context, `node_modules/.mf/${encodedName}/bootstrap.js`);
108
116
  const federationGlobal = getFederationGlobalScope(RuntimeGlobals || {});
109
117
  return Template.asString([
110
- fs.existsSync(prefetchEntry) ? Template.indent([
111
- 'function injectPrefetch() {',
112
- Template.indent([
113
- `globalThis.__FEDERATION__ = globalThis.__FEDERATION__ || {};`,
114
- `globalThis.__FEDERATION__['${MFPrefetchCommon.globalKey}'] = globalThis.__FEDERATION__['${MFPrefetchCommon.globalKey}'] || {`,
115
- `entryLoading: {},`,
116
- `instance: new Map(),`,
117
- `__PREFETCH_EXPORTS__: {},`,
118
- `};`,
119
- `globalThis.__FEDERATION__['${MFPrefetchCommon.globalKey}']['${MFPrefetchCommon.exportsKey}'] = globalThis.__FEDERATION__['${MFPrefetchCommon.globalKey}']['${MFPrefetchCommon.exportsKey}'] || {};`,
120
- `globalThis.__FEDERATION__['${MFPrefetchCommon.globalKey}']['${MFPrefetchCommon.exportsKey}']['${options.name}'] = function(){ return import('${prefetchEntry}');}`
121
- ]),
122
- '}',
123
- `${federationGlobal}.prefetch = injectPrefetch`
124
- ]) : '',
118
+ fs.existsSync(prefetchEntry)
119
+ ? Template.indent([
120
+ 'function injectPrefetch() {',
121
+ Template.indent([
122
+ `globalThis.__FEDERATION__ = globalThis.__FEDERATION__ || {};`,
123
+ `globalThis.__FEDERATION__['${MFPrefetchCommon.globalKey}'] = globalThis.__FEDERATION__['${MFPrefetchCommon.globalKey}'] || {`,
124
+ `entryLoading: {},`,
125
+ `instance: new Map(),`,
126
+ `__PREFETCH_EXPORTS__: {},`,
127
+ `};`,
128
+ `globalThis.__FEDERATION__['${MFPrefetchCommon.globalKey}']['${MFPrefetchCommon.exportsKey}'] = globalThis.__FEDERATION__['${MFPrefetchCommon.globalKey}']['${MFPrefetchCommon.exportsKey}'] || {};`,
129
+ `globalThis.__FEDERATION__['${MFPrefetchCommon.globalKey}']['${MFPrefetchCommon.exportsKey}']['${options.name}'] = function(){ return import('${prefetchEntry}');}`,
130
+ ]),
131
+ '}',
132
+ `${federationGlobal}.prefetch = injectPrefetch`,
133
+ ])
134
+ : '',
125
135
  Template.indent([
126
136
  `if(!${federationGlobal}.isMFRemote && ${federationGlobal}.prefetch){`,
127
137
  `${federationGlobal}.prefetch()`,
128
- '}'
129
- ])
138
+ '}',
139
+ ]),
130
140
  ]);
131
141
  }
132
142
  static setRemoteIdentifier() {
133
143
  const federationGlobal = getFederationGlobalScope(RuntimeGlobals || {});
134
- return Template.indent([
135
- `${federationGlobal}.isMFRemote = true;`
136
- ]);
144
+ return Template.indent([`${federationGlobal}.isMFRemote = true;`]);
137
145
  }
138
146
  static removeRemoteIdentifier() {
139
147
  const federationGlobal = getFederationGlobalScope(RuntimeGlobals || {});
140
- return Template.indent([
141
- `${federationGlobal}.isMFRemote = false;`
142
- ]);
143
- }
144
- constructor(options){
145
- this.options = options;
146
- this._reWriteExports = '';
148
+ return Template.indent([`${federationGlobal}.isMFRemote = false;`]);
147
149
  }
148
150
  }
149
151