@angular-architects/native-federation 0.9.0 → 0.9.2

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.
Files changed (53) hide show
  1. package/README.md +314 -259
  2. package/builders.json +10 -10
  3. package/collection.json +17 -17
  4. package/executors.json +10 -10
  5. package/generators.json +12 -12
  6. package/package.json +19 -9
  7. package/src/builders/build/builder.js +99 -177
  8. package/src/builders/build/builder.js.map +1 -1
  9. package/src/builders/build/schema.d.ts +3 -3
  10. package/src/builders/build/schema.json +550 -550
  11. package/src/config.d.ts +2 -2
  12. package/src/config.js +7 -7
  13. package/src/config.js.map +1 -1
  14. package/src/executors/build/schema.d.ts +1 -1
  15. package/src/executors/build/schema.json +9 -9
  16. package/src/generators/native-federation/schema.d.ts +5 -5
  17. package/src/generators/native-federation/schema.json +29 -29
  18. package/src/index.d.ts +1 -1
  19. package/src/index.js +1 -1
  20. package/src/index.js.map +1 -1
  21. package/src/schematics/init/files/{federation.config.js → federation.config.js__tmpl__} +0 -4
  22. package/src/schematics/init/schema.d.ts +6 -6
  23. package/src/schematics/init/schema.json +34 -34
  24. package/src/schematics/init/schematic.js +35 -29
  25. package/src/schematics/init/schematic.js.map +1 -1
  26. package/src/utils/angular-esbuild-adapter.d.ts +3 -0
  27. package/src/utils/angular-esbuild-adapter.js +88 -0
  28. package/src/utils/angular-esbuild-adapter.js.map +1 -0
  29. package/src/utils/rollup.d.ts +1 -0
  30. package/src/utils/rollup.js +58 -0
  31. package/src/utils/rollup.js.map +1 -0
  32. package/src/utils/shared-mappings-plugin.d.ts +1 -1
  33. package/src/config/federation-config.d.ts +0 -26
  34. package/src/config/federation-config.js +0 -3
  35. package/src/config/federation-config.js.map +0 -1
  36. package/src/config/index.d.ts +0 -2
  37. package/src/config/index.js +0 -10
  38. package/src/config/index.js.map +0 -1
  39. package/src/config/with-native-federation.d.ts +0 -2
  40. package/src/config/with-native-federation.js +0 -53
  41. package/src/config/with-native-federation.js.map +0 -1
  42. package/src/utils/build-utils.d.ts +0 -9
  43. package/src/utils/build-utils.js +0 -38
  44. package/src/utils/build-utils.js.map +0 -1
  45. package/src/utils/hash-file.d.ts +0 -1
  46. package/src/utils/hash-file.js +0 -13
  47. package/src/utils/hash-file.js.map +0 -1
  48. package/src/utils/mapped-paths.d.ts +0 -10
  49. package/src/utils/mapped-paths.js +0 -37
  50. package/src/utils/mapped-paths.js.map +0 -1
  51. package/src/utils/package-info.d.ts +0 -7
  52. package/src/utils/package-info.js +0 -94
  53. package/src/utils/package-info.js.map +0 -1
@@ -1,53 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.withNativeFederation = void 0;
4
- const mapped_paths_1 = require("../utils/mapped-paths");
5
- const config_1 = require("../config");
6
- function withNativeFederation(config) {
7
- var _a, _b, _c;
8
- const skip = (_a = new Set(config.skip)) !== null && _a !== void 0 ? _a : new Set();
9
- return {
10
- name: (_b = config.name) !== null && _b !== void 0 ? _b : '',
11
- exposes: (_c = config.exposes) !== null && _c !== void 0 ? _c : {},
12
- shared: normalizeShared(config, skip),
13
- sharedMappings: normalizeSharedMappings(config, skip),
14
- };
15
- }
16
- exports.withNativeFederation = withNativeFederation;
17
- function normalizeShared(config, skip) {
18
- let result = {};
19
- const shared = config.shared;
20
- if (!shared) {
21
- result = (0, config_1.shareAll)({
22
- singleton: true,
23
- strictVersion: true,
24
- requiredVersion: 'auto',
25
- });
26
- }
27
- else {
28
- result = Object.keys(shared).reduce((acc, cur) => {
29
- var _a, _b, _c;
30
- return (Object.assign(Object.assign({}, acc), { [cur]: {
31
- requiredVersion: (_a = shared[cur].requiredVersion) !== null && _a !== void 0 ? _a : 'auto',
32
- singleton: (_b = shared[cur].singleton) !== null && _b !== void 0 ? _b : false,
33
- strictVersion: (_c = shared[cur].strictVersion) !== null && _c !== void 0 ? _c : false,
34
- version: shared[cur].version,
35
- } }));
36
- }, {});
37
- result = (0, config_1.share)(result);
38
- }
39
- result = Object.keys(result)
40
- .filter((key) => !skip.has(key))
41
- .reduce((acc, cur) => (Object.assign(Object.assign({}, acc), { [cur]: result[cur] })), {});
42
- return result;
43
- }
44
- function normalizeSharedMappings(config, skip) {
45
- const rootTsConfigPath = (0, config_1.findRootTsConfigJson)();
46
- const paths = (0, mapped_paths_1.getMappedPaths)({
47
- rootTsConfigPath,
48
- sharedMappings: config.sharedMappings,
49
- });
50
- const result = paths.filter((p) => !skip.has(p.key));
51
- return result;
52
- }
53
- //# sourceMappingURL=with-native-federation.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"with-native-federation.js","sourceRoot":"","sources":["../../../../../libs/native-federation/src/config/with-native-federation.ts"],"names":[],"mappings":";;;AAAA,wDAAmE;AACnE,sCAAkE;AAQlE,SAAgB,oBAAoB,CAClC,MAAwB;;IAExB,MAAM,IAAI,GAAG,MAAA,IAAI,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,mCAAI,IAAI,GAAG,EAAU,CAAC;IAEvD,OAAO;QACL,IAAI,EAAE,MAAA,MAAM,CAAC,IAAI,mCAAI,EAAE;QACvB,OAAO,EAAE,MAAA,MAAM,CAAC,OAAO,mCAAI,EAAE;QAC7B,MAAM,EAAE,eAAe,CAAC,MAAM,EAAE,IAAI,CAAC;QACrC,cAAc,EAAE,uBAAuB,CAAC,MAAM,EAAE,IAAI,CAAC;KACtD,CAAC;AACJ,CAAC;AAXD,oDAWC;AAED,SAAS,eAAe,CACtB,MAAwB,EACxB,IAAiB;IAEjB,IAAI,MAAM,GAA2C,EAAE,CAAC;IAExD,MAAM,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC;IAE7B,IAAI,CAAC,MAAM,EAAE;QACX,MAAM,GAAG,IAAA,iBAAQ,EAAC;YAChB,SAAS,EAAE,IAAI;YACf,aAAa,EAAE,IAAI;YACnB,eAAe,EAAE,MAAM;SACxB,CAA2C,CAAC;KAC9C;SAAM;QACL,MAAM,GAAG,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,MAAM,CACjC,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE;;YAAC,OAAA,iCACT,GAAG,KACN,CAAC,GAAG,CAAC,EAAE;oBACL,eAAe,EAAE,MAAA,MAAM,CAAC,GAAG,CAAC,CAAC,eAAe,mCAAI,MAAM;oBACtD,SAAS,EAAE,MAAA,MAAM,CAAC,GAAG,CAAC,CAAC,SAAS,mCAAI,KAAK;oBACzC,aAAa,EAAE,MAAA,MAAM,CAAC,GAAG,CAAC,CAAC,aAAa,mCAAI,KAAK;oBACjD,OAAO,EAAE,MAAM,CAAC,GAAG,CAAC,CAAC,OAAO;iBAC7B,IACD,CAAA;SAAA,EACF,EAAE,CACH,CAAC;QAEF,MAAM,GAAG,IAAA,cAAK,EAAC,MAAM,CAA2C,CAAC;KAClE;IAED,MAAM,GAAG,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC;SACzB,MAAM,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;SAC/B,MAAM,CACL,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,CAAC,iCACT,GAAG,KACN,CAAC,GAAG,CAAC,EAAE,MAAM,CAAC,GAAG,CAAC,IAClB,EACF,EAAE,CACH,CAAC;IAEJ,OAAO,MAAM,CAAC;AAChB,CAAC;AAED,SAAS,uBAAuB,CAC9B,MAAwB,EACxB,IAAiB;IAEjB,MAAM,gBAAgB,GAAG,IAAA,6BAAoB,GAAE,CAAC;IAEhD,MAAM,KAAK,GAAG,IAAA,6BAAc,EAAC;QAC3B,gBAAgB;QAChB,cAAc,EAAE,MAAM,CAAC,cAAc;KACtC,CAAC,CAAC;IAEH,MAAM,MAAM,GAAG,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;IAErD,OAAO,MAAM,CAAC;AAChB,CAAC"}
@@ -1,9 +0,0 @@
1
- import { MappedPath } from './mapped-paths';
2
- export declare function bundle({ entryPoint, tsConfigPath, external, outfile, mappedPaths, useSharedMappingPlugin, }: {
3
- entryPoint: string;
4
- tsConfigPath: string;
5
- external: Array<string>;
6
- outfile: string;
7
- mappedPaths: MappedPath[];
8
- useSharedMappingPlugin: boolean;
9
- }): Promise<void>;
@@ -1,38 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.bundle = void 0;
4
- const tslib_1 = require("tslib");
5
- const esbuild = require("esbuild");
6
- const compiler_plugin_1 = require("@angular-devkit/build-angular/src/builders/browser-esbuild/compiler-plugin");
7
- const shared_mappings_plugin_1 = require("./shared-mappings-plugin");
8
- function bundle({ entryPoint, tsConfigPath, external, outfile, mappedPaths, useSharedMappingPlugin, }) {
9
- return tslib_1.__awaiter(this, void 0, void 0, function* () {
10
- yield esbuild.build({
11
- entryPoints: [entryPoint],
12
- external,
13
- outfile,
14
- bundle: true,
15
- sourcemap: true,
16
- minify: true,
17
- format: 'esm',
18
- target: ['esnext'],
19
- plugins: [
20
- (0, compiler_plugin_1.createCompilerPlugin)({
21
- sourcemap: true,
22
- tsconfig: tsConfigPath,
23
- advancedOptimizations: true,
24
- thirdPartySourcemaps: true,
25
- }, {
26
- optimization: true,
27
- sourcemap: true,
28
- workspaceRoot: __dirname,
29
- }),
30
- ...(useSharedMappingPlugin
31
- ? [(0, shared_mappings_plugin_1.createSharedMappingsPlugin)(mappedPaths)]
32
- : []),
33
- ],
34
- });
35
- });
36
- }
37
- exports.bundle = bundle;
38
- //# sourceMappingURL=build-utils.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"build-utils.js","sourceRoot":"","sources":["../../../../../libs/native-federation/src/utils/build-utils.ts"],"names":[],"mappings":";;;;AAAA,mCAAmC;AACnC,gHAAkH;AAElH,qEAAsE;AAEtE,SAAsB,MAAM,CAAC,EAC3B,UAAU,EACV,YAAY,EACZ,QAAQ,EACR,OAAO,EACP,WAAW,EACX,sBAAsB,GAQvB;;QACC,MAAM,OAAO,CAAC,KAAK,CAAC;YAClB,WAAW,EAAE,CAAC,UAAU,CAAC;YACzB,QAAQ;YACR,OAAO;YACP,MAAM,EAAE,IAAI;YACZ,SAAS,EAAE,IAAI;YACf,MAAM,EAAE,IAAI;YACZ,MAAM,EAAE,KAAK;YACb,MAAM,EAAE,CAAC,QAAQ,CAAC;YAClB,OAAO,EAAE;gBACP,IAAA,sCAAoB,EAClB;oBACE,SAAS,EAAE,IAAI;oBACf,QAAQ,EAAE,YAAY;oBACtB,qBAAqB,EAAE,IAAI;oBAC3B,oBAAoB,EAAE,IAAI;iBAC3B,EACD;oBACE,YAAY,EAAE,IAAI;oBAClB,SAAS,EAAE,IAAI;oBACf,aAAa,EAAE,SAAS;iBACzB,CACF;gBACD,GAAG,CAAC,sBAAsB;oBACxB,CAAC,CAAC,CAAC,IAAA,mDAA0B,EAAC,WAAW,CAAC,CAAC;oBAC3C,CAAC,CAAC,EAAE,CAAC;aACR;SACF,CAAC,CAAC;IACL,CAAC;CAAA;AA3CD,wBA2CC"}
@@ -1 +0,0 @@
1
- export declare function hashFile(fileName: string): string;
@@ -1,13 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.hashFile = void 0;
4
- const crypto = require("crypto");
5
- const fs = require("fs");
6
- function hashFile(fileName) {
7
- const fileBuffer = fs.readFileSync(fileName);
8
- const hashSum = crypto.createHash('md5');
9
- hashSum.update(fileBuffer);
10
- return hashSum.digest('hex');
11
- }
12
- exports.hashFile = hashFile;
13
- //# sourceMappingURL=hash-file.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"hash-file.js","sourceRoot":"","sources":["../../../../../libs/native-federation/src/utils/hash-file.ts"],"names":[],"mappings":";;;AAAA,iCAAiC;AACjC,yBAAyB;AAEzB,SAAgB,QAAQ,CAAC,QAAgB;IACvC,MAAM,UAAU,GAAG,EAAE,CAAC,YAAY,CAAC,QAAQ,CAAC,CAAC;IAC7C,MAAM,OAAO,GAAG,MAAM,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC;IACzC,OAAO,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC;IAC3B,OAAO,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;AAC/B,CAAC;AALD,4BAKC"}
@@ -1,10 +0,0 @@
1
- export interface MappedPath {
2
- key: string;
3
- path: string;
4
- }
5
- export interface GetMappedPathsOptions {
6
- rootTsConfigPath: string;
7
- sharedMappings?: string[];
8
- rootPath?: string;
9
- }
10
- export declare function getMappedPaths({ rootTsConfigPath, sharedMappings, rootPath, }: GetMappedPathsOptions): Array<MappedPath>;
@@ -1,37 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.getMappedPaths = void 0;
4
- const path = require("path");
5
- const fs = require("fs");
6
- const JSON5 = require("json5");
7
- function getMappedPaths({ rootTsConfigPath, sharedMappings = null, rootPath, }) {
8
- var _a;
9
- const result = [];
10
- if (!path.isAbsolute(rootTsConfigPath)) {
11
- throw new Error('SharedMappings.register: tsConfigPath needs to be an absolute path!');
12
- }
13
- if (!rootPath) {
14
- rootPath = path.normalize(path.dirname(rootTsConfigPath));
15
- }
16
- const shareAll = !sharedMappings;
17
- if (!sharedMappings) {
18
- sharedMappings = [];
19
- }
20
- const tsConfig = JSON5.parse(fs.readFileSync(rootTsConfigPath, { encoding: 'utf-8' }));
21
- const mappings = (_a = tsConfig === null || tsConfig === void 0 ? void 0 : tsConfig.compilerOptions) === null || _a === void 0 ? void 0 : _a.paths;
22
- if (!mappings) {
23
- return result;
24
- }
25
- for (const key in mappings) {
26
- const libPath = path.normalize(path.join(rootPath, mappings[key][0]));
27
- if (sharedMappings.includes(key) || shareAll) {
28
- result.push({
29
- key,
30
- path: libPath,
31
- });
32
- }
33
- }
34
- return result;
35
- }
36
- exports.getMappedPaths = getMappedPaths;
37
- //# sourceMappingURL=mapped-paths.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"mapped-paths.js","sourceRoot":"","sources":["../../../../../libs/native-federation/src/utils/mapped-paths.ts"],"names":[],"mappings":";;;AAAA,6BAA6B;AAC7B,yBAAyB;AACzB,+BAA+B;AAa/B,SAAgB,cAAc,CAAC,EAC7B,gBAAgB,EAChB,cAAc,GAAG,IAAI,EACrB,QAAQ,GACc;;IACtB,MAAM,MAAM,GAAsB,EAAE,CAAC;IAErC,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,gBAAgB,CAAC,EAAE;QACtC,MAAM,IAAI,KAAK,CACb,qEAAqE,CACtE,CAAC;KACH;IAED,IAAI,CAAC,QAAQ,EAAE;QACb,QAAQ,GAAG,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,OAAO,CAAC,gBAAgB,CAAC,CAAC,CAAC;KAC3D;IACD,MAAM,QAAQ,GAAG,CAAC,cAAc,CAAC;IAEjC,IAAI,CAAC,cAAc,EAAE;QACnB,cAAc,GAAG,EAAE,CAAC;KACrB;IAED,MAAM,QAAQ,GAAG,KAAK,CAAC,KAAK,CAC1B,EAAE,CAAC,YAAY,CAAC,gBAAgB,EAAE,EAAE,QAAQ,EAAE,OAAO,EAAE,CAAC,CACzD,CAAC;IAEF,MAAM,QAAQ,GAAG,MAAA,QAAQ,aAAR,QAAQ,uBAAR,QAAQ,CAAE,eAAe,0CAAE,KAAK,CAAC;IAElD,IAAI,CAAC,QAAQ,EAAE;QACb,OAAO,MAAM,CAAC;KACf;IAED,KAAK,MAAM,GAAG,IAAI,QAAQ,EAAE;QAC1B,MAAM,OAAO,GAAG,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QAEtE,IAAI,cAAc,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,QAAQ,EAAE;YAC5C,MAAM,CAAC,IAAI,CAAC;gBACV,GAAG;gBACH,IAAI,EAAE,OAAO;aACd,CAAC,CAAC;SACJ;KACF;IAED,OAAO,MAAM,CAAC;AAChB,CAAC;AA5CD,wCA4CC"}
@@ -1,7 +0,0 @@
1
- import { BuilderContext } from '@angular-devkit/architect';
2
- export interface PackageInfo {
3
- packageName: string;
4
- entryPoint: string;
5
- version: string;
6
- }
7
- export declare function getPackageInfo(packageName: string, context: BuilderContext): PackageInfo | null;
@@ -1,94 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.getPackageInfo = void 0;
4
- const fs = require("fs");
5
- const path = require("path");
6
- function getPackageInfo(packageName, context) {
7
- var _a, _b;
8
- const projectRoot = context.workspaceRoot;
9
- const mainPkgName = getPkgFolder(packageName);
10
- const mainPkgPath = path.join(projectRoot, 'node_modules', mainPkgName);
11
- const mainPkgJsonPath = path.join(mainPkgPath, 'package.json');
12
- if (!fs.existsSync(mainPkgPath)) {
13
- context.logger.warn('No package.json found for ' + packageName);
14
- return null;
15
- }
16
- const mainPkgJson = readJson(mainPkgJsonPath);
17
- const version = mainPkgJson['version'];
18
- if (!version) {
19
- context.logger.warn('No version found for ' + packageName);
20
- return null;
21
- }
22
- let relSecondaryPath = path.relative(mainPkgName, packageName);
23
- if (!relSecondaryPath) {
24
- relSecondaryPath = '.';
25
- }
26
- else {
27
- relSecondaryPath = './' + relSecondaryPath;
28
- }
29
- let cand = (_b = (_a = mainPkgJson === null || mainPkgJson === void 0 ? void 0 : mainPkgJson.exports) === null || _a === void 0 ? void 0 : _a[relSecondaryPath]) === null || _b === void 0 ? void 0 : _b.default;
30
- if (cand) {
31
- return {
32
- entryPoint: path.join(mainPkgPath, cand),
33
- packageName,
34
- version,
35
- };
36
- }
37
- cand = mainPkgJson['module'];
38
- if (cand && relSecondaryPath === '.') {
39
- return {
40
- entryPoint: path.join(mainPkgPath, cand),
41
- packageName,
42
- version,
43
- };
44
- }
45
- const secondaryPgkPath = path.join(projectRoot, 'node_modules', packageName);
46
- const secondaryPgkJsonPath = path.join(secondaryPgkPath, 'package.json');
47
- let secondaryPgkJson = null;
48
- if (fs.existsSync(secondaryPgkJsonPath)) {
49
- secondaryPgkJson = readJson(secondaryPgkJsonPath);
50
- }
51
- if (secondaryPgkJson && secondaryPgkJson['module']) {
52
- return {
53
- entryPoint: path.join(secondaryPgkPath, secondaryPgkJson['module']),
54
- packageName,
55
- version,
56
- };
57
- }
58
- cand = path.join(secondaryPgkPath, 'index.mjs');
59
- if (fs.existsSync(cand)) {
60
- return {
61
- entryPoint: cand,
62
- packageName,
63
- version,
64
- };
65
- }
66
- cand = path.join(secondaryPgkPath, 'index.js');
67
- if (fs.existsSync(cand)) {
68
- return {
69
- entryPoint: cand,
70
- packageName,
71
- version,
72
- };
73
- }
74
- context.logger.warn('No esm-based entry point found for ' + packageName);
75
- context.logger.warn(' >> Did you confuse dependencies with depDependencies in your package.json or your federation config?');
76
- return null;
77
- }
78
- exports.getPackageInfo = getPackageInfo;
79
- function readJson(mainPkgJsonPath) {
80
- return JSON.parse(fs.readFileSync(mainPkgJsonPath, 'utf-8'));
81
- }
82
- function getPkgFolder(packageName) {
83
- const parts = packageName.split('/');
84
- let folder = parts[0];
85
- if (folder.startsWith('@')) {
86
- folder += '/' + parts[1];
87
- }
88
- return folder;
89
- }
90
- // const pkg = process.argv[2]
91
- // console.log('pkg', pkg);
92
- // const r = getPackageInfo('D:/Dokumente/projekte/mf-plugin/angular-architects/', pkg);
93
- // console.log('entry', r);
94
- //# sourceMappingURL=package-info.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"package-info.js","sourceRoot":"","sources":["../../../../../libs/native-federation/src/utils/package-info.ts"],"names":[],"mappings":"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"}