@module-federation/native-federation-typescript 0.5.1 → 0.6.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
@@ -196,6 +196,28 @@ export default {
196
196
  <br>
197
197
  </details>
198
198
 
199
+ <details>
200
+ <summary>Farm</summary><br>
201
+
202
+ ```ts
203
+ // farm.config.ts
204
+ import { NativeFederationTypeScriptHost, NativeFederationTypeScriptRemote } from '@module-federation/native-federation-typescript/farm';
205
+
206
+ const config: UserConfig = {
207
+ plugins: [
208
+ NativeFederationTypeScriptRemote({
209
+ /* options */
210
+ }),
211
+ NativeFederationTypeScriptHost({
212
+ /* options */
213
+ }),
214
+ ]
215
+ }
216
+ ```
217
+
218
+ <br>
219
+ </details>
220
+
199
221
  ## TypeScript configuration
200
222
 
201
223
  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/core/compare/native-federation-typescript-0.2.6...native-federation-typescript-1.0.0-canary.1) (2023-11-06)
2
2
 
3
+ ## 0.6.0
4
+
5
+ ### Minor Changes
6
+
7
+ - 8941ef4: feat: support for farm, drop support for node < 16
8
+
9
+ ## 0.5.2
10
+
11
+ ### Patch Changes
12
+
13
+ - 3082718: ability to use relative paths
14
+
3
15
  ## 0.5.1
4
16
 
5
17
  ### Patch Changes
