@module-federation/native-federation-typescript 0.3.0 → 0.4.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.
package/README.md CHANGED
@@ -174,6 +174,28 @@ module.exports = {
174
174
  <br>
175
175
  </details>
176
176
 
177
+ <details>
178
+ <summary>Rolldown</summary><br>
179
+
180
+ ```ts
181
+ // rolldown.config.js
182
+ import { NativeFederationTypeScriptHost, NativeFederationTypeScriptRemote } from '@module-federation/native-federation-typescript/rolldown';
183
+
184
+ export default {
185
+ plugins: [
186
+ NativeFederationTypeScriptRemote({
187
+ /* options */
188
+ }),
189
+ NativeFederationTypeScriptHost({
190
+ /* options */
191
+ }),
192
+ ],
193
+ };
194
+ ```
195
+
196
+ <br>
197
+ </details>
198
+
177
199
  ## TypeScript configuration
178
200
 
179
201
  To have the type definitions automatically found for imports, add paths to the `compilerOptions` in the `tsconfig.json`:
package/dist/CHANGELOG.md CHANGED
@@ -1,5 +1,17 @@
1
1
  # [1.0.0-canary.1](https://github.com/module-federation/universe/compare/native-federation-typescript-0.2.6...native-federation-typescript-1.0.0-canary.1) (2023-11-06)
2
2
 
3
+ ## 0.4.0
4
+
5
+ ### Minor Changes
6
+
7
+ - b152df2: feat: rolldown support
8
+
9
+ ## 0.3.1
10
+
11
+ ### Patch Changes
12
+
13
+ - bc053b8: fix: behaviour during vite dev mode
14
+
3
15
  ## 0.3.0
4
16
 
5
17
  ### Minor Changes
package/dist/README.md CHANGED
@@ -174,6 +174,28 @@ module.exports = {
174
174
  <br>
175
175
  </details>
176
176
 
177
+ <details>
178
+ <summary>Rolldown</summary><br>
179
+
180
+ ```ts
181
+ // rolldown.config.js
182
+ import { NativeFederationTypeScriptHost, NativeFederationTypeScriptRemote } from '@module-federation/native-federation-typescript/rolldown';
183
+
184
+ export default {
185
+ plugins: [
186
+ NativeFederationTypeScriptRemote({
187
+ /* options */
188
+ }),
189
+ NativeFederationTypeScriptHost({
190
+ /* options */
191
+ }),
192
+ ],
193
+ };
194
+ ```
195
+
196
+ <br>
197
+ </details>
198
+
177
199
  ## TypeScript configuration
178
200
 
179
201
  To have the type definitions automatically found for imports, add paths to the `compilerOptions` in the `tsconfig.json`:
@@ -0,0 +1,2 @@
1
+ "use strict";Object.defineProperty(exports, "__esModule", {value: true}); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }var L=(t=>typeof require<"u"?require:typeof Proxy<"u"?new Proxy(t,{get:(e,r)=>(typeof require<"u"?require:e)[r]}):t)(function(t){if(typeof require<"u")return require.apply(this,arguments);throw Error('Dynamic require of "'+t+'" is not supported')});var _ansicolors = require('ansi-colors'); var _ansicolors2 = _interopRequireDefault(_ansicolors);var _promises = require('fs/promises');var _path = require('path');var _rambda = require('rambda');var _unplugin = require('unplugin');var _={typesFolder:"@mf-types",deleteTypesFolder:!0,maxRetries:3},z=t=>{let e=t.split("@");return e[e.length-1]},B=(t,e)=>{let r=z(e),o=new URL(r),s=o.pathname.split("/").slice(0,-1).join("/");return o.pathname=`${s}/${t.typesFolder}.zip`,o.href},k=t=>Object.entries(t.moduleFederationConfig.remotes).reduce((e,[r,o])=>(e[r]=B(t,o),e),{}),R=t=>{if(!t.moduleFederationConfig)throw new Error("moduleFederationConfig is required");let e={..._,...t},r=k(e);return{hostOptions:e,mapRemotesToDownload:r}};var _fs = require('fs');var _typescript = require('typescript'); var _typescript2 = _interopRequireDefault(_typescript);var V={tsConfigPath:"./tsconfig.json",typesFolder:"@mf-types",compiledTypesFolder:"compiled-types",deleteTypesFolder:!0,additionalFilesToCompile:[],compilerInstance:"tsc"},X=({tsConfigPath:t,typesFolder:e,compiledTypesFolder:r})=>{let o=_path.resolve.call(void 0, t),s=_typescript2.default.readConfigFile(o,_typescript2.default.sys.readFile),i=_typescript2.default.parseJsonConfigFileContent(s.config,_typescript2.default.sys,_path.dirname.call(void 0, o)),n=_path.join.call(void 0, i.options.outDir||"dist",e,r);return{...i.options,emitDeclarationOnly:!0,noEmit:!1,declaration:!0,outDir:n}},J=["ts","tsx","vue","svelte"],T=t=>{let e=process.cwd();for(let r of J){let o=_path.join.call(void 0, e,`${t}.${r}`);if(_fs.existsSync.call(void 0, o))return o}},G=t=>Object.entries(t.moduleFederationConfig.exposes).reduce((e,[r,o])=>(e[r]=T(o)||T(_path.join.call(void 0, o,"index"))||o,e),{}),h=t=>{if(!t.moduleFederationConfig)throw new Error("moduleFederationConfig is required");let e={...V,...t},r=G(e);return{tsConfig:X(e),mapComponentsToExpose:r,remoteOptions:e}};var _admzip = require('adm-zip'); var _admzip2 = _interopRequireDefault(_admzip);var _axios = require('axios'); var _axios2 = _interopRequireDefault(_axios);var ee=/^\//,C=".d.ts",te=t=>{let{line:e}=t.file.getLineAndCharacterOfPosition(t.start);console.error(_ansicolors2.default.red(`TS Error ${t.code}':' ${_typescript2.default.flattenDiagnosticMessageText(t.messageText,_typescript2.default.sys.newLine)}`)),console.error(_ansicolors2.default.red(` at ${t.file.fileName}:${e+1} typescript.sys.newLine`))},c=(t,e)=>_path.normalize.call(void 0, t.outDir.replace(e.compiledTypesFolder,"")),f=(t,e)=>_path.normalize.call(void 0, t.outDir.replace(e.compiledTypesFolder,"").replace(e.typesFolder,"")),re=(t,e,r)=>{let o=_typescript2.default.createCompilerHost(e),s=o.writeFile,i=Object.fromEntries(Object.entries(t).map(p=>p.reverse())),n=c(e,r);return o.writeFile=(p,N,u,U,y,j)=>{s(p,N,u,U,y,j);for(let A of y||[]){let g=i[A.fileName];if(g){let O=_path.join.call(void 0, n,`${g}${C}`),I=_path.dirname.call(void 0, O),v=_path.relative.call(void 0, I,p).replace(C,"").replace(ee,"");s(O,`export * from './${v}';
2
+ export { default } from './${v}';`,u)}}},o},oe=t=>L("vue-tsc").createProgram(t),se=(t,e)=>{switch(t.compilerInstance){case"vue-tsc":return oe(e);case"tsc":default:return _typescript2.default.createProgram(e)}},E=(t,e,r)=>{let o=re(t,e,r),i={rootNames:[...Object.values(t),...r.additionalFilesToCompile],host:o,options:e},n=se(r,i),{diagnostics:p=[]}=n.emit();p.forEach(te)};var pe=(t,e)=>_path.join.call(void 0, t.replace(e.typesFolder,""),`${e.typesFolder}.zip`),S=async(t,e)=>{let r=c(t,e),o=new _admzip2.default;return o.addLocalFolder(r),o.writeZipPromise(pe(r,e))},ce=(t,e)=>r=>{throw{...r,message:`Network error: Unable to download federated mocks for '${t}' from '${e}' because '${r.message}'`}},$=t=>{let e=0;return async([r,o])=>{let s=_path.join.call(void 0, t.typesFolder,r);for(;e++<t.maxRetries;)try{let i=await _axios2.default.get(o,{responseType:"arraybuffer"}).catch(ce(r,o));new (0, _admzip2.default)(Buffer.from(i.data)).extractAllTo(s,!0);break}catch(i){if(console.error(_ansicolors2.default.red(`Error during types archive download: ${(i==null?void 0:i.message)||"unknown error"}`)),e>=t.maxRetries)throw i}}};var Ue=_unplugin.createUnplugin.call(void 0, t=>{let{remoteOptions:e,tsConfig:r,mapComponentsToExpose:o}=h(t);return{name:"native-federation-typescript/remote",async writeBundle(){try{E(o,r,e),await S(r,e),e.deleteTypesFolder&&await _promises.rm.call(void 0, c(r,e),{recursive:!0,force:!0}),console.log(_ansicolors2.default.green("Federated types created correctly"))}catch(s){console.error(_ansicolors2.default.red(`Unable to compile federated types, ${s}`))}},get vite(){return process.env.NODE_ENV==="production"?void 0:{buildStart:this.writeBundle,watchChange:this.writeBundle}},webpack:s=>{s.options.devServer=_rambda.mergeDeepRight.call(void 0, s.options.devServer||{},{static:{directory:_path.resolve.call(void 0, f(r,e))}})},rspack:s=>{s.options.devServer=_rambda.mergeDeepRight.call(void 0, s.options.devServer||{},{static:{directory:_path.resolve.call(void 0, f(r,e))}})}}}),je= exports.b =_unplugin.createUnplugin.call(void 0, t=>{let{hostOptions:e,mapRemotesToDownload:r}=R(t);return{name:"native-federation-typescript/host",async writeBundle(){e.deleteTypesFolder&&await _promises.rm.call(void 0, e.typesFolder,{recursive:!0,force:!0}).catch(i=>console.error(_ansicolors2.default.red(`Unable to remove types folder, ${i}`)));let o=$(e),s=Object.entries(r).map(o);await Promise.allSettled(s),console.log(_ansicolors2.default.green("Federated types extraction completed"))},get vite(){return process.env.NODE_ENV==="production"?void 0:{buildStart:this.writeBundle,watchChange:this.writeBundle}}}});exports.a = Ue; exports.b = je;
@@ -0,0 +1,2 @@
1
+ var L=(t=>typeof require<"u"?require:typeof Proxy<"u"?new Proxy(t,{get:(e,r)=>(typeof require<"u"?require:e)[r]}):t)(function(t){if(typeof require<"u")return require.apply(this,arguments);throw Error('Dynamic require of "'+t+'" is not supported')});import l from"ansi-colors";import{rm as b}from"fs/promises";import{resolve as H}from"path";import{mergeDeepRight as D}from"rambda";import{createUnplugin as q}from"unplugin";var _={typesFolder:"@mf-types",deleteTypesFolder:!0,maxRetries:3},z=t=>{let e=t.split("@");return e[e.length-1]},B=(t,e)=>{let r=z(e),o=new URL(r),s=o.pathname.split("/").slice(0,-1).join("/");return o.pathname=`${s}/${t.typesFolder}.zip`,o.href},k=t=>Object.entries(t.moduleFederationConfig.remotes).reduce((e,[r,o])=>(e[r]=B(t,o),e),{}),R=t=>{if(!t.moduleFederationConfig)throw new Error("moduleFederationConfig is required");let e={..._,...t},r=k(e);return{hostOptions:e,mapRemotesToDownload:r}};import{existsSync as W}from"fs";import{dirname as Z,join as d,resolve as M}from"path";import a from"typescript";var V={tsConfigPath:"./tsconfig.json",typesFolder:"@mf-types",compiledTypesFolder:"compiled-types",deleteTypesFolder:!0,additionalFilesToCompile:[],compilerInstance:"tsc"},X=({tsConfigPath:t,typesFolder:e,compiledTypesFolder:r})=>{let o=M(t),s=a.readConfigFile(o,a.sys.readFile),i=a.parseJsonConfigFileContent(s.config,a.sys,Z(o)),n=d(i.options.outDir||"dist",e,r);return{...i.options,emitDeclarationOnly:!0,noEmit:!1,declaration:!0,outDir:n}},J=["ts","tsx","vue","svelte"],T=t=>{let e=process.cwd();for(let r of J){let o=d(e,`${t}.${r}`);if(W(o))return o}},G=t=>Object.entries(t.moduleFederationConfig.exposes).reduce((e,[r,o])=>(e[r]=T(o)||T(d(o,"index"))||o,e),{}),h=t=>{if(!t.moduleFederationConfig)throw new Error("moduleFederationConfig is required");let e={...V,...t},r=G(e);return{tsConfig:X(e),mapComponentsToExpose:r,remoteOptions:e}};import x from"adm-zip";import ie from"ansi-colors";import ne from"axios";import{join as P}from"path";import w from"ansi-colors";import{dirname as K,join as Q,normalize as F,relative as Y}from"path";import m from"typescript";var ee=/^\//,C=".d.ts",te=t=>{let{line:e}=t.file.getLineAndCharacterOfPosition(t.start);console.error(w.red(`TS Error ${t.code}':' ${m.flattenDiagnosticMessageText(t.messageText,m.sys.newLine)}`)),console.error(w.red(` at ${t.file.fileName}:${e+1} typescript.sys.newLine`))},c=(t,e)=>F(t.outDir.replace(e.compiledTypesFolder,"")),f=(t,e)=>F(t.outDir.replace(e.compiledTypesFolder,"").replace(e.typesFolder,"")),re=(t,e,r)=>{let o=m.createCompilerHost(e),s=o.writeFile,i=Object.fromEntries(Object.entries(t).map(p=>p.reverse())),n=c(e,r);return o.writeFile=(p,N,u,U,y,j)=>{s(p,N,u,U,y,j);for(let A of y||[]){let g=i[A.fileName];if(g){let O=Q(n,`${g}${C}`),I=K(O),v=Y(I,p).replace(C,"").replace(ee,"");s(O,`export * from './${v}';
2
+ export { default } from './${v}';`,u)}}},o},oe=t=>L("vue-tsc").createProgram(t),se=(t,e)=>{switch(t.compilerInstance){case"vue-tsc":return oe(e);case"tsc":default:return m.createProgram(e)}},E=(t,e,r)=>{let o=re(t,e,r),i={rootNames:[...Object.values(t),...r.additionalFilesToCompile],host:o,options:e},n=se(r,i),{diagnostics:p=[]}=n.emit();p.forEach(te)};var pe=(t,e)=>P(t.replace(e.typesFolder,""),`${e.typesFolder}.zip`),S=async(t,e)=>{let r=c(t,e),o=new x;return o.addLocalFolder(r),o.writeZipPromise(pe(r,e))},ce=(t,e)=>r=>{throw{...r,message:`Network error: Unable to download federated mocks for '${t}' from '${e}' because '${r.message}'`}},$=t=>{let e=0;return async([r,o])=>{let s=P(t.typesFolder,r);for(;e++<t.maxRetries;)try{let i=await ne.get(o,{responseType:"arraybuffer"}).catch(ce(r,o));new x(Buffer.from(i.data)).extractAllTo(s,!0);break}catch(i){if(console.error(ie.red(`Error during types archive download: ${(i==null?void 0:i.message)||"unknown error"}`)),e>=t.maxRetries)throw i}}};var Ue=q(t=>{let{remoteOptions:e,tsConfig:r,mapComponentsToExpose:o}=h(t);return{name:"native-federation-typescript/remote",async writeBundle(){try{E(o,r,e),await S(r,e),e.deleteTypesFolder&&await b(c(r,e),{recursive:!0,force:!0}),console.log(l.green("Federated types created correctly"))}catch(s){console.error(l.red(`Unable to compile federated types, ${s}`))}},get vite(){return process.env.NODE_ENV==="production"?void 0:{buildStart:this.writeBundle,watchChange:this.writeBundle}},webpack:s=>{s.options.devServer=D(s.options.devServer||{},{static:{directory:H(f(r,e))}})},rspack:s=>{s.options.devServer=D(s.options.devServer||{},{static:{directory:H(f(r,e))}})}}}),je=q(t=>{let{hostOptions:e,mapRemotesToDownload:r}=R(t);return{name:"native-federation-typescript/host",async writeBundle(){e.deleteTypesFolder&&await b(e.typesFolder,{recursive:!0,force:!0}).catch(i=>console.error(l.red(`Unable to remove types folder, ${i}`)));let o=$(e),s=Object.entries(r).map(o);await Promise.allSettled(s),console.log(l.green("Federated types extraction completed"))},get vite(){return process.env.NODE_ENV==="production"?void 0:{buildStart:this.writeBundle,watchChange:this.writeBundle}}}});export{Ue as a,je as b};
package/dist/esbuild.js CHANGED
@@ -1 +1 @@
1
- "use strict";Object.defineProperty(exports, "__esModule", {value: true});var _chunkOISK62WXjs = require('./chunk-OISK62WX.js');var i=_chunkOISK62WXjs.a.esbuild,r= exports.NativeFederationTypeScriptHost =_chunkOISK62WXjs.b.esbuild;exports.NativeFederationTypeScriptHost = r; exports.NativeFederationTypeScriptRemote = i;
1
+ "use strict";Object.defineProperty(exports, "__esModule", {value: true});var _chunkIDWEZ3WPjs = require('./chunk-IDWEZ3WP.js');var i=_chunkIDWEZ3WPjs.a.esbuild,r= exports.NativeFederationTypeScriptHost =_chunkIDWEZ3WPjs.b.esbuild;exports.NativeFederationTypeScriptHost = r; exports.NativeFederationTypeScriptRemote = i;
package/dist/esbuild.mjs CHANGED
@@ -1 +1 @@
1
- import{a as e,b as t}from"./chunk-BOTSDODZ.mjs";var i=e.esbuild,r=t.esbuild;export{r as NativeFederationTypeScriptHost,i as NativeFederationTypeScriptRemote};
1
+ import{a as e,b as t}from"./chunk-MSWS7NCK.mjs";var i=e.esbuild,r=t.esbuild;export{r as NativeFederationTypeScriptHost,i as NativeFederationTypeScriptRemote};
package/dist/index.js CHANGED
@@ -1 +1 @@
1
- "use strict";Object.defineProperty(exports, "__esModule", {value: true});var _chunkOISK62WXjs = require('./chunk-OISK62WX.js');exports.NativeFederationTypeScriptHost = _chunkOISK62WXjs.b; exports.NativeFederationTypeScriptRemote = _chunkOISK62WXjs.a;
1
+ "use strict";Object.defineProperty(exports, "__esModule", {value: true});var _chunkIDWEZ3WPjs = require('./chunk-IDWEZ3WP.js');exports.NativeFederationTypeScriptHost = _chunkIDWEZ3WPjs.b; exports.NativeFederationTypeScriptRemote = _chunkIDWEZ3WPjs.a;
package/dist/index.mjs CHANGED
@@ -1 +1 @@
1
- import{a,b}from"./chunk-BOTSDODZ.mjs";export{b as NativeFederationTypeScriptHost,a as NativeFederationTypeScriptRemote};
1
+ import{a,b}from"./chunk-MSWS7NCK.mjs";export{b as NativeFederationTypeScriptHost,a as NativeFederationTypeScriptRemote};
package/dist/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@module-federation/native-federation-typescript",
3
- "version": "0.3.0",
3
+ "version": "0.4.0",
4
4
  "description": "Bundler agnostic unplugin to share federated types",
5
5
  "keywords": [
6
6
  "module federation",
@@ -55,8 +55,8 @@
55
55
  "adm-zip": "^0.5.10",
56
56
  "ansi-colors": "^4.1.3",
57
57
  "axios": "^1.6.7",
58
- "rambda": "^9.0.1",
59
- "unplugin": "^1.6.0"
58
+ "rambda": "^9.1.0",
59
+ "unplugin": "^1.9.0"
60
60
  },
61
61
  "peerDependencies": {
62
62
  "typescript": "^4.9.0 || ^5.0.0",
@@ -0,0 +1,6 @@
1
+ import { R as RemoteOptions, H as HostOptions } from './RemoteOptions-8173ef89.js';
2
+
3
+ declare const NativeFederationTypeScriptRemote: (options: RemoteOptions) => any;
4
+ declare const NativeFederationTypeScriptHost: (options: HostOptions) => any;
5
+
6
+ export { NativeFederationTypeScriptHost, NativeFederationTypeScriptRemote };
@@ -0,0 +1,6 @@
1
+ import { R as RemoteOptions, H as HostOptions } from './RemoteOptions-8173ef89.js';
2
+
3
+ declare const NativeFederationTypeScriptRemote: (options: RemoteOptions) => any;
4
+ declare const NativeFederationTypeScriptHost: (options: HostOptions) => any;
5
+
6
+ export { NativeFederationTypeScriptHost, NativeFederationTypeScriptRemote };
@@ -0,0 +1 @@
1
+ "use strict";Object.defineProperty(exports, "__esModule", {value: true});var _chunkIDWEZ3WPjs = require('./chunk-IDWEZ3WP.js');var r=_chunkIDWEZ3WPjs.a.rolldown,i= exports.NativeFederationTypeScriptHost =_chunkIDWEZ3WPjs.b.rolldown;exports.NativeFederationTypeScriptHost = i; exports.NativeFederationTypeScriptRemote = r;
@@ -0,0 +1 @@
1
+ import{a as e,b as t}from"./chunk-MSWS7NCK.mjs";var r=e.rolldown,i=t.rolldown;export{i as NativeFederationTypeScriptHost,r as NativeFederationTypeScriptRemote};
package/dist/rollup.js CHANGED
@@ -1 +1 @@
1
- "use strict";Object.defineProperty(exports, "__esModule", {value: true});var _chunkOISK62WXjs = require('./chunk-OISK62WX.js');var r=_chunkOISK62WXjs.a.rollup,i= exports.NativeFederationTypeScriptHost =_chunkOISK62WXjs.b.rollup;exports.NativeFederationTypeScriptHost = i; exports.NativeFederationTypeScriptRemote = r;
1
+ "use strict";Object.defineProperty(exports, "__esModule", {value: true});var _chunkIDWEZ3WPjs = require('./chunk-IDWEZ3WP.js');var r=_chunkIDWEZ3WPjs.a.rollup,i= exports.NativeFederationTypeScriptHost =_chunkIDWEZ3WPjs.b.rollup;exports.NativeFederationTypeScriptHost = i; exports.NativeFederationTypeScriptRemote = r;
package/dist/rollup.mjs CHANGED
@@ -1 +1 @@
1
- import{a as e,b as t}from"./chunk-BOTSDODZ.mjs";var r=e.rollup,i=t.rollup;export{i as NativeFederationTypeScriptHost,r as NativeFederationTypeScriptRemote};
1
+ import{a as e,b as t}from"./chunk-MSWS7NCK.mjs";var r=e.rollup,i=t.rollup;export{i as NativeFederationTypeScriptHost,r as NativeFederationTypeScriptRemote};
package/dist/rspack.d.mts CHANGED
@@ -1,6 +1,7 @@
1
1
  import { R as RemoteOptions, H as HostOptions } from './RemoteOptions-8173ef89.js';
2
+ import * as unplugin from 'unplugin';
2
3
 
3
- declare const NativeFederationTypeScriptRemote: (options: RemoteOptions) => RspackPluginInstance;
4
- declare const NativeFederationTypeScriptHost: (options: HostOptions) => RspackPluginInstance;
4
+ declare const NativeFederationTypeScriptRemote: (options: RemoteOptions) => unplugin.RspackPluginInstance;
5
+ declare const NativeFederationTypeScriptHost: (options: HostOptions) => unplugin.RspackPluginInstance;
5
6
 
6
7
  export { NativeFederationTypeScriptHost, NativeFederationTypeScriptRemote };
package/dist/rspack.d.ts CHANGED
@@ -1,6 +1,7 @@
1
1
  import { R as RemoteOptions, H as HostOptions } from './RemoteOptions-8173ef89.js';
2
+ import * as unplugin from 'unplugin';
2
3
 
3
- declare const NativeFederationTypeScriptRemote: (options: RemoteOptions) => RspackPluginInstance;
4
- declare const NativeFederationTypeScriptHost: (options: HostOptions) => RspackPluginInstance;
4
+ declare const NativeFederationTypeScriptRemote: (options: RemoteOptions) => unplugin.RspackPluginInstance;
5
+ declare const NativeFederationTypeScriptHost: (options: HostOptions) => unplugin.RspackPluginInstance;
5
6
 
6
7
  export { NativeFederationTypeScriptHost, NativeFederationTypeScriptRemote };
package/dist/rspack.js CHANGED
@@ -1 +1 @@
1
- "use strict";Object.defineProperty(exports, "__esModule", {value: true});var _chunkOISK62WXjs = require('./chunk-OISK62WX.js');var r=_chunkOISK62WXjs.a.rspack,a= exports.NativeFederationTypeScriptHost =_chunkOISK62WXjs.b.rspack;exports.NativeFederationTypeScriptHost = a; exports.NativeFederationTypeScriptRemote = r;
1
+ "use strict";Object.defineProperty(exports, "__esModule", {value: true});var _chunkIDWEZ3WPjs = require('./chunk-IDWEZ3WP.js');var r=_chunkIDWEZ3WPjs.a.rspack,a= exports.NativeFederationTypeScriptHost =_chunkIDWEZ3WPjs.b.rspack;exports.NativeFederationTypeScriptHost = a; exports.NativeFederationTypeScriptRemote = r;
package/dist/rspack.mjs CHANGED
@@ -1 +1 @@
1
- import{a as e,b as t}from"./chunk-BOTSDODZ.mjs";var r=e.rspack,a=t.rspack;export{a as NativeFederationTypeScriptHost,r as NativeFederationTypeScriptRemote};
1
+ import{a as e,b as t}from"./chunk-MSWS7NCK.mjs";var r=e.rspack,a=t.rspack;export{a as NativeFederationTypeScriptHost,r as NativeFederationTypeScriptRemote};
package/dist/vite.js CHANGED
@@ -1 +1 @@
1
- "use strict";Object.defineProperty(exports, "__esModule", {value: true});var _chunkOISK62WXjs = require('./chunk-OISK62WX.js');var i=_chunkOISK62WXjs.a.vite,p= exports.NativeFederationTypeScriptHost =_chunkOISK62WXjs.b.vite;exports.NativeFederationTypeScriptHost = p; exports.NativeFederationTypeScriptRemote = i;
1
+ "use strict";Object.defineProperty(exports, "__esModule", {value: true});var _chunkIDWEZ3WPjs = require('./chunk-IDWEZ3WP.js');var i=_chunkIDWEZ3WPjs.a.vite,p= exports.NativeFederationTypeScriptHost =_chunkIDWEZ3WPjs.b.vite;exports.NativeFederationTypeScriptHost = p; exports.NativeFederationTypeScriptRemote = i;
package/dist/vite.mjs CHANGED
@@ -1 +1 @@
1
- import{a as t,b as e}from"./chunk-BOTSDODZ.mjs";var i=t.vite,p=e.vite;export{p as NativeFederationTypeScriptHost,i as NativeFederationTypeScriptRemote};
1
+ import{a as t,b as e}from"./chunk-MSWS7NCK.mjs";var i=t.vite,p=e.vite;export{p as NativeFederationTypeScriptHost,i as NativeFederationTypeScriptRemote};
@@ -1,6 +1,7 @@
1
+ import { WebpackPluginInstance } from 'unplugin';
1
2
  import { R as RemoteOptions, H as HostOptions } from './RemoteOptions-8173ef89.js';
2
3
 
3
- declare const NativeFederationTypeScriptRemote: (options: RemoteOptions) => undefined;
4
- declare const NativeFederationTypeScriptHost: (options: HostOptions) => undefined;
4
+ declare const NativeFederationTypeScriptRemote: (options: RemoteOptions) => WebpackPluginInstance;
5
+ declare const NativeFederationTypeScriptHost: (options: HostOptions) => WebpackPluginInstance;
5
6
 
6
7
  export { NativeFederationTypeScriptHost, NativeFederationTypeScriptRemote };
package/dist/webpack.d.ts CHANGED
@@ -1,6 +1,7 @@
1
+ import { WebpackPluginInstance } from 'unplugin';
1
2
  import { R as RemoteOptions, H as HostOptions } from './RemoteOptions-8173ef89.js';
2
3
 
3
- declare const NativeFederationTypeScriptRemote: (options: RemoteOptions) => undefined;
4
- declare const NativeFederationTypeScriptHost: (options: HostOptions) => undefined;
4
+ declare const NativeFederationTypeScriptRemote: (options: RemoteOptions) => WebpackPluginInstance;
5
+ declare const NativeFederationTypeScriptHost: (options: HostOptions) => WebpackPluginInstance;
5
6
 
6
7
  export { NativeFederationTypeScriptHost, NativeFederationTypeScriptRemote };
package/dist/webpack.js CHANGED
@@ -1 +1 @@
1
- "use strict";Object.defineProperty(exports, "__esModule", {value: true});var _chunkOISK62WXjs = require('./chunk-OISK62WX.js');var a=_chunkOISK62WXjs.a.webpack,r= exports.NativeFederationTypeScriptHost =_chunkOISK62WXjs.b.webpack;exports.NativeFederationTypeScriptHost = r; exports.NativeFederationTypeScriptRemote = a;
1
+ "use strict";Object.defineProperty(exports, "__esModule", {value: true});var _chunkIDWEZ3WPjs = require('./chunk-IDWEZ3WP.js');var i=_chunkIDWEZ3WPjs.a.webpack,p= exports.NativeFederationTypeScriptHost =_chunkIDWEZ3WPjs.b.webpack;exports.NativeFederationTypeScriptHost = p; exports.NativeFederationTypeScriptRemote = i;
package/dist/webpack.mjs CHANGED
@@ -1 +1 @@
1
- import{a as e,b as t}from"./chunk-BOTSDODZ.mjs";var a=e.webpack,r=t.webpack;export{r as NativeFederationTypeScriptHost,a as NativeFederationTypeScriptRemote};
1
+ import{a as e,b as t}from"./chunk-MSWS7NCK.mjs";var i=e.webpack,p=t.webpack;export{p as NativeFederationTypeScriptHost,i as NativeFederationTypeScriptRemote};
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@module-federation/native-federation-typescript",
3
- "version": "0.3.0",
3
+ "version": "0.4.0",
4
4
  "description": "Bundler agnostic unplugin to share federated types",
5
5
  "keywords": [
6
6
  "module federation",
@@ -55,8 +55,8 @@
55
55
  "adm-zip": "^0.5.10",
56
56
  "ansi-colors": "^4.1.3",
57
57
  "axios": "^1.6.7",
58
- "rambda": "^9.0.1",
59
- "unplugin": "^1.6.0"
58
+ "rambda": "^9.1.0",
59
+ "unplugin": "^1.9.0"
60
60
  },
61
61
  "peerDependencies": {
62
62
  "typescript": "^4.9.0 || ^5.0.0",
@@ -1,2 +0,0 @@
1
- var I=(t=>typeof require<"u"?require:typeof Proxy<"u"?new Proxy(t,{get:(e,o)=>(typeof require<"u"?require:e)[o]}):t)(function(t){if(typeof require<"u")return require.apply(this,arguments);throw Error('Dynamic require of "'+t+'" is not supported')});import l from"ansi-colors";import{rm as S}from"fs/promises";import{resolve as pe}from"path";import{mergeDeepRight as ce}from"rambda";import{createUnplugin as q}from"unplugin";var U={typesFolder:"@mf-types",deleteTypesFolder:!0,maxRetries:3},L=t=>{let e=t.split("@");return e[e.length-1]},z=(t,e)=>{let o=L(e),r=new URL(o),s=r.pathname.split("/").slice(0,-1).join("/");return r.pathname=`${s}/${t.typesFolder}.zip`,r.href},W=t=>Object.entries(t.moduleFederationConfig.remotes).reduce((e,[o,r])=>(e[o]=z(t,r),e),{}),O=t=>{if(!t.moduleFederationConfig)throw new Error("moduleFederationConfig is required");let e={...U,...t},o=W(e);return{hostOptions:e,mapRemotesToDownload:o}};import{existsSync as _}from"fs";import{dirname as k,join as d,resolve as Z}from"path";import a from"typescript";var M={tsConfigPath:"./tsconfig.json",typesFolder:"@mf-types",compiledTypesFolder:"compiled-types",deleteTypesFolder:!0,additionalFilesToCompile:[],compilerInstance:"tsc"},B=({tsConfigPath:t,typesFolder:e,compiledTypesFolder:o})=>{let r=Z(t),s=a.readConfigFile(r,a.sys.readFile),i=a.parseJsonConfigFileContent(s.config,a.sys,k(r)),n=d(i.options.outDir||"dist",e,o);return{...i.options,emitDeclarationOnly:!0,noEmit:!1,declaration:!0,outDir:n}},X=["ts","tsx","vue","svelte"],T=t=>{let e=process.cwd();for(let o of X){let r=d(e,`${t}.${o}`);if(_(r))return r}},J=t=>Object.entries(t.moduleFederationConfig.exposes).reduce((e,[o,r])=>(e[o]=T(r)||T(d(r,"index"))||r,e),{}),v=t=>{if(!t.moduleFederationConfig)throw new Error("moduleFederationConfig is required");let e={...M,...t},o=J(e);return{tsConfig:B(e),mapComponentsToExpose:o,remoteOptions:e}};import E from"adm-zip";import re from"ansi-colors";import se from"axios";import{join as P}from"path";import C from"ansi-colors";import{dirname as V,join as G,normalize as w,relative as K}from"path";import m from"typescript";var Q=/^\//,h=".d.ts",Y=t=>{let{line:e}=t.file.getLineAndCharacterOfPosition(t.start);console.error(C.red(`TS Error ${t.code}':' ${m.flattenDiagnosticMessageText(t.messageText,m.sys.newLine)}`)),console.error(C.red(` at ${t.file.fileName}:${e+1} typescript.sys.newLine`))},c=(t,e)=>w(t.outDir.replace(e.compiledTypesFolder,"")),F=(t,e)=>w(t.outDir.replace(e.compiledTypesFolder,"").replace(e.typesFolder,"")),ee=(t,e,o)=>{let r=m.createCompilerHost(e),s=r.writeFile,i=Object.fromEntries(Object.entries(t).map(p=>p.reverse())),n=c(e,o);return r.writeFile=(p,D,f,b,u,N)=>{s(p,D,f,b,u,N);for(let j of u||[]){let y=i[j.fileName];if(y){let g=G(n,`${y}${h}`),A=V(g),R=K(A,p).replace(h,"").replace(Q,"");s(g,`export * from './${R}';
2
- export { default } from './${R}';`,f)}}},r},te=t=>I("vue-tsc").createProgram(t),oe=(t,e)=>{switch(t.compilerInstance){case"vue-tsc":return te(e);case"tsc":default:return m.createProgram(e)}},x=(t,e,o)=>{let r=ee(t,e,o),i={rootNames:[...Object.values(t),...o.additionalFilesToCompile],host:r,options:e},n=oe(o,i),{diagnostics:p=[]}=n.emit();p.forEach(Y)};var ie=(t,e)=>P(t.replace(e.typesFolder,""),`${e.typesFolder}.zip`),$=async(t,e)=>{let o=c(t,e),r=new E;return r.addLocalFolder(o),r.writeZipPromise(ie(o,e))},ne=(t,e)=>o=>{throw{...o,message:`Network error: Unable to download federated mocks for '${t}' from '${e}' because '${o.message}'`}},H=t=>{let e=0;return async([o,r])=>{let s=P(t.typesFolder,o);for(;e++<t.maxRetries;)try{let i=await se.get(r,{responseType:"arraybuffer"}).catch(ne(o,r));new E(Buffer.from(i.data)).extractAllTo(s,!0);break}catch(i){if(console.error(re.red(`Error during types archive download: ${(i==null?void 0:i.message)||"unknown error"}`)),e>=t.maxRetries)throw i}}};var Ne=q(t=>{let{remoteOptions:e,tsConfig:o,mapComponentsToExpose:r}=v(t);return{name:"native-federation-typescript/remote",async writeBundle(){try{x(r,o,e),await $(o,e),e.deleteTypesFolder&&await S(c(o,e),{recursive:!0,force:!0}),console.log(l.green("Federated types created correctly"))}catch(s){console.error(l.red(`Unable to compile federated types, ${s}`))}},webpack:s=>{s.options.devServer=ce(s.options.devServer||{},{static:{directory:pe(F(o,e))}})}}}),je=q(t=>{let{hostOptions:e,mapRemotesToDownload:o}=O(t);return{name:"native-federation-typescript/host",async writeBundle(){e.deleteTypesFolder&&await S(e.typesFolder,{recursive:!0,force:!0}).catch(i=>console.error(l.red(`Unable to remove types folder, ${i}`)));let r=H(e),s=Object.entries(o).map(r);await Promise.allSettled(s),console.log(l.green("Federated types extraction completed"))}}});export{Ne as a,je as b};
@@ -1,2 +0,0 @@
1
- "use strict";Object.defineProperty(exports, "__esModule", {value: true}); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }var I=(t=>typeof require<"u"?require:typeof Proxy<"u"?new Proxy(t,{get:(e,o)=>(typeof require<"u"?require:e)[o]}):t)(function(t){if(typeof require<"u")return require.apply(this,arguments);throw Error('Dynamic require of "'+t+'" is not supported')});var _ansicolors = require('ansi-colors'); var _ansicolors2 = _interopRequireDefault(_ansicolors);var _promises = require('fs/promises');var _path = require('path');var _rambda = require('rambda');var _unplugin = require('unplugin');var U={typesFolder:"@mf-types",deleteTypesFolder:!0,maxRetries:3},L=t=>{let e=t.split("@");return e[e.length-1]},z=(t,e)=>{let o=L(e),r=new URL(o),s=r.pathname.split("/").slice(0,-1).join("/");return r.pathname=`${s}/${t.typesFolder}.zip`,r.href},W=t=>Object.entries(t.moduleFederationConfig.remotes).reduce((e,[o,r])=>(e[o]=z(t,r),e),{}),O=t=>{if(!t.moduleFederationConfig)throw new Error("moduleFederationConfig is required");let e={...U,...t},o=W(e);return{hostOptions:e,mapRemotesToDownload:o}};var _fs = require('fs');var _typescript = require('typescript'); var _typescript2 = _interopRequireDefault(_typescript);var M={tsConfigPath:"./tsconfig.json",typesFolder:"@mf-types",compiledTypesFolder:"compiled-types",deleteTypesFolder:!0,additionalFilesToCompile:[],compilerInstance:"tsc"},B=({tsConfigPath:t,typesFolder:e,compiledTypesFolder:o})=>{let r=_path.resolve.call(void 0, t),s=_typescript2.default.readConfigFile(r,_typescript2.default.sys.readFile),i=_typescript2.default.parseJsonConfigFileContent(s.config,_typescript2.default.sys,_path.dirname.call(void 0, r)),n=_path.join.call(void 0, i.options.outDir||"dist",e,o);return{...i.options,emitDeclarationOnly:!0,noEmit:!1,declaration:!0,outDir:n}},X=["ts","tsx","vue","svelte"],T=t=>{let e=process.cwd();for(let o of X){let r=_path.join.call(void 0, e,`${t}.${o}`);if(_fs.existsSync.call(void 0, r))return r}},J=t=>Object.entries(t.moduleFederationConfig.exposes).reduce((e,[o,r])=>(e[o]=T(r)||T(_path.join.call(void 0, r,"index"))||r,e),{}),v=t=>{if(!t.moduleFederationConfig)throw new Error("moduleFederationConfig is required");let e={...M,...t},o=J(e);return{tsConfig:B(e),mapComponentsToExpose:o,remoteOptions:e}};var _admzip = require('adm-zip'); var _admzip2 = _interopRequireDefault(_admzip);var _axios = require('axios'); var _axios2 = _interopRequireDefault(_axios);var Q=/^\//,h=".d.ts",Y=t=>{let{line:e}=t.file.getLineAndCharacterOfPosition(t.start);console.error(_ansicolors2.default.red(`TS Error ${t.code}':' ${_typescript2.default.flattenDiagnosticMessageText(t.messageText,_typescript2.default.sys.newLine)}`)),console.error(_ansicolors2.default.red(` at ${t.file.fileName}:${e+1} typescript.sys.newLine`))},c=(t,e)=>_path.normalize.call(void 0, t.outDir.replace(e.compiledTypesFolder,"")),F=(t,e)=>_path.normalize.call(void 0, t.outDir.replace(e.compiledTypesFolder,"").replace(e.typesFolder,"")),ee=(t,e,o)=>{let r=_typescript2.default.createCompilerHost(e),s=r.writeFile,i=Object.fromEntries(Object.entries(t).map(p=>p.reverse())),n=c(e,o);return r.writeFile=(p,D,f,b,u,N)=>{s(p,D,f,b,u,N);for(let j of u||[]){let y=i[j.fileName];if(y){let g=_path.join.call(void 0, n,`${y}${h}`),A=_path.dirname.call(void 0, g),R=_path.relative.call(void 0, A,p).replace(h,"").replace(Q,"");s(g,`export * from './${R}';
2
- export { default } from './${R}';`,f)}}},r},te=t=>I("vue-tsc").createProgram(t),oe=(t,e)=>{switch(t.compilerInstance){case"vue-tsc":return te(e);case"tsc":default:return _typescript2.default.createProgram(e)}},x=(t,e,o)=>{let r=ee(t,e,o),i={rootNames:[...Object.values(t),...o.additionalFilesToCompile],host:r,options:e},n=oe(o,i),{diagnostics:p=[]}=n.emit();p.forEach(Y)};var ie=(t,e)=>_path.join.call(void 0, t.replace(e.typesFolder,""),`${e.typesFolder}.zip`),$=async(t,e)=>{let o=c(t,e),r=new _admzip2.default;return r.addLocalFolder(o),r.writeZipPromise(ie(o,e))},ne=(t,e)=>o=>{throw{...o,message:`Network error: Unable to download federated mocks for '${t}' from '${e}' because '${o.message}'`}},H=t=>{let e=0;return async([o,r])=>{let s=_path.join.call(void 0, t.typesFolder,o);for(;e++<t.maxRetries;)try{let i=await _axios2.default.get(r,{responseType:"arraybuffer"}).catch(ne(o,r));new (0, _admzip2.default)(Buffer.from(i.data)).extractAllTo(s,!0);break}catch(i){if(console.error(_ansicolors2.default.red(`Error during types archive download: ${(i==null?void 0:i.message)||"unknown error"}`)),e>=t.maxRetries)throw i}}};var Ne=_unplugin.createUnplugin.call(void 0, t=>{let{remoteOptions:e,tsConfig:o,mapComponentsToExpose:r}=v(t);return{name:"native-federation-typescript/remote",async writeBundle(){try{x(r,o,e),await $(o,e),e.deleteTypesFolder&&await _promises.rm.call(void 0, c(o,e),{recursive:!0,force:!0}),console.log(_ansicolors2.default.green("Federated types created correctly"))}catch(s){console.error(_ansicolors2.default.red(`Unable to compile federated types, ${s}`))}},webpack:s=>{s.options.devServer=_rambda.mergeDeepRight.call(void 0, s.options.devServer||{},{static:{directory:_path.resolve.call(void 0, F(o,e))}})}}}),je= exports.b =_unplugin.createUnplugin.call(void 0, t=>{let{hostOptions:e,mapRemotesToDownload:o}=O(t);return{name:"native-federation-typescript/host",async writeBundle(){e.deleteTypesFolder&&await _promises.rm.call(void 0, e.typesFolder,{recursive:!0,force:!0}).catch(i=>console.error(_ansicolors2.default.red(`Unable to remove types folder, ${i}`)));let r=H(e),s=Object.entries(o).map(r);await Promise.allSettled(s),console.log(_ansicolors2.default.green("Federated types extraction completed"))}}});exports.a = Ne; exports.b = je;