@module-federation/managers 0.24.1 → 2.0.1

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/dist/index.cjs.js DELETED
@@ -1,499 +0,0 @@
1
- 'use strict';
2
-
3
- var path = require('path');
4
- var sdk = require('@module-federation/sdk');
5
- var finder = require('find-pkg');
6
- var fs = require('fs');
7
- var fs$1 = require('fs-extra');
8
-
9
- class BasicPluginOptionsManager {
10
- constructor(root = process.cwd()) {
11
- this._root = root;
12
- }
13
- get enable() {
14
- return Boolean(this._options);
15
- }
16
- get options() {
17
- return this._options;
18
- }
19
- get root() {
20
- return this._root;
21
- }
22
- init(options, extraArgs) {
23
- this._options = options;
24
- }
25
- setOptions(options) {
26
- this._options = options;
27
- }
28
- }
29
-
30
- class PKGJsonManager {
31
- setPKGJson(pkg) {
32
- this._pkg = pkg;
33
- }
34
- readPKGJson(root = process.cwd()) {
35
- if (this._pkg) {
36
- return this._pkg;
37
- }
38
- try {
39
- // eslint-disable-next-line no-restricted-globals
40
- const pkg = JSON.parse(fs.readFileSync(path.resolve(root, 'package.json'), 'utf8'));
41
- this._pkg = pkg;
42
- return pkg;
43
- }
44
- catch (_err) {
45
- try {
46
- const pkg = finder.sync(root);
47
- this._pkg = pkg;
48
- return pkg;
49
- }
50
- catch (err) {
51
- sdk.logger.error(err);
52
- return {};
53
- }
54
- }
55
- }
56
- getExposeGarfishModuleType(root = process.cwd()) {
57
- const pkg = this.readPKGJson(root);
58
- return pkg?.['mf']?.type === sdk.MFModuleType.NPM
59
- ? sdk.MFModuleType.NPM
60
- : sdk.MFModuleType.APP;
61
- }
62
- }
63
-
64
- const LOCAL_BUILD_VERSION = 'local';
65
- const UNKNOWN_MODULE_NAME = 'UNKNOWN';
66
-
67
- function processFn(options, normalizeSimple, normalizeOptions, fn) {
68
- const object = (obj) => {
69
- for (const [key, value] of Object.entries(obj)) {
70
- if (typeof value === 'string') {
71
- fn(key, normalizeSimple(value, key));
72
- }
73
- else {
74
- fn(key, normalizeOptions(value, key));
75
- }
76
- }
77
- };
78
- const array = (items) => {
79
- for (const item of items) {
80
- if (typeof item === 'string') {
81
- fn(item, normalizeSimple(item, item));
82
- }
83
- else if (item && typeof item === 'object') {
84
- object(item);
85
- }
86
- else {
87
- throw new Error('Unexpected options format');
88
- }
89
- }
90
- };
91
- if (!options) {
92
- return;
93
- }
94
- else if (Array.isArray(options)) {
95
- array(options);
96
- }
97
- else if (typeof options === 'object') {
98
- object(options);
99
- }
100
- else {
101
- throw new Error('Unexpected options format');
102
- }
103
- }
104
- function parseOptions(options, normalizeSimple, normalizeOptions) {
105
- const items = [];
106
- processFn(options, normalizeSimple, normalizeOptions, (key, value) => {
107
- items.push([key, value]);
108
- });
109
- return items;
110
- }
111
- function getBuildVersion(root) {
112
- if (process.env['MF_BUILD_VERSION']) {
113
- return process.env['MF_BUILD_VERSION'];
114
- }
115
- const pkg = new PKGJsonManager().readPKGJson(root);
116
- if (pkg?.['version'] && typeof pkg['version'] === 'string') {
117
- return pkg['version'];
118
- }
119
- return LOCAL_BUILD_VERSION;
120
- }
121
- function getBuildName() {
122
- return process.env['MF_BUILD_NAME'];
123
- }
124
-
125
- var utils = /*#__PURE__*/Object.freeze({
126
- __proto__: null,
127
- getBuildName: getBuildName,
128
- getBuildVersion: getBuildVersion,
129
- parseOptions: parseOptions
130
- });
131
-
132
- function normalizeExposeModuleName(exposeKey) {
133
- const relativePath = path.relative('.', exposeKey);
134
- if (!relativePath) {
135
- return 'ExposeEntry';
136
- }
137
- return relativePath;
138
- }
139
- class ContainerManager extends BasicPluginOptionsManager {
140
- get enable() {
141
- return Boolean(this.options.name &&
142
- this.options.exposes &&
143
- (Array.isArray(this.options.exposes)
144
- ? this.options.exposes.length > 0
145
- : Object.keys(this.options.exposes).length > 0));
146
- }
147
- get globalEntryName() {
148
- const { name, library } = this.options;
149
- if (library) {
150
- if (typeof library.name === 'string') {
151
- return library.name;
152
- }
153
- return name;
154
- }
155
- return name;
156
- }
157
- get containerPluginExposesOptions() {
158
- const { exposes } = this.options;
159
- const parsedOptions = parseOptions(exposes, (item, key) => ({
160
- import: Array.isArray(item) ? item : [item],
161
- name: sdk.generateExposeFilename(key, false),
162
- }), (item, key) => ({
163
- import: Array.isArray(item.import) ? item.import : [item.import],
164
- name: item.name || sdk.generateExposeFilename(key, false),
165
- }));
166
- return parsedOptions.reduce((sum, item) => {
167
- const [exposeKey, exposeObj] = item;
168
- sum[exposeKey] = exposeObj;
169
- return sum;
170
- }, {});
171
- }
172
- // { '.' : './src/Button.jsx', './backup': './src/Button.jsx' } => { './src/Button' : ['.','./backup'] }
173
- get fileExposeKeyMap() {
174
- const parsedOptions = this._parseOptions();
175
- return parsedOptions.reduce((sum, item) => {
176
- const [exposeKey, exposeObject] = item;
177
- exposeObject.import.forEach((exposeFile) => {
178
- const exposeFileWithoutExt = exposeFile.replace(path.extname(exposeFile), '');
179
- sum[exposeFileWithoutExt] ||= new Set();
180
- sum[exposeFileWithoutExt].add(exposeKey);
181
- });
182
- return sum;
183
- }, {});
184
- }
185
- // { '.' : './src/Button.jsx' } => { '__federation_expose_Component' : ['src/Buttton'] }
186
- get exposeFileNameImportMap() {
187
- const { exposes } = this.options;
188
- const parsedOptions = parseOptions(exposes, (item, key) => ({
189
- import: Array.isArray(item) ? item : [item],
190
- name: sdk.generateExposeFilename(key, false),
191
- }), (item, key) => ({
192
- import: Array.isArray(item.import) ? item.import : [item.import],
193
- name: item.name || sdk.generateExposeFilename(key, false),
194
- }));
195
- return parsedOptions.reduce((sum, item) => {
196
- const [_exposeKey, exposeObj] = item;
197
- const { name, import: importPath } = exposeObj;
198
- sum[name] = importPath;
199
- return sum;
200
- }, {});
201
- }
202
- // { '.' : './src/Button.jsx' } => { '.' : ['src/Button'] }
203
- get exposeObject() {
204
- const parsedOptions = this._parseOptions();
205
- return parsedOptions.reduce((sum, item) => {
206
- const [exposeKey, exposeObject] = item;
207
- sum[exposeKey] = [];
208
- exposeObject.import.forEach((item) => {
209
- const relativePath = path.relative('.', item.replace(path.extname(item), ''));
210
- sum[exposeKey].push(relativePath);
211
- });
212
- return sum;
213
- }, {});
214
- }
215
- // { '.' : './src/Button.jsx' } => ['./src/Button.jsx']
216
- get exposeFiles() {
217
- const parsedOptions = this._parseOptions();
218
- return parsedOptions.reduce((sum, item) => {
219
- const [_exposeKey, exposeObject] = item;
220
- sum.push(...exposeObject.import);
221
- return sum;
222
- }, []);
223
- }
224
- get manifestModuleInfos() {
225
- if (this._manifestModuleInfos) {
226
- return this._manifestModuleInfos;
227
- }
228
- // { '.' : './src/Button.jsx' } => { '.' : { name: 'ExposeEntry', file: './src/Button.jsx', requires: {} } }
229
- const parsedOptions = this._parseOptions();
230
- this._manifestModuleInfos = parsedOptions.reduce((sum, item) => {
231
- const [exposeKey, exposeObject] = item;
232
- sum[exposeKey] = {
233
- name: exposeObject.name || normalizeExposeModuleName(exposeKey),
234
- file: exposeObject.import,
235
- };
236
- return sum;
237
- }, {});
238
- return this._manifestModuleInfos;
239
- }
240
- // { '.' : './src/Button.jsx' } => { index: ['./src/Button.jsx'] }
241
- get webpackEntry() {
242
- return Object.values(this.manifestModuleInfos).reduce((sum, cur) => {
243
- const entry = cur.name === 'ExposeEntry'
244
- ? 'index'
245
- : cur.name.slice(0, 1).toLowerCase() + cur.name.slice(1);
246
- sum[entry] = cur.file;
247
- return sum;
248
- }, {});
249
- }
250
- _parseOptions() {
251
- if (this._parsedOptions) {
252
- return this._parsedOptions;
253
- }
254
- this._parsedOptions = parseOptions(this.options.exposes, (item) => ({
255
- import: Array.isArray(item) ? item : [item],
256
- name: undefined,
257
- }), (item) => ({
258
- import: Array.isArray(item.import) ? item.import : [item.import],
259
- name: undefined,
260
- }));
261
- return this._parsedOptions;
262
- }
263
- init(options) {
264
- this.setOptions(options);
265
- this.validate(options.name);
266
- }
267
- validate(name) {
268
- if (!name) {
269
- throw new Error(`container name can not be empty!`);
270
- }
271
- }
272
- }
273
-
274
- function getEntry(remoteObj) {
275
- if (typeof remoteObj === 'string') {
276
- return remoteObj;
277
- }
278
- if (typeof remoteObj.external === 'string') {
279
- return remoteObj.external;
280
- }
281
- throw new Error('Not support "array" remote value yet!');
282
- }
283
- class RemoteManager extends BasicPluginOptionsManager {
284
- constructor() {
285
- super(...arguments);
286
- this.normalizedOptions = {};
287
- }
288
- get enable() {
289
- return Boolean(this.remotes &&
290
- (Array.isArray(this.remotes)
291
- ? this.remotes.length > 0
292
- : Object.keys(this.remotes).length > 0));
293
- }
294
- get statsRemoteWithEmptyUsedIn() {
295
- const { name } = this.options;
296
- return Object.keys(this.normalizedOptions).reduce((sum, cur) => {
297
- const normalizedOption = this.normalizedOptions[cur];
298
- let curObj;
299
- if ('entry' in normalizedOption) {
300
- curObj = {
301
- entry: normalizedOption.entry,
302
- alias: normalizedOption.alias,
303
- moduleName: UNKNOWN_MODULE_NAME,
304
- federationContainerName: normalizedOption.name,
305
- consumingFederationContainerName: name,
306
- usedIn: [UNKNOWN_MODULE_NAME],
307
- };
308
- }
309
- else {
310
- curObj = {
311
- alias: normalizedOption.alias,
312
- moduleName: UNKNOWN_MODULE_NAME,
313
- version: normalizedOption.version,
314
- federationContainerName: normalizedOption.name,
315
- consumingFederationContainerName: name,
316
- usedIn: [UNKNOWN_MODULE_NAME],
317
- };
318
- }
319
- sum.push(curObj);
320
- return sum;
321
- }, []);
322
- }
323
- // 'micro-app-sub3': 'app:@garfish/micro-app-sub3:0.0.4',
324
- // ↓↓↓
325
- // {
326
- // 'micro-app-sub3': @garfish/micro-app-sub3:0.0.4
327
- // }
328
- get dtsRemotes() {
329
- return Object.keys(this.normalizedOptions).reduce((sum, remoteAlias) => {
330
- const remoteInfo = this.normalizedOptions[remoteAlias];
331
- sum[remoteAlias] = sdk.composeKeyWithSeparator(remoteInfo.name, 'entry' in remoteInfo ? remoteInfo.entry : remoteInfo.version);
332
- return sum;
333
- }, {});
334
- }
335
- get remotes() {
336
- return this.options.remotes;
337
- }
338
- // INFO: only support remoteType: script now
339
- normalizeOptions(options = {}) {
340
- this.normalizedOptions = Object.keys(options).reduce((sum, remoteAlias) => {
341
- if (Array.isArray(options)) {
342
- return sum;
343
- }
344
- const remoteInfo = options[remoteAlias];
345
- if (Array.isArray(remoteInfo)) {
346
- return sum;
347
- }
348
- let parsedOptions;
349
- try {
350
- parsedOptions = sdk.parseEntry(typeof remoteInfo === 'string' ? remoteInfo : getEntry(remoteInfo), '', '@');
351
- }
352
- catch (e) {
353
- // noop
354
- }
355
- if (!parsedOptions) {
356
- return sum;
357
- }
358
- sum[remoteAlias] = {
359
- ...parsedOptions,
360
- alias: remoteAlias,
361
- shareScope: typeof remoteInfo === 'object'
362
- ? remoteInfo.shareScope || 'default'
363
- : 'default',
364
- };
365
- return sum;
366
- }, {});
367
- }
368
- init(options) {
369
- this.setOptions(options);
370
- this.normalizeOptions(options.remotes);
371
- }
372
- }
373
-
374
- // @ts-ignore this pkg miss types
375
- class SharedManager extends BasicPluginOptionsManager {
376
- constructor() {
377
- super(...arguments);
378
- this.normalizedOptions = {};
379
- }
380
- get enable() {
381
- return Boolean(Object.keys(this.sharedPluginOptions.shared).length);
382
- }
383
- get sharedPluginOptions() {
384
- const normalizedShared = this.normalizedOptions;
385
- const shared = Object.keys(normalizedShared).reduce((sum, cur) => {
386
- const { singleton, requiredVersion, version, eager, shareScope, import: sharedImport, treeShaking, } = normalizedShared[cur];
387
- sum[cur] = {
388
- singleton,
389
- requiredVersion,
390
- version,
391
- eager,
392
- shareScope,
393
- import: sharedImport,
394
- treeShaking,
395
- };
396
- return sum;
397
- }, {});
398
- return {
399
- shared,
400
- shareScope: this.options.shareScope || 'default',
401
- };
402
- }
403
- findPkg(name, shareConfig) {
404
- try {
405
- let pkgPath = '';
406
- let depName = name;
407
- if (shareConfig.import) {
408
- if (path.isAbsolute(shareConfig.import)) {
409
- pkgPath = shareConfig.import;
410
- }
411
- else if (shareConfig.import.startsWith('.')) {
412
- pkgPath = path.resolve(this.root, shareConfig.import);
413
- }
414
- }
415
- else {
416
- if (shareConfig.packageName) {
417
- depName = shareConfig.packageName;
418
- }
419
- }
420
- pkgPath = pkgPath || require.resolve(depName, { paths: [this.root] });
421
- const pkgJsonPath = finder.sync(pkgPath);
422
- return {
423
- pkg: JSON.parse(fs$1.readFileSync(pkgJsonPath, 'utf-8')),
424
- path: '',
425
- pkgPath: '',
426
- };
427
- }
428
- catch (err) {
429
- return {
430
- pkg: {},
431
- path: '',
432
- pkgPath: '',
433
- };
434
- }
435
- }
436
- get enableTreeShaking() {
437
- return Object.values(this.normalizedOptions).some((item) => item.treeShaking);
438
- }
439
- transformSharedConfig(sharedConfig) {
440
- const defaultSharedConfig = {
441
- singleton: true,
442
- requiredVersion: undefined,
443
- shareScope: 'default',
444
- };
445
- return {
446
- ...defaultSharedConfig,
447
- ...sharedConfig,
448
- };
449
- }
450
- normalizeOptions(options) {
451
- const normalizedShared = {};
452
- const sharedOptions = parseOptions(options, (item, key) => {
453
- if (typeof item !== 'string')
454
- throw new Error('Unexpected array in shared');
455
- const config = item === key || !sdk.isRequiredVersion(item)
456
- ? {
457
- import: item,
458
- }
459
- : {
460
- import: key,
461
- requiredVersion: item,
462
- };
463
- return config;
464
- }, (item) => item);
465
- sharedOptions.forEach((item) => {
466
- const [sharedName, sharedOptions] = item;
467
- const pkgInfo = this.findPkg(sharedName, sharedOptions);
468
- const sharedConfig = this.transformSharedConfig(sharedOptions);
469
- normalizedShared[sharedName] = {
470
- ...sharedConfig,
471
- requiredVersion: typeof sharedConfig.requiredVersion !== 'undefined'
472
- ? sharedConfig.requiredVersion
473
- : `^${pkgInfo.pkg['version']}`,
474
- name: sharedName,
475
- version: pkgInfo.pkg['version'],
476
- eager: Boolean(sharedConfig.eager),
477
- };
478
- });
479
- this.normalizedOptions = normalizedShared;
480
- }
481
- init(options) {
482
- this.setOptions(options);
483
- this.normalizeOptions(options.shared);
484
- }
485
- }
486
-
487
- var types = /*#__PURE__*/Object.freeze({
488
- __proto__: null
489
- });
490
-
491
- exports.BasicPluginOptionsManager = BasicPluginOptionsManager;
492
- exports.ContainerManager = ContainerManager;
493
- exports.PKGJsonManager = PKGJsonManager;
494
- exports.RemoteManager = RemoteManager;
495
- exports.SharedManager = SharedManager;
496
- exports.UNKNOWN_MODULE_NAME = UNKNOWN_MODULE_NAME;
497
- exports.types = types;
498
- exports.utils = utils;
499
- //# sourceMappingURL=index.cjs.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.cjs.js","sources":["../../src/BasicPluginOptionsManager.ts","../../src/PKGJsonManager.ts","../../src/constant.ts","../../src/utils.ts","../../src/ContainerManager.ts","../../src/RemoteManager.ts","../../src/SharedManager.ts"],"sourcesContent":[null,null,null,null,null,null,null],"names":["logger","MFModuleType","generateExposeFilename","composeKeyWithSeparator","parseEntry","findPkg","fs","isRequiredVersion"],"mappings":"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"}