package/dist/README.md CHANGED
@@ -196,6 +196,28 @@ export default {
196
196
  <br>
197
197
  </details>
198
198
 
199
+ <details>
200
+ <summary>Farm</summary><br>
201
+
202
+ ```ts
203
+ // farm.config.ts
204
+ import { NativeFederationTypeScriptHost, NativeFederationTypeScriptRemote } from '@module-federation/native-federation-typescript/farm';
205
+
206
+ const config: UserConfig = {
207
+ plugins: [
208
+ NativeFederationTypeScriptRemote({
209
+ /* options */
210
+ }),
211
+ NativeFederationTypeScriptHost({
212
+ /* options */
213
+ }),
214
+ ]
215
+ }
216
+ ```
217
+
218
+ <br>
219
+ </details>
220
+
199
221
  ## TypeScript configuration
200
222
 
201
223
  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 B=(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 _path = require('path');var _rambda = require('rambda');var _unplugin = require('unplugin');var z={typesFolder:"@mf-types",deleteTypesFolder:!0,maxRetries:3},k=t=>{let e=t.split("@");return e[e.length-1]},C="file:",W=(t,e)=>{let r=k(e),o=new URL(r,C),s=o.pathname.split("/").slice(0,-1).join("/");return o.pathname=`${s}/${t.typesFolder}.zip`,o.protocol===C?o.pathname:o.href},Z=t=>Object.entries(t.moduleFederationConfig.remotes).reduce((e,[r,o])=>(e[r]=W(t,o),e),{}),F=t=>{if(!t.moduleFederationConfig)throw new Error("moduleFederationConfig is required");let e={...z,...t},r=Z(e);return{hostOptions:e,mapRemotesToDownload:r}};var _fs = require('fs');var _typescript = require('typescript'); var _typescript2 = _interopRequireDefault(_typescript);var J={tsConfigPath:"./tsconfig.json",typesFolder:"@mf-types",compiledTypesFolder:"compiled-types",deleteTypesFolder:!0,additionalFilesToCompile:[],compilerInstance:"tsc"},G=({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}},K=["ts","tsx","vue","svelte"],w=t=>{let e=process.cwd();for(let r of K){let o=_path.join.call(void 0, e,`${t}.${r}`);if(_fs.existsSync.call(void 0, o))return o}},Q=t=>Object.entries(t.moduleFederationConfig.exposes).reduce((e,[r,o])=>(e[r]=w(o)||w(_path.join.call(void 0, o,"index"))||o,e),{}),x=t=>{if(!t.moduleFederationConfig)throw new Error("moduleFederationConfig is required");let e={...J,...t},r=Q(e);return{tsConfig:G(e),mapComponentsToExpose:r,remoteOptions:e}};var _admzip = require('adm-zip'); var _admzip2 = _interopRequireDefault(_admzip);var _axios = require('axios'); var _axios2 = _interopRequireDefault(_axios);var _crypto = require('crypto');var _promises = require('fs/promises');var oe=/^\//,P=".d.ts",se=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`))},a=(t,e)=>_path.normalize.call(void 0, t.outDir.replace(e.compiledTypesFolder,"")),g=(t,e)=>_path.normalize.call(void 0, t.outDir.replace(e.compiledTypesFolder,"").replace(e.typesFolder,"")),ie=(t,e,r)=>{let o=_typescript2.default.createCompilerHost(e),s=o.writeFile,i=Object.fromEntries(Object.entries(t).map(([p,c])=>[_path.normalize.call(void 0, c),p])),n=a(e,r);return o.writeFile=(p,c,f,I,R,L)=>{s(p,c,f,I,R,L);for(let A of R||[]){let h=i[_path.normalize.call(void 0, A.fileName)];if(h){let v=_path.join.call(void 0, n,`${h}${P}`),_=_path.dirname.call(void 0, v),T=_path.relative.call(void 0, _,p).replace(P,"").replace(oe,"").split(_path.sep).join("/");s(v,`export * from './${T}';
2
+ export { default } from './${T}';`,f)}}},o},ne=t=>B("vue-tsc").createProgram(t),pe=(t,e)=>{switch(t.compilerInstance){case"vue-tsc":return ne(e);case"tsc":default:return _typescript2.default.createProgram(e)}},S=(t,e,r)=>{let o=ie(t,e,r),i={rootNames:[...Object.values(t),...r.additionalFilesToCompile],host:o,options:e},n=pe(r,i),{diagnostics:p=[]}=n.emit();p.forEach(se)};var de=(t,e)=>_path.join.call(void 0, t.replace(e.typesFolder,""),`${e.typesFolder}.zip`),b=async(t,e)=>{let r=a(t,e),o=new _admzip2.default;return o.addLocalFolder(r),o.writeZipPromise(de(r,e))},le=(t,e)=>r=>{throw{...r,message:`Network error: Unable to download federated mocks for '${t}' from '${e}' because '${r.message}'`}},y=async(t,e)=>{t.deleteTypesFolder&&await _promises.rm.call(void 0, e,{recursive:!0,force:!0}).catch(r=>console.error(_ansicolors2.default.red(`Unable to remove types folder, ${r}`)))},N=t=>{let e={},r={};return async([o,s])=>{e[s]=0;let i=_path.join.call(void 0, t.typesFolder,o);for(;e[s]++<t.maxRetries;)try{let n=await _axios2.default.get(s,{responseType:"arraybuffer"}).catch(le(o,s)),p=Buffer.from(n.data),c=_crypto.createHash.call(void 0, "sha256").update(p).digest("hex");r[s]!==c&&(await y(t,i),new (0, _admzip2.default)(p).extractAllTo(i,!0),r[s]=c);break}catch(n){if(console.error(_ansicolors2.default.red(`Error during types archive download: ${(n==null?void 0:n.message)||"unknown error"}`)),e[s]>=t.maxRetries)throw n}}};var _e=_unplugin.createUnplugin.call(void 0, t=>{let{remoteOptions:e,tsConfig:r,mapComponentsToExpose:o}=x(t),s=a(r,e);return{name:"native-federation-typescript/remote",async writeBundle(){try{S(o,r,e),await b(r,e),await y(e,s),console.log(_ansicolors2.default.green("Federated types created correctly"))}catch(i){console.error(_ansicolors2.default.red(`Unable to compile federated types, ${i}`))}},get vite(){return process.env.NODE_ENV==="production"?void 0:{buildStart:this.writeBundle,watchChange:this.writeBundle}},webpack(i){i.options.devServer=_rambda.mergeDeepRight.call(void 0, i.options.devServer||{},{static:{directory:_path.resolve.call(void 0, g(r,e))}})},rspack(i){i.options.devServer=_rambda.mergeDeepRight.call(void 0, i.options.devServer||{},{static:{directory:_path.resolve.call(void 0, g(r,e))}})}}}),Be= exports.b =_unplugin.createUnplugin.call(void 0, t=>{let{hostOptions:e,mapRemotesToDownload:r}=F(t),o=N(e);return{name:"native-federation-typescript/host",async writeBundle(){let 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 = _e; exports.b = Be;
@@ -0,0 +1,2 @@
1
+ var B=(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 O from"ansi-colors";import{resolve as U}from"node:path";import{mergeDeepRight as j}from"rambda";import{createUnplugin as D}from"unplugin";var z={typesFolder:"@mf-types",deleteTypesFolder:!0,maxRetries:3},k=t=>{let e=t.split("@");return e[e.length-1]},C="file:",W=(t,e)=>{let r=k(e),o=new URL(r,C),s=o.pathname.split("/").slice(0,-1).join("/");return o.pathname=`${s}/${t.typesFolder}.zip`,o.protocol===C?o.pathname:o.href},Z=t=>Object.entries(t.moduleFederationConfig.remotes).reduce((e,[r,o])=>(e[r]=W(t,o),e),{}),F=t=>{if(!t.moduleFederationConfig)throw new Error("moduleFederationConfig is required");let e={...z,...t},r=Z(e);return{hostOptions:e,mapRemotesToDownload:r}};import{existsSync as M}from"fs";import{dirname as V,join as u,resolve as X}from"path";import m from"typescript";var J={tsConfigPath:"./tsconfig.json",typesFolder:"@mf-types",compiledTypesFolder:"compiled-types",deleteTypesFolder:!0,additionalFilesToCompile:[],compilerInstance:"tsc"},G=({tsConfigPath:t,typesFolder:e,compiledTypesFolder:r})=>{let o=X(t),s=m.readConfigFile(o,m.sys.readFile),i=m.parseJsonConfigFileContent(s.config,m.sys,V(o)),n=u(i.options.outDir||"dist",e,r);return{...i.options,emitDeclarationOnly:!0,noEmit:!1,declaration:!0,outDir:n}},K=["ts","tsx","vue","svelte"],w=t=>{let e=process.cwd();for(let r of K){let o=u(e,`${t}.${r}`);if(M(o))return o}},Q=t=>Object.entries(t.moduleFederationConfig.exposes).reduce((e,[r,o])=>(e[r]=w(o)||w(u(o,"index"))||o,e),{}),x=t=>{if(!t.moduleFederationConfig)throw new Error("moduleFederationConfig is required");let e={...J,...t},r=Q(e);return{tsConfig:G(e),mapComponentsToExpose:r,remoteOptions:e}};import H from"adm-zip";import $ from"ansi-colors";import ce from"axios";import{createHash as ae}from"node:crypto";import{rm as me}from"node:fs/promises";import{join as q}from"node:path";import E from"ansi-colors";import{dirname as Y,join as ee,normalize as d,relative as te,sep as re}from"path";import l from"typescript";var oe=/^\//,P=".d.ts",se=t=>{let{line:e}=t.file.getLineAndCharacterOfPosition(t.start);console.error(E.red(`TS Error ${t.code}':' ${l.flattenDiagnosticMessageText(t.messageText,l.sys.newLine)}`)),console.error(E.red(` at ${t.file.fileName}:${e+1} typescript.sys.newLine`))},a=(t,e)=>d(t.outDir.replace(e.compiledTypesFolder,"")),g=(t,e)=>d(t.outDir.replace(e.compiledTypesFolder,"").replace(e.typesFolder,"")),ie=(t,e,r)=>{let o=l.createCompilerHost(e),s=o.writeFile,i=Object.fromEntries(Object.entries(t).map(([p,c])=>[d(c),p])),n=a(e,r);return o.writeFile=(p,c,f,I,R,L)=>{s(p,c,f,I,R,L);for(let A of R||[]){let h=i[d(A.fileName)];if(h){let v=ee(n,`${h}${P}`),_=Y(v),T=te(_,p).replace(P,"").replace(oe,"").split(re).join("/");s(v,`export * from './${T}';
2
+ export { default } from './${T}';`,f)}}},o},ne=t=>B("vue-tsc").createProgram(t),pe=(t,e)=>{switch(t.compilerInstance){case"vue-tsc":return ne(e);case"tsc":default:return l.createProgram(e)}},S=(t,e,r)=>{let o=ie(t,e,r),i={rootNames:[...Object.values(t),...r.additionalFilesToCompile],host:o,options:e},n=pe(r,i),{diagnostics:p=[]}=n.emit();p.forEach(se)};var de=(t,e)=>q(t.replace(e.typesFolder,""),`${e.typesFolder}.zip`),b=async(t,e)=>{let r=a(t,e),o=new H;return o.addLocalFolder(r),o.writeZipPromise(de(r,e))},le=(t,e)=>r=>{throw{...r,message:`Network error: Unable to download federated mocks for '${t}' from '${e}' because '${r.message}'`}},y=async(t,e)=>{t.deleteTypesFolder&&await me(e,{recursive:!0,force:!0}).catch(r=>console.error($.red(`Unable to remove types folder, ${r}`)))},N=t=>{let e={},r={};return async([o,s])=>{e[s]=0;let i=q(t.typesFolder,o);for(;e[s]++<t.maxRetries;)try{let n=await ce.get(s,{responseType:"arraybuffer"}).catch(le(o,s)),p=Buffer.from(n.data),c=ae("sha256").update(p).digest("hex");r[s]!==c&&(await y(t,i),new H(p).extractAllTo(i,!0),r[s]=c);break}catch(n){if(console.error($.red(`Error during types archive download: ${(n==null?void 0:n.message)||"unknown error"}`)),e[s]>=t.maxRetries)throw n}}};var _e=D(t=>{let{remoteOptions:e,tsConfig:r,mapComponentsToExpose:o}=x(t),s=a(r,e);return{name:"native-federation-typescript/remote",async writeBundle(){try{S(o,r,e),await b(r,e),await y(e,s),console.log(O.green("Federated types created correctly"))}catch(i){console.error(O.red(`Unable to compile federated types, ${i}`))}},get vite(){return process.env.NODE_ENV==="production"?void 0:{buildStart:this.writeBundle,watchChange:this.writeBundle}},webpack(i){i.options.devServer=j(i.options.devServer||{},{static:{directory:U(g(r,e))}})},rspack(i){i.options.devServer=j(i.options.devServer||{},{static:{directory:U(g(r,e))}})}}}),Be=D(t=>{let{hostOptions:e,mapRemotesToDownload:r}=F(t),o=N(e);return{name:"native-federation-typescript/host",async writeBundle(){let s=Object.entries(r).map(o);await Promise.allSettled(s),console.log(O.green("Federated types extraction completed"))},get vite(){return process.env.NODE_ENV==="production"?void 0:{buildStart:this.writeBundle,watchChange:this.writeBundle}}}});export{_e as a,Be as b};
package/dist/esbuild.js CHANGED
@@ -1 +1 @@
1
- "use strict";Object.defineProperty(exports, "__esModule", {value: true});var _chunkUTUECYBLjs = require('./chunk-UTUECYBL.js');var i=_chunkUTUECYBLjs.a.esbuild,r= exports.NativeFederationTypeScriptHost =_chunkUTUECYBLjs.b.esbuild;exports.NativeFederationTypeScriptHost = r; exports.NativeFederationTypeScriptRemote = i;
1
+ "use strict";Object.defineProperty(exports, "__esModule", {value: true});var _chunk6KP4ELTFjs = require('./chunk-6KP4ELTF.js');var i=_chunk6KP4ELTFjs.a.esbuild,r= exports.NativeFederationTypeScriptHost =_chunk6KP4ELTFjs.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-XU2AS3PB.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-RFGP2BOW.mjs";var i=e.esbuild,r=t.esbuild;export{r as NativeFederationTypeScriptHost,i as NativeFederationTypeScriptRemote};
@@ -0,0 +1,6 @@
1
+ import { R as RemoteOptions, H as HostOptions } from './RemoteOptions-8173ef89.js';
2
+
3
+ declare const NativeFederationTypeScriptRemote: (options: RemoteOptions) => JsPlugin;
4
+ declare const NativeFederationTypeScriptHost: (options: HostOptions) => JsPlugin;
5
+
6
+ export { NativeFederationTypeScriptHost, NativeFederationTypeScriptRemote };
package/dist/farm.d.ts ADDED
@@ -0,0 +1,6 @@
1
+ import { R as RemoteOptions, H as HostOptions } from './RemoteOptions-8173ef89.js';
2
+
3
+ declare const NativeFederationTypeScriptRemote: (options: RemoteOptions) => JsPlugin;
4
+ declare const NativeFederationTypeScriptHost: (options: HostOptions) => JsPlugin;
5
+
6
+ export { NativeFederationTypeScriptHost, NativeFederationTypeScriptRemote };
package/dist/farm.js ADDED
@@ -0,0 +1 @@
1
+ "use strict";Object.defineProperty(exports, "__esModule", {value: true});var _chunk6KP4ELTFjs = require('./chunk-6KP4ELTF.js');var r=_chunk6KP4ELTFjs.a.farm,a= exports.NativeFederationTypeScriptHost =_chunk6KP4ELTFjs.b.farm;exports.NativeFederationTypeScriptHost = a; exports.NativeFederationTypeScriptRemote = r;
package/dist/farm.mjs ADDED
@@ -0,0 +1 @@
1
+ import{a as e,b as t}from"./chunk-RFGP2BOW.mjs";var r=e.farm,a=t.farm;export{a as NativeFederationTypeScriptHost,r as NativeFederationTypeScriptRemote};
package/dist/index.js CHANGED
@@ -1 +1 @@
1
- "use strict";Object.defineProperty(exports, "__esModule", {value: true});var _chunkUTUECYBLjs = require('./chunk-UTUECYBL.js');exports.NativeFederationTypeScriptHost = _chunkUTUECYBLjs.b; exports.NativeFederationTypeScriptRemote = _chunkUTUECYBLjs.a;
1
+ "use strict";Object.defineProperty(exports, "__esModule", {value: true});var _chunk6KP4ELTFjs = require('./chunk-6KP4ELTF.js');exports.NativeFederationTypeScriptHost = _chunk6KP4ELTFjs.b; exports.NativeFederationTypeScriptRemote = _chunk6KP4ELTFjs.a;
package/dist/index.mjs CHANGED
@@ -1 +1 @@
1
- import{a,b}from"./chunk-XU2AS3PB.mjs";export{b as NativeFederationTypeScriptHost,a as NativeFederationTypeScriptRemote};
1
+ import{a,b}from"./chunk-RFGP2BOW.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.5.1",
3
+ "version": "0.6.0",
4
4
  "description": "Bundler agnostic unplugin to share federated types",
5
5
  "keywords": [
6
6
  "module federation",
@@ -52,11 +52,11 @@
52
52
  "author": "Matteo Pietro Dazzi <matteopietro.dazzi@gmail.com> (https://github.com/ilteoood)",
53
53
  "license": "MIT",
54
54
  "dependencies": {
55
- "adm-zip": "^0.5.10",
55
+ "adm-zip": "^0.5.14",
56
56
  "ansi-colors": "^4.1.3",
57
- "axios": "^1.6.7",
58
- "rambda": "^9.1.0",
59
- "unplugin": "^1.9.0"
57
+ "axios": "^1.7.2",
58
+ "rambda": "^9.2.1",
59
+ "unplugin": "^1.10.1"
60
60
  },
61
61
  "peerDependencies": {
62
62
  "typescript": "^4.9.0 || ^5.0.0",
package/dist/rolldown.js CHANGED
@@ -1 +1 @@
1
- "use strict";Object.defineProperty(exports, "__esModule", {value: true});var _chunkUTUECYBLjs = require('./chunk-UTUECYBL.js');var r=_chunkUTUECYBLjs.a.rolldown,i= exports.NativeFederationTypeScriptHost =_chunkUTUECYBLjs.b.rolldown;exports.NativeFederationTypeScriptHost = i; exports.NativeFederationTypeScriptRemote = r;
1
+ "use strict";Object.defineProperty(exports, "__esModule", {value: true});var _chunk6KP4ELTFjs = require('./chunk-6KP4ELTF.js');var r=_chunk6KP4ELTFjs.a.rolldown,i= exports.NativeFederationTypeScriptHost =_chunk6KP4ELTFjs.b.rolldown;exports.NativeFederationTypeScriptHost = i; exports.NativeFederationTypeScriptRemote = r;
package/dist/rolldown.mjs CHANGED
@@ -1 +1 @@
1
- import{a as e,b as t}from"./chunk-XU2AS3PB.mjs";var r=e.rolldown,i=t.rolldown;export{i as NativeFederationTypeScriptHost,r as NativeFederationTypeScriptRemote};
1
+ import{a as e,b as t}from"./chunk-RFGP2BOW.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 _chunkUTUECYBLjs = require('./chunk-UTUECYBL.js');var r=_chunkUTUECYBLjs.a.rollup,i= exports.NativeFederationTypeScriptHost =_chunkUTUECYBLjs.b.rollup;exports.NativeFederationTypeScriptHost = i; exports.NativeFederationTypeScriptRemote = r;
1
+ "use strict";Object.defineProperty(exports, "__esModule", {value: true});var _chunk6KP4ELTFjs = require('./chunk-6KP4ELTF.js');var r=_chunk6KP4ELTFjs.a.rollup,i= exports.NativeFederationTypeScriptHost =_chunk6KP4ELTFjs.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-XU2AS3PB.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-RFGP2BOW.mjs";var r=e.rollup,i=t.rollup;export{i as NativeFederationTypeScriptHost,r as NativeFederationTypeScriptRemote};
package/dist/rspack.js CHANGED
@@ -1 +1 @@
1
- "use strict";Object.defineProperty(exports, "__esModule", {value: true});var _chunkUTUECYBLjs = require('./chunk-UTUECYBL.js');var r=_chunkUTUECYBLjs.a.rspack,a= exports.NativeFederationTypeScriptHost =_chunkUTUECYBLjs.b.rspack;exports.NativeFederationTypeScriptHost = a; exports.NativeFederationTypeScriptRemote = r;
1
+ "use strict";Object.defineProperty(exports, "__esModule", {value: true});var _chunk6KP4ELTFjs = require('./chunk-6KP4ELTF.js');var r=_chunk6KP4ELTFjs.a.rspack,a= exports.NativeFederationTypeScriptHost =_chunk6KP4ELTFjs.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-XU2AS3PB.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-RFGP2BOW.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 _chunkUTUECYBLjs = require('./chunk-UTUECYBL.js');var i=_chunkUTUECYBLjs.a.vite,p= exports.NativeFederationTypeScriptHost =_chunkUTUECYBLjs.b.vite;exports.NativeFederationTypeScriptHost = p; exports.NativeFederationTypeScriptRemote = i;
1
+ "use strict";Object.defineProperty(exports, "__esModule", {value: true});var _chunk6KP4ELTFjs = require('./chunk-6KP4ELTF.js');var i=_chunk6KP4ELTFjs.a.vite,p= exports.NativeFederationTypeScriptHost =_chunk6KP4ELTFjs.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-XU2AS3PB.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-RFGP2BOW.mjs";var i=t.vite,p=e.vite;export{p as NativeFederationTypeScriptHost,i as NativeFederationTypeScriptRemote};
package/dist/webpack.js CHANGED
@@ -1 +1 @@
1
- "use strict";Object.defineProperty(exports, "__esModule", {value: true});var _chunkUTUECYBLjs = require('./chunk-UTUECYBL.js');var i=_chunkUTUECYBLjs.a.webpack,p= exports.NativeFederationTypeScriptHost =_chunkUTUECYBLjs.b.webpack;exports.NativeFederationTypeScriptHost = p; exports.NativeFederationTypeScriptRemote = i;
1
+ "use strict";Object.defineProperty(exports, "__esModule", {value: true});var _chunk6KP4ELTFjs = require('./chunk-6KP4ELTF.js');var i=_chunk6KP4ELTFjs.a.webpack,p= exports.NativeFederationTypeScriptHost =_chunk6KP4ELTFjs.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-XU2AS3PB.mjs";var i=e.webpack,p=t.webpack;export{p as NativeFederationTypeScriptHost,i as NativeFederationTypeScriptRemote};
1
+ import{a as e,b as t}from"./chunk-RFGP2BOW.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.5.1",
3
+ "version": "0.6.0",
4
4
  "description": "Bundler agnostic unplugin to share federated types",
5
5
  "keywords": [
6
6
  "module federation",
@@ -52,11 +52,11 @@
52
52
  "author": "Matteo Pietro Dazzi <matteopietro.dazzi@gmail.com> (https://github.com/ilteoood)",
53
53
  "license": "MIT",
54
54
  "dependencies": {
55
- "adm-zip": "^0.5.10",
55
+ "adm-zip": "^0.5.14",
56
56
  "ansi-colors": "^4.1.3",
57
- "axios": "^1.6.7",
58
- "rambda": "^9.1.0",
59
- "unplugin": "^1.9.0"
57
+ "axios": "^1.7.2",
58
+ "rambda": "^9.2.1",
59
+ "unplugin": "^1.10.1"
60
60
  },
61
61
  "peerDependencies": {
62
62
  "typescript": "^4.9.0 || ^5.0.0",
@@ -1,2 +0,0 @@
1
- "use strict";Object.defineProperty(exports, "__esModule", {value: true}); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }var B=(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 _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]},k=(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},W=t=>Object.entries(t.moduleFederationConfig.remotes).reduce((e,[r,o])=>(e[r]=k(t,o),e),{}),C=t=>{if(!t.moduleFederationConfig)throw new Error("moduleFederationConfig is required");let e={..._,...t},r=W(e);return{hostOptions:e,mapRemotesToDownload:r}};var _fs = require('fs');var _typescript = require('typescript'); var _typescript2 = _interopRequireDefault(_typescript);var X={tsConfigPath:"./tsconfig.json",typesFolder:"@mf-types",compiledTypesFolder:"compiled-types",deleteTypesFolder:!0,additionalFilesToCompile:[],compilerInstance:"tsc"},J=({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}},G=["ts","tsx","vue","svelte"],w=t=>{let e=process.cwd();for(let r of G){let o=_path.join.call(void 0, e,`${t}.${r}`);if(_fs.existsSync.call(void 0, o))return o}},K=t=>Object.entries(t.moduleFederationConfig.exposes).reduce((e,[r,o])=>(e[r]=w(o)||w(_path.join.call(void 0, o,"index"))||o,e),{}),F=t=>{if(!t.moduleFederationConfig)throw new Error("moduleFederationConfig is required");let e={...X,...t},r=K(e);return{tsConfig:J(e),mapComponentsToExpose:r,remoteOptions:e}};var _admzip = require('adm-zip'); var _admzip2 = _interopRequireDefault(_admzip);var _axios = require('axios'); var _axios2 = _interopRequireDefault(_axios);var _crypto = require('crypto');var _promises = require('fs/promises');var re=/^\//,E=".d.ts",oe=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`))},a=(t,e)=>_path.normalize.call(void 0, t.outDir.replace(e.compiledTypesFolder,"")),g=(t,e)=>_path.normalize.call(void 0, t.outDir.replace(e.compiledTypesFolder,"").replace(e.typesFolder,"")),se=(t,e,r)=>{let o=_typescript2.default.createCompilerHost(e),s=o.writeFile,i=Object.fromEntries(Object.entries(t).map(([p,c])=>[_path.normalize.call(void 0, c),p])),n=a(e,r);return o.writeFile=(p,c,u,D,R,A)=>{s(p,c,u,D,R,A);for(let I of R||[]){let h=i[_path.normalize.call(void 0, I.fileName)];if(h){let v=_path.join.call(void 0, n,`${h}${E}`),L=_path.dirname.call(void 0, v),T=_path.relative.call(void 0, L,p).replace(E,"").replace(re,"").split(_path.sep).join("/");s(v,`export * from './${T}';
2
- export { default } from './${T}';`,u)}}},o},ie=t=>B("vue-tsc").createProgram(t),ne=(t,e)=>{switch(t.compilerInstance){case"vue-tsc":return ie(e);case"tsc":default:return _typescript2.default.createProgram(e)}},P=(t,e,r)=>{let o=se(t,e,r),i={rootNames:[...Object.values(t),...r.additionalFilesToCompile],host:o,options:e},n=ne(r,i),{diagnostics:p=[]}=n.emit();p.forEach(oe)};var me=(t,e)=>_path.join.call(void 0, t.replace(e.typesFolder,""),`${e.typesFolder}.zip`),q=async(t,e)=>{let r=a(t,e),o=new _admzip2.default;return o.addLocalFolder(r),o.writeZipPromise(me(r,e))},de=(t,e)=>r=>{throw{...r,message:`Network error: Unable to download federated mocks for '${t}' from '${e}' because '${r.message}'`}},y=async(t,e)=>{t.deleteTypesFolder&&await _promises.rm.call(void 0, e,{recursive:!0,force:!0}).catch(r=>console.error(_ansicolors2.default.red(`Unable to remove types folder, ${r}`)))},b=t=>{let e={},r={};return async([o,s])=>{e[s]=0;let i=_path.join.call(void 0, t.typesFolder,o);for(;e[s]++<t.maxRetries;)try{let n=await _axios2.default.get(s,{responseType:"arraybuffer"}).catch(de(o,s)),p=Buffer.from(n.data),c=_crypto.createHash.call(void 0, "sha256").update(p).digest("hex");r[s]!==c&&(await y(t,i),new (0, _admzip2.default)(p).extractAllTo(i,!0),r[s]=c);break}catch(n){if(console.error(_ansicolors2.default.red(`Error during types archive download: ${(n==null?void 0:n.message)||"unknown error"}`)),e[s]>=t.maxRetries)throw n}}};var Le=_unplugin.createUnplugin.call(void 0, t=>{let{remoteOptions:e,tsConfig:r,mapComponentsToExpose:o}=F(t),s=a(r,e);return{name:"native-federation-typescript/remote",async writeBundle(){try{P(o,r,e),await q(r,e),await y(e,s),console.log(_ansicolors2.default.green("Federated types created correctly"))}catch(i){console.error(_ansicolors2.default.red(`Unable to compile federated types, ${i}`))}},get vite(){return process.env.NODE_ENV==="production"?void 0:{buildStart:this.writeBundle,watchChange:this.writeBundle}},webpack(i){i.options.devServer=_rambda.mergeDeepRight.call(void 0, i.options.devServer||{},{static:{directory:_path.resolve.call(void 0, g(r,e))}})},rspack(i){i.options.devServer=_rambda.mergeDeepRight.call(void 0, i.options.devServer||{},{static:{directory:_path.resolve.call(void 0, g(r,e))}})}}}),Be= exports.b =_unplugin.createUnplugin.call(void 0, t=>{let{hostOptions:e,mapRemotesToDownload:r}=C(t),o=b(e);return{name:"native-federation-typescript/host",async writeBundle(){let 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 = Le; exports.b = Be;
@@ -1,2 +0,0 @@
1
- var B=(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 O from"ansi-colors";import{resolve as N}from"node:path";import{mergeDeepRight as U}from"rambda";import{createUnplugin as j}from"unplugin";var _={typesFolder:"@mf-types",deleteTypesFolder:!0,maxRetries:3},z=t=>{let e=t.split("@");return e[e.length-1]},k=(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},W=t=>Object.entries(t.moduleFederationConfig.remotes).reduce((e,[r,o])=>(e[r]=k(t,o),e),{}),C=t=>{if(!t.moduleFederationConfig)throw new Error("moduleFederationConfig is required");let e={..._,...t},r=W(e);return{hostOptions:e,mapRemotesToDownload:r}};import{existsSync as Z}from"fs";import{dirname as M,join as f,resolve as V}from"path";import m from"typescript";var X={tsConfigPath:"./tsconfig.json",typesFolder:"@mf-types",compiledTypesFolder:"compiled-types",deleteTypesFolder:!0,additionalFilesToCompile:[],compilerInstance:"tsc"},J=({tsConfigPath:t,typesFolder:e,compiledTypesFolder:r})=>{let o=V(t),s=m.readConfigFile(o,m.sys.readFile),i=m.parseJsonConfigFileContent(s.config,m.sys,M(o)),n=f(i.options.outDir||"dist",e,r);return{...i.options,emitDeclarationOnly:!0,noEmit:!1,declaration:!0,outDir:n}},G=["ts","tsx","vue","svelte"],w=t=>{let e=process.cwd();for(let r of G){let o=f(e,`${t}.${r}`);if(Z(o))return o}},K=t=>Object.entries(t.moduleFederationConfig.exposes).reduce((e,[r,o])=>(e[r]=w(o)||w(f(o,"index"))||o,e),{}),F=t=>{if(!t.moduleFederationConfig)throw new Error("moduleFederationConfig is required");let e={...X,...t},r=K(e);return{tsConfig:J(e),mapComponentsToExpose:r,remoteOptions:e}};import S from"adm-zip";import H from"ansi-colors";import pe from"axios";import{createHash as ce}from"node:crypto";import{rm as ae}from"node:fs/promises";import{join as $}from"node:path";import x from"ansi-colors";import{dirname as Q,join as Y,normalize as d,relative as ee,sep as te}from"path";import l from"typescript";var re=/^\//,E=".d.ts",oe=t=>{let{line:e}=t.file.getLineAndCharacterOfPosition(t.start);console.error(x.red(`TS Error ${t.code}':' ${l.flattenDiagnosticMessageText(t.messageText,l.sys.newLine)}`)),console.error(x.red(` at ${t.file.fileName}:${e+1} typescript.sys.newLine`))},a=(t,e)=>d(t.outDir.replace(e.compiledTypesFolder,"")),g=(t,e)=>d(t.outDir.replace(e.compiledTypesFolder,"").replace(e.typesFolder,"")),se=(t,e,r)=>{let o=l.createCompilerHost(e),s=o.writeFile,i=Object.fromEntries(Object.entries(t).map(([p,c])=>[d(c),p])),n=a(e,r);return o.writeFile=(p,c,u,D,R,A)=>{s(p,c,u,D,R,A);for(let I of R||[]){let h=i[d(I.fileName)];if(h){let v=Y(n,`${h}${E}`),L=Q(v),T=ee(L,p).replace(E,"").replace(re,"").split(te).join("/");s(v,`export * from './${T}';
2
- export { default } from './${T}';`,u)}}},o},ie=t=>B("vue-tsc").createProgram(t),ne=(t,e)=>{switch(t.compilerInstance){case"vue-tsc":return ie(e);case"tsc":default:return l.createProgram(e)}},P=(t,e,r)=>{let o=se(t,e,r),i={rootNames:[...Object.values(t),...r.additionalFilesToCompile],host:o,options:e},n=ne(r,i),{diagnostics:p=[]}=n.emit();p.forEach(oe)};var me=(t,e)=>$(t.replace(e.typesFolder,""),`${e.typesFolder}.zip`),q=async(t,e)=>{let r=a(t,e),o=new S;return o.addLocalFolder(r),o.writeZipPromise(me(r,e))},de=(t,e)=>r=>{throw{...r,message:`Network error: Unable to download federated mocks for '${t}' from '${e}' because '${r.message}'`}},y=async(t,e)=>{t.deleteTypesFolder&&await ae(e,{recursive:!0,force:!0}).catch(r=>console.error(H.red(`Unable to remove types folder, ${r}`)))},b=t=>{let e={},r={};return async([o,s])=>{e[s]=0;let i=$(t.typesFolder,o);for(;e[s]++<t.maxRetries;)try{let n=await pe.get(s,{responseType:"arraybuffer"}).catch(de(o,s)),p=Buffer.from(n.data),c=ce("sha256").update(p).digest("hex");r[s]!==c&&(await y(t,i),new S(p).extractAllTo(i,!0),r[s]=c);break}catch(n){if(console.error(H.red(`Error during types archive download: ${(n==null?void 0:n.message)||"unknown error"}`)),e[s]>=t.maxRetries)throw n}}};var Le=j(t=>{let{remoteOptions:e,tsConfig:r,mapComponentsToExpose:o}=F(t),s=a(r,e);return{name:"native-federation-typescript/remote",async writeBundle(){try{P(o,r,e),await q(r,e),await y(e,s),console.log(O.green("Federated types created correctly"))}catch(i){console.error(O.red(`Unable to compile federated types, ${i}`))}},get vite(){return process.env.NODE_ENV==="production"?void 0:{buildStart:this.writeBundle,watchChange:this.writeBundle}},webpack(i){i.options.devServer=U(i.options.devServer||{},{static:{directory:N(g(r,e))}})},rspack(i){i.options.devServer=U(i.options.devServer||{},{static:{directory:N(g(r,e))}})}}}),Be=j(t=>{let{hostOptions:e,mapRemotesToDownload:r}=C(t),o=b(e);return{name:"native-federation-typescript/host",async writeBundle(){let s=Object.entries(r).map(o);await Promise.allSettled(s),console.log(O.green("Federated types extraction completed"))},get vite(){return process.env.NODE_ENV==="production"?void 0:{buildStart:this.writeBundle,watchChange:this.writeBundle}}}});export{Le as a,Be as b};