@angular-architects/native-federation 1.1.0-beta.0 → 16.1.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/README.md +154 -137
- package/builders.json +1 -1
- package/config.d.ts +1 -1
- package/config.js +4 -4
- package/package.json +12 -16
- package/src/builders/build/builder.d.ts +5 -5
- package/src/builders/build/builder.js +79 -146
- package/src/builders/build/builder.js.map +1 -1
- package/src/builders/build/schema.d.ts +8 -1
- package/src/builders/build/schema.json +19 -532
- package/src/builders/serve/builder.ts.bak +57 -0
- package/src/builders/serve/schema.json.bak +107 -0
- package/src/config.d.ts +2 -2
- package/src/config.js +9 -9
- package/src/executors/build/executor.d.ts +4 -4
- package/src/executors/build/executor.js +12 -12
- package/src/generators/native-federation/generator.d.ts +3 -3
- package/src/generators/native-federation/generator.js +43 -43
- package/src/generators/native-federation/generator.js.map +1 -1
- package/src/index.d.ts +1 -1
- package/src/index.js +1 -5
- package/src/plugin/dev-externals-mixin.d.ts +1 -0
- package/src/plugin/dev-externals-mixin.js +30 -0
- package/src/plugin/dev-externals-mixin.js.map +1 -0
- package/src/plugin/externals-skip-list.d.ts +2 -0
- package/src/plugin/externals-skip-list.js +9 -0
- package/src/plugin/externals-skip-list.js.map +1 -0
- package/src/plugin/index.d.ts +2 -0
- package/src/plugin/index.js +101 -0
- package/src/plugin/index.js.map +1 -0
- package/src/schematics/init/files/federation.config.js__tmpl__ +8 -0
- package/src/schematics/init/schematic.d.ts +4 -4
- package/src/schematics/init/schematic.js +194 -161
- package/src/schematics/init/schematic.js.map +1 -1
- package/src/utils/angular-esbuild-adapter.d.ts +6 -3
- package/src/utils/angular-esbuild-adapter.js +140 -90
- package/src/utils/angular-esbuild-adapter.js.map +1 -1
- package/src/utils/dev-server.d.ts +4 -0
- package/src/utils/dev-server.js +41 -0
- package/src/utils/dev-server.js.map +1 -0
- package/src/utils/event-sorce.d.ts +9 -0
- package/src/utils/event-sorce.js +20 -0
- package/src/utils/event-sorce.js.map +1 -0
- package/src/utils/rebuild-events.d.ts +9 -0
- package/src/utils/rebuild-events.js +12 -0
- package/src/utils/rebuild-events.js.map +1 -0
- package/src/utils/rollup.d.ts +1 -1
- package/src/utils/rollup.js +57 -57
- package/src/utils/rollup.js.map +1 -1
- package/src/utils/rollup.ts.bak +60 -0
- package/src/utils/shared-mappings-plugin.d.ts +3 -3
- package/src/utils/shared-mappings-plugin.js +28 -28
- package/src/utils/shared-mappings-plugin.js.map +1 -1
- package/src/utils/transform.d.ts +1 -0
- package/src/utils/transform.js +45 -0
- package/src/utils/transform.js.map +1 -0
- package/src/utils/updateIndexHtml.d.ts +2 -0
- package/src/utils/updateIndexHtml.js +33 -0
- package/src/utils/updateIndexHtml.js.map +1 -0
|
@@ -1,147 +1,80 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.runBuilder = void 0;
|
|
4
|
-
const tslib_1 = require("tslib");
|
|
5
|
-
const architect_1 = require("@angular-devkit/architect");
|
|
6
|
-
const
|
|
7
|
-
const
|
|
8
|
-
const
|
|
9
|
-
const
|
|
10
|
-
const
|
|
11
|
-
const
|
|
12
|
-
const
|
|
13
|
-
const
|
|
14
|
-
const
|
|
15
|
-
const
|
|
16
|
-
const
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
(0,
|
|
21
|
-
const
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
}
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
}
|
|
81
|
-
function getLockFileName(workspaceRoot) {
|
|
82
|
-
let candPath = '';
|
|
83
|
-
for (const candLock of ['package-lock.json', 'yarn.lock', 'pnpm-lock.yaml']) {
|
|
84
|
-
candPath = path.join(workspaceRoot, candLock);
|
|
85
|
-
if (fs.existsSync(candPath)) {
|
|
86
|
-
break;
|
|
87
|
-
}
|
|
88
|
-
}
|
|
89
|
-
return candPath;
|
|
90
|
-
}
|
|
91
|
-
function getNpxCommand(workspaceRoot) {
|
|
92
|
-
switch (getLockFileName(workspaceRoot)) {
|
|
93
|
-
case 'package-lock.json':
|
|
94
|
-
return 'npx';
|
|
95
|
-
case 'yarn.lock':
|
|
96
|
-
return 'yarn';
|
|
97
|
-
case 'pnpm-lock.yaml':
|
|
98
|
-
return 'pnpx';
|
|
99
|
-
default:
|
|
100
|
-
return 'npx';
|
|
101
|
-
}
|
|
102
|
-
}
|
|
103
|
-
function updateIndexHtml(fedOptions) {
|
|
104
|
-
const outputPath = path.join(fedOptions.workspaceRoot, fedOptions.outputPath);
|
|
105
|
-
const indexPath = path.join(outputPath, 'index.html');
|
|
106
|
-
const mainName = fs
|
|
107
|
-
.readdirSync(outputPath)
|
|
108
|
-
.find((f) => f.startsWith('main.') && f.endsWith('.js'));
|
|
109
|
-
const polyfillsName = fs
|
|
110
|
-
.readdirSync(outputPath)
|
|
111
|
-
.find((f) => f.startsWith('polyfills.') && f.endsWith('.js'));
|
|
112
|
-
const htmlFragment = `
|
|
113
|
-
<script type="esms-options">
|
|
114
|
-
{
|
|
115
|
-
"shimMode": true
|
|
116
|
-
}
|
|
117
|
-
</script>
|
|
118
|
-
|
|
119
|
-
<script type="module" src="${polyfillsName}"></script>
|
|
120
|
-
<script type="module-shim" src="${mainName}"></script>
|
|
121
|
-
`;
|
|
122
|
-
const indexContent = fs.readFileSync(indexPath, 'utf-8');
|
|
123
|
-
const updatedContent = indexContent.replace('</body>', `${htmlFragment}</body>`);
|
|
124
|
-
fs.writeFileSync(indexPath, updatedContent, 'utf-8');
|
|
125
|
-
}
|
|
126
|
-
function build(config, options, context) {
|
|
127
|
-
return tslib_1.__awaiter(this, void 0, void 0, function* () {
|
|
128
|
-
const esbuildConfiguration = (options) => {
|
|
129
|
-
options.plugins = [
|
|
130
|
-
...options.plugins,
|
|
131
|
-
(0, shared_mappings_plugin_1.createSharedMappingsPlugin)(config.sharedMappings),
|
|
132
|
-
];
|
|
133
|
-
return options;
|
|
134
|
-
};
|
|
135
|
-
// TODO: Remove cast to any after updating version
|
|
136
|
-
const output = yield (0, index_1.buildEsbuildBrowser)(options, context, {
|
|
137
|
-
esbuildConfiguration,
|
|
138
|
-
});
|
|
139
|
-
return output;
|
|
140
|
-
});
|
|
141
|
-
}
|
|
142
|
-
function infereConfigPath(tsConfig) {
|
|
143
|
-
const relProjectPath = path.dirname(tsConfig);
|
|
144
|
-
const relConfigPath = path.join(relProjectPath, 'federation.config.js');
|
|
145
|
-
return relConfigPath;
|
|
146
|
-
}
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.runBuilder = void 0;
|
|
4
|
+
const tslib_1 = require("tslib");
|
|
5
|
+
const architect_1 = require("@angular-devkit/architect");
|
|
6
|
+
const path = tslib_1.__importStar(require("path"));
|
|
7
|
+
const build_1 = require("@softarc/native-federation/build");
|
|
8
|
+
const build_2 = require("@softarc/native-federation/build");
|
|
9
|
+
const angular_esbuild_adapter_1 = require("../../utils/angular-esbuild-adapter");
|
|
10
|
+
const build_3 = require("@softarc/native-federation/build");
|
|
11
|
+
const build_4 = require("@softarc/native-federation/build");
|
|
12
|
+
const build_5 = require("@softarc/native-federation/build");
|
|
13
|
+
const architect_2 = require("@angular-devkit/architect");
|
|
14
|
+
const rxjs_1 = require("rxjs");
|
|
15
|
+
const dev_server_1 = require("../../utils/dev-server");
|
|
16
|
+
const rebuild_events_1 = require("../../utils/rebuild-events");
|
|
17
|
+
const updateIndexHtml_1 = require("../../utils/updateIndexHtml");
|
|
18
|
+
function runBuilder(nfOptions, context) {
|
|
19
|
+
return tslib_1.__awaiter(this, void 0, void 0, function* () {
|
|
20
|
+
const target = (0, architect_2.targetFromTargetString)(nfOptions.target);
|
|
21
|
+
const options = (yield context.getTargetOptions(target));
|
|
22
|
+
const rebuildEvents = new rebuild_events_1.RebuildHubs();
|
|
23
|
+
const adapter = (0, angular_esbuild_adapter_1.createAngularBuildAdapter)(options, context, rebuildEvents);
|
|
24
|
+
(0, build_2.setBuildAdapter)(adapter);
|
|
25
|
+
(0, build_1.setLogLevel)(options.verbose ? 'verbose' : 'info');
|
|
26
|
+
options.watch = !!nfOptions.dev;
|
|
27
|
+
const fedOptions = {
|
|
28
|
+
workspaceRoot: context.workspaceRoot,
|
|
29
|
+
outputPath: options.outputPath,
|
|
30
|
+
federationConfig: infereConfigPath(options.tsConfig),
|
|
31
|
+
tsConfig: options.tsConfig,
|
|
32
|
+
verbose: options.verbose,
|
|
33
|
+
watch: options.watch,
|
|
34
|
+
dev: !!nfOptions.dev,
|
|
35
|
+
};
|
|
36
|
+
const config = yield (0, build_4.loadFederationConfig)(fedOptions);
|
|
37
|
+
const externals = (0, build_3.getExternals)(config);
|
|
38
|
+
options.externalDependencies = externals.filter((e) => e !== 'tslib');
|
|
39
|
+
const builderRun = yield context.scheduleBuilder('@angular-devkit/build-angular:browser-esbuild', options, { target });
|
|
40
|
+
// TODO: Allow more flexibility?
|
|
41
|
+
// const builderRun = await context.scheduleTarget(target, options as any);
|
|
42
|
+
let first = true;
|
|
43
|
+
builderRun.output.subscribe((output) => tslib_1.__awaiter(this, void 0, void 0, function* () {
|
|
44
|
+
if (!output.success) {
|
|
45
|
+
return;
|
|
46
|
+
}
|
|
47
|
+
(0, updateIndexHtml_1.updateIndexHtml)(fedOptions);
|
|
48
|
+
if (first) {
|
|
49
|
+
yield (0, build_5.buildForFederation)(config, fedOptions, externals);
|
|
50
|
+
}
|
|
51
|
+
if (first && nfOptions.dev) {
|
|
52
|
+
(0, dev_server_1.startServer)(nfOptions, options.outputPath);
|
|
53
|
+
}
|
|
54
|
+
else if (!first && nfOptions.dev) {
|
|
55
|
+
(0, dev_server_1.reloadBrowser)();
|
|
56
|
+
setTimeout(() => tslib_1.__awaiter(this, void 0, void 0, function* () {
|
|
57
|
+
build_1.logger.info('Rebuilding federation artefacts ...');
|
|
58
|
+
yield Promise.all([
|
|
59
|
+
rebuildEvents.rebuildMappings.emit(),
|
|
60
|
+
rebuildEvents.rebuildExposed.emit(),
|
|
61
|
+
]);
|
|
62
|
+
build_1.logger.info('Done!');
|
|
63
|
+
setTimeout(() => (0, dev_server_1.reloadShell)(nfOptions.shell), 0);
|
|
64
|
+
}), nfOptions.rebuildDelay);
|
|
65
|
+
}
|
|
66
|
+
first = false;
|
|
67
|
+
}));
|
|
68
|
+
// updateIndexHtml(fedOptions);
|
|
69
|
+
const output = yield (0, rxjs_1.lastValueFrom)(builderRun.output);
|
|
70
|
+
return output;
|
|
71
|
+
});
|
|
72
|
+
}
|
|
73
|
+
exports.runBuilder = runBuilder;
|
|
74
|
+
exports.default = (0, architect_1.createBuilder)(runBuilder);
|
|
75
|
+
function infereConfigPath(tsConfig) {
|
|
76
|
+
const relProjectPath = path.dirname(tsConfig);
|
|
77
|
+
const relConfigPath = path.join(relProjectPath, 'federation.config.js');
|
|
78
|
+
return relConfigPath;
|
|
79
|
+
}
|
|
147
80
|
//# sourceMappingURL=builder.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"builder.js","sourceRoot":"","sources":["../../../../../../libs/native-federation/src/builders/build/builder.ts"],"names":[],"mappings":";;;;AAAA,yDAImC;
|
|
1
|
+
{"version":3,"file":"builder.js","sourceRoot":"","sources":["../../../../../../libs/native-federation/src/builders/build/builder.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,3 +1,10 @@
|
|
|
1
1
|
import { JsonObject } from '@angular-devkit/core';
|
|
2
2
|
|
|
3
|
-
export interface
|
|
3
|
+
export interface NfBuilderSchema extends JsonObject {
|
|
4
|
+
target: string;
|
|
5
|
+
dev: boolean;
|
|
6
|
+
port: number;
|
|
7
|
+
open: boolean;
|
|
8
|
+
rebuildDelay: number;
|
|
9
|
+
shell: string;
|
|
10
|
+
} // eslint-disable-line
|