@mikkel-ol/federation-session 22.0.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.
Files changed (41) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +32 -0
  3. package/builders.json +15 -0
  4. package/collection.json +10 -0
  5. package/dist/host/gateway.d.ts +17 -0
  6. package/dist/host/gateway.d.ts.map +1 -0
  7. package/dist/host/gateway.js +333 -0
  8. package/dist/host/gateway.js.map +1 -0
  9. package/dist/host/index.d.ts +4 -0
  10. package/dist/host/index.d.ts.map +1 -0
  11. package/dist/host/index.js +51 -0
  12. package/dist/host/index.js.map +1 -0
  13. package/dist/host/runtime-browser.js +191 -0
  14. package/dist/host/runtime.d.ts +2 -0
  15. package/dist/host/runtime.d.ts.map +1 -0
  16. package/dist/host/runtime.js +14 -0
  17. package/dist/host/runtime.js.map +1 -0
  18. package/dist/host/schema.json +36 -0
  19. package/dist/index.d.ts +3 -0
  20. package/dist/index.d.ts.map +1 -0
  21. package/dist/index.js +11 -0
  22. package/dist/index.js.map +1 -0
  23. package/dist/remote/index.d.ts +4 -0
  24. package/dist/remote/index.d.ts.map +1 -0
  25. package/dist/remote/index.js +318 -0
  26. package/dist/remote/index.js.map +1 -0
  27. package/dist/remote/schema.json +22 -0
  28. package/dist/setup/index.d.ts +14 -0
  29. package/dist/setup/index.d.ts.map +1 -0
  30. package/dist/setup/index.js +395 -0
  31. package/dist/setup/index.js.map +1 -0
  32. package/dist/setup/schema.json +63 -0
  33. package/dist/shared/architect.d.ts +7 -0
  34. package/dist/shared/architect.d.ts.map +1 -0
  35. package/dist/shared/architect.js +104 -0
  36. package/dist/shared/architect.js.map +1 -0
  37. package/dist/shared/schema.d.ts +15 -0
  38. package/dist/shared/schema.d.ts.map +1 -0
  39. package/dist/shared/schema.js +3 -0
  40. package/dist/shared/schema.js.map +1 -0
  41. package/package.json +61 -0
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/setup/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAGL,KAAK,IAAI,EAGV,MAAM,4BAA4B,CAAC;AAKpC,UAAU,YAAY;IACpB,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,EAAE,MAAM,GAAG,QAAQ,CAAC;IACxB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,WAAW,CAAC,EAAE,OAAO,CAAC;CACvB;AAwBD,MAAM,CAAC,OAAO,UAAU,KAAK,CAAC,OAAO,EAAE,YAAY,GAAG,IAAI,CAyCzD"}
@@ -0,0 +1,395 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.default = setup;
7
+ const schematics_1 = require("@angular-devkit/schematics");
8
+ const tasks_1 = require("@angular-devkit/schematics/tasks");
9
+ const node_path_1 = __importDefault(require("node:path"));
10
+ const typescript_1 = __importDefault(require("typescript"));
11
+ function setup(options) {
12
+ validateOptions(options);
13
+ const state = {};
14
+ return (0, schematics_1.chain)([
15
+ (tree) => {
16
+ state.location = locateProject(tree, options.project);
17
+ const project = readProject(tree, state.location, options.project);
18
+ assertRoleIsCompatible(project, options.role);
19
+ assertStandalone(tree, project, options.component);
20
+ state.needsNativeFederation = !isNativeFederationProject(tree, project);
21
+ if (state.needsNativeFederation && state.location.kind === "nx") {
22
+ createNxWorkspaceAdapter(tree, state.location, options.project, project);
23
+ }
24
+ return tree;
25
+ },
26
+ (tree, context) => {
27
+ updateDependencies(tree);
28
+ if (!options.skipInstall)
29
+ context.addTask(new tasks_1.NodePackageInstallTask());
30
+ return tree;
31
+ },
32
+ (tree, context) => state.needsNativeFederation
33
+ ? (0, schematics_1.externalSchematic)("@angular-architects/native-federation", "init", {
34
+ project: options.project,
35
+ port: options.port ?? 4200,
36
+ type: options.role,
37
+ })(tree, context)
38
+ : tree,
39
+ (tree) => {
40
+ if (!state.location)
41
+ throw new Error("Workspace location was not resolved");
42
+ if (state.needsNativeFederation && state.location.kind === "nx") {
43
+ restoreNxWorkspace(tree, state.location, options.project);
44
+ }
45
+ configureProject(tree, state.location, options);
46
+ return tree;
47
+ },
48
+ ]);
49
+ }
50
+ function validateOptions(options) {
51
+ if (options.role === "host" && !options.yatsiServerUrl) {
52
+ throw new Error("yatsiServerUrl is required when role is host");
53
+ }
54
+ const remoteName = options.remoteName ?? options.project;
55
+ if (options.role === "remote" && !isRemoteName(remoteName)) {
56
+ throw new Error("remoteName must be lowercase kebab-case");
57
+ }
58
+ }
59
+ function locateProject(tree, projectName) {
60
+ for (const workspacePath of ["angular.json", "workspace.json"]) {
61
+ if (!tree.exists(workspacePath))
62
+ continue;
63
+ const workspace = readJson(tree, workspacePath);
64
+ if (workspace.projects?.[projectName]) {
65
+ return { kind: "angular", path: workspacePath };
66
+ }
67
+ }
68
+ let result;
69
+ tree.visit((filePath) => {
70
+ if (result || !filePath.endsWith("/project.json"))
71
+ return;
72
+ const project = readJson(tree, filePath);
73
+ if (project.name === projectName) {
74
+ result = { kind: "nx", path: trimLeadingSlash(filePath) };
75
+ }
76
+ });
77
+ if (!result)
78
+ throw new Error(`Project '${projectName}' was not found`);
79
+ return result;
80
+ }
81
+ function readProject(tree, location, projectName) {
82
+ if (location.kind === "nx")
83
+ return readJson(tree, location.path);
84
+ return readJson(tree, location.path).projects[projectName];
85
+ }
86
+ function writeProject(tree, location, projectName, project) {
87
+ if (location.kind === "nx") {
88
+ writeJson(tree, location.path, project);
89
+ return;
90
+ }
91
+ const workspace = readJson(tree, location.path);
92
+ workspace.projects[projectName] = project;
93
+ writeJson(tree, location.path, workspace);
94
+ }
95
+ function targetsOf(project) {
96
+ const targets = project.architect ?? project.targets;
97
+ if (!targets)
98
+ throw new Error("The project does not define Angular targets");
99
+ return targets;
100
+ }
101
+ function executorOf(target) {
102
+ return target?.builder ?? target?.executor;
103
+ }
104
+ function assertRoleIsCompatible(project, role) {
105
+ const current = executorOf(targetsOf(project).serve);
106
+ if (!current?.startsWith("@mikkel-ol/federation-session:"))
107
+ return;
108
+ const configuredRole = current.split(":").at(-1);
109
+ if (configuredRole !== role) {
110
+ throw new Error(`Project is already configured as '${configuredRole}' and cannot be converted to '${role}'`);
111
+ }
112
+ }
113
+ function isNativeFederationProject(tree, project) {
114
+ const root = normalizePath(project.root ?? "");
115
+ return (executorOf(targetsOf(project).build) ===
116
+ "@angular-architects/native-federation:build" ||
117
+ tree.exists(node_path_1.default.posix.join(root, "federation.config.mjs")));
118
+ }
119
+ function createNxWorkspaceAdapter(tree, location, projectName, project) {
120
+ const adapted = structuredClone(project);
121
+ adapted.architect = adapted.targets;
122
+ delete adapted.targets;
123
+ for (const target of Object.values(adapted.architect ?? {})) {
124
+ if (target.executor) {
125
+ target.builder = target.executor;
126
+ delete target.executor;
127
+ }
128
+ }
129
+ location.workspacePath = "workspace.json";
130
+ writeJson(tree, location.workspacePath, {
131
+ version: 1,
132
+ projects: { [projectName]: adapted },
133
+ });
134
+ }
135
+ function restoreNxWorkspace(tree, location, projectName) {
136
+ if (!location.workspacePath || !tree.exists(location.workspacePath)) {
137
+ throw new Error("Native Federation did not produce the temporary Nx workspace");
138
+ }
139
+ const workspace = readJson(tree, location.workspacePath);
140
+ const project = workspace.projects[projectName];
141
+ project.targets = project.architect;
142
+ delete project.architect;
143
+ for (const target of Object.values(project.targets ?? {})) {
144
+ if (target.builder) {
145
+ target.executor = target.builder;
146
+ delete target.builder;
147
+ }
148
+ }
149
+ writeJson(tree, location.path, project);
150
+ tree.delete(location.workspacePath);
151
+ }
152
+ function configureProject(tree, location, options) {
153
+ const project = readProject(tree, location, options.project);
154
+ const targets = targetsOf(project);
155
+ const key = location.kind === "nx" ? "executor" : "builder";
156
+ const sessionExecutor = `@mikkel-ol/federation-session:${options.role}`;
157
+ if (executorOf(targets.serve) !== sessionExecutor) {
158
+ if (!targets["serve-federation"]) {
159
+ if (!targets.serve)
160
+ throw new Error("The project does not define a serve target");
161
+ targets["serve-federation"] = targets.serve;
162
+ }
163
+ const executorOptions = {
164
+ target: `${options.project}:serve-federation`,
165
+ };
166
+ if (options.role === "host") {
167
+ executorOptions.yatsiServerUrl = options.yatsiServerUrl;
168
+ if (options.capacity !== undefined)
169
+ executorOptions.capacity = options.capacity;
170
+ }
171
+ else {
172
+ executorOptions.remoteName = options.remoteName ?? options.project;
173
+ }
174
+ targets.serve = { [key]: sessionExecutor, options: executorOptions };
175
+ }
176
+ writeProject(tree, location, options.project, project);
177
+ if (options.role === "host")
178
+ addStageToRootComponent(tree, project, options.component);
179
+ else
180
+ ensureComponentExposure(tree, project, options.component);
181
+ }
182
+ function assertStandalone(tree, project, componentOverride) {
183
+ const mainPath = browserEntry(project);
184
+ const main = readText(tree, mainPath);
185
+ if (!main.includes("bootstrapApplication")) {
186
+ throw new Error("Federation Session v1 supports standalone Angular applications only");
187
+ }
188
+ resolveComponentPath(tree, project, componentOverride);
189
+ }
190
+ function browserEntry(project) {
191
+ const targets = targetsOf(project);
192
+ const options = targets.esbuild?.options ??
193
+ targets.build?.options ??
194
+ {};
195
+ const entry = options.browser ?? options.main;
196
+ if (typeof entry !== "string")
197
+ throw new Error("Could not determine the browser entry file");
198
+ return normalizePath(entry);
199
+ }
200
+ function resolveComponentPath(tree, project, componentOverride) {
201
+ if (componentOverride) {
202
+ const candidate = normalizePath(componentOverride);
203
+ if (!tree.exists(candidate))
204
+ throw new Error(`Component '${candidate}' does not exist`);
205
+ return candidate;
206
+ }
207
+ const sourceRoot = normalizePath(project.sourceRoot ?? node_path_1.default.posix.join(project.root ?? "", "src"));
208
+ for (const candidate of [
209
+ node_path_1.default.posix.join(sourceRoot, "app/app.component.ts"),
210
+ node_path_1.default.posix.join(sourceRoot, "app/app.ts"),
211
+ ]) {
212
+ if (tree.exists(candidate))
213
+ return candidate;
214
+ }
215
+ throw new Error("Could not determine the root component; pass --component");
216
+ }
217
+ function addStageToRootComponent(tree, project, componentOverride) {
218
+ const componentPath = resolveComponentPath(tree, project, componentOverride);
219
+ let source = readText(tree, componentPath);
220
+ const parsed = typescript_1.default.createSourceFile(componentPath, source, typescript_1.default.ScriptTarget.Latest, true, typescript_1.default.ScriptKind.TS);
221
+ const metadata = findComponentMetadata(parsed);
222
+ const templateUrl = stringProperty(metadata, "templateUrl");
223
+ const template = property(metadata, "template");
224
+ if (templateUrl) {
225
+ const templatePath = normalizePath(node_path_1.default.posix.join(node_path_1.default.posix.dirname(componentPath), templateUrl));
226
+ const html = readText(tree, templatePath);
227
+ if (!html.includes("<federation-session-stage")) {
228
+ tree.overwrite(templatePath, `${html.trimEnd()}\n\n<federation-session-stage></federation-session-stage>\n`);
229
+ }
230
+ }
231
+ else if (template && typescript_1.default.isStringLiteralLike(template.initializer)) {
232
+ const value = template.initializer.text;
233
+ if (!value.includes("<federation-session-stage")) {
234
+ const replacement = `\`${escapeTemplateLiteral(value.trimEnd())}\\n\\n<federation-session-stage></federation-session-stage>\\n\``;
235
+ source =
236
+ source.slice(0, template.initializer.getStart(parsed)) +
237
+ replacement +
238
+ source.slice(template.initializer.getEnd());
239
+ }
240
+ }
241
+ else {
242
+ throw new Error("Root component must declare template or templateUrl");
243
+ }
244
+ source = addCustomElementsSchema(source, componentPath);
245
+ tree.overwrite(componentPath, source);
246
+ }
247
+ function addCustomElementsSchema(source, filePath) {
248
+ const parsed = typescript_1.default.createSourceFile(filePath, source, typescript_1.default.ScriptTarget.Latest, true);
249
+ const metadata = findComponentMetadata(parsed);
250
+ const schemas = property(metadata, "schemas");
251
+ let next = source;
252
+ if (!source.includes("CUSTOM_ELEMENTS_SCHEMA")) {
253
+ const angularImport = parsed.statements.find((statement) => typescript_1.default.isImportDeclaration(statement) &&
254
+ typescript_1.default.isStringLiteral(statement.moduleSpecifier) &&
255
+ statement.moduleSpecifier.text === "@angular/core");
256
+ if (!angularImport?.importClause?.namedBindings ||
257
+ !typescript_1.default.isNamedImports(angularImport.importClause.namedBindings)) {
258
+ throw new Error("Root component must use named imports from @angular/core");
259
+ }
260
+ const named = angularImport.importClause.namedBindings;
261
+ next =
262
+ next.slice(0, named.elements.end) +
263
+ ", CUSTOM_ELEMENTS_SCHEMA" +
264
+ next.slice(named.elements.end);
265
+ }
266
+ const reparsed = typescript_1.default.createSourceFile(filePath, next, typescript_1.default.ScriptTarget.Latest, true);
267
+ const nextMetadata = findComponentMetadata(reparsed);
268
+ const nextSchemas = property(nextMetadata, "schemas");
269
+ if (!nextSchemas) {
270
+ const insertion = nextMetadata.properties.end;
271
+ const prefix = nextMetadata.properties.length ? "," : "";
272
+ next =
273
+ next.slice(0, insertion) +
274
+ `${prefix}\n schemas: [CUSTOM_ELEMENTS_SCHEMA]` +
275
+ next.slice(insertion);
276
+ }
277
+ else if (typescript_1.default.isArrayLiteralExpression(nextSchemas.initializer) &&
278
+ !nextSchemas.initializer.elements.some((element) => element.getText(reparsed) === "CUSTOM_ELEMENTS_SCHEMA")) {
279
+ const elements = nextSchemas.initializer.elements;
280
+ const insertion = elements.end;
281
+ next =
282
+ next.slice(0, insertion) +
283
+ `${elements.length ? ", " : ""}CUSTOM_ELEMENTS_SCHEMA` +
284
+ next.slice(insertion);
285
+ }
286
+ void schemas;
287
+ return next;
288
+ }
289
+ function ensureComponentExposure(tree, project, componentOverride) {
290
+ const root = normalizePath(project.root ?? "");
291
+ const configPath = node_path_1.default.posix.join(root, "federation.config.mjs");
292
+ const source = readText(tree, configPath);
293
+ if (/["']\.\/Component["']\s*:/.test(source))
294
+ return;
295
+ const componentPath = resolveComponentPath(tree, project, componentOverride);
296
+ const parsed = typescript_1.default.createSourceFile(configPath, source, typescript_1.default.ScriptTarget.Latest, true, typescript_1.default.ScriptKind.JS);
297
+ const config = findFederationConfig(parsed);
298
+ const exposes = property(config, "exposes");
299
+ const relativeComponent = `./${componentPath}`;
300
+ let next;
301
+ if (exposes && typescript_1.default.isObjectLiteralExpression(exposes.initializer)) {
302
+ const insertion = exposes.initializer.properties.end;
303
+ next =
304
+ source.slice(0, insertion) +
305
+ `${exposes.initializer.properties.length ? "," : ""}\n "./Component": "${relativeComponent}"` +
306
+ source.slice(insertion);
307
+ }
308
+ else {
309
+ const insertion = config.properties.end;
310
+ next =
311
+ source.slice(0, insertion) +
312
+ `${config.properties.length ? "," : ""}\n exposes: {\n "./Component": "${relativeComponent}"\n }` +
313
+ source.slice(insertion);
314
+ }
315
+ tree.overwrite(configPath, next);
316
+ }
317
+ function findComponentMetadata(source) {
318
+ let result;
319
+ const visit = (node) => {
320
+ if (typescript_1.default.isCallExpression(node) &&
321
+ typescript_1.default.isIdentifier(node.expression) &&
322
+ node.expression.text === "Component" &&
323
+ node.arguments[0] &&
324
+ typescript_1.default.isObjectLiteralExpression(node.arguments[0])) {
325
+ result = node.arguments[0];
326
+ }
327
+ typescript_1.default.forEachChild(node, visit);
328
+ };
329
+ visit(source);
330
+ if (!result)
331
+ throw new Error("Could not find @Component metadata");
332
+ return result;
333
+ }
334
+ function findFederationConfig(source) {
335
+ let result;
336
+ const visit = (node) => {
337
+ if (typescript_1.default.isCallExpression(node) &&
338
+ typescript_1.default.isIdentifier(node.expression) &&
339
+ node.expression.text === "withNativeFederation" &&
340
+ node.arguments[0] &&
341
+ typescript_1.default.isObjectLiteralExpression(node.arguments[0])) {
342
+ result = node.arguments[0];
343
+ }
344
+ typescript_1.default.forEachChild(node, visit);
345
+ };
346
+ visit(source);
347
+ if (!result)
348
+ throw new Error("Could not parse federation.config.mjs");
349
+ return result;
350
+ }
351
+ function property(object, name) {
352
+ return object.properties.find((candidate) => typescript_1.default.isPropertyAssignment(candidate) &&
353
+ ((typescript_1.default.isIdentifier(candidate.name) && candidate.name.text === name) ||
354
+ (typescript_1.default.isStringLiteral(candidate.name) && candidate.name.text === name)));
355
+ }
356
+ function stringProperty(object, name) {
357
+ const value = property(object, name)?.initializer;
358
+ return value && typescript_1.default.isStringLiteralLike(value) ? value.text : undefined;
359
+ }
360
+ function updateDependencies(tree) {
361
+ const packageJson = readJson(tree, "package.json");
362
+ packageJson.devDependencies ??= {};
363
+ packageJson.devDependencies["@mikkel-ol/federation-session"] = "^22.0.0";
364
+ packageJson.devDependencies["@angular-architects/native-federation"] = "^22.0.0";
365
+ writeJson(tree, "package.json", packageJson);
366
+ }
367
+ function readJson(tree, filePath) {
368
+ return JSON.parse(readText(tree, filePath));
369
+ }
370
+ function writeJson(tree, filePath, value) {
371
+ const content = `${JSON.stringify(value, null, 2)}\n`;
372
+ if (tree.exists(filePath))
373
+ tree.overwrite(filePath, content);
374
+ else
375
+ tree.create(filePath, content);
376
+ }
377
+ function readText(tree, filePath) {
378
+ const data = tree.read(normalizePath(filePath));
379
+ if (!data)
380
+ throw new Error(`File '${filePath}' does not exist`);
381
+ return data.toString("utf8");
382
+ }
383
+ function normalizePath(value) {
384
+ return trimLeadingSlash(value.replaceAll("\\", "/"));
385
+ }
386
+ function trimLeadingSlash(value) {
387
+ return value.replace(/^\/+/, "");
388
+ }
389
+ function escapeTemplateLiteral(value) {
390
+ return value.replaceAll("\\", "\\\\").replaceAll("`", "\\`").replaceAll("${", "\\${");
391
+ }
392
+ function isRemoteName(value) {
393
+ return /^[a-z][a-z0-9]*(?:-[a-z0-9]+)*$/.test(value);
394
+ }
395
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/setup/index.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,63 @@
1
+ {
2
+ "$schema": "http://json-schema.org/schema",
3
+ "$id": "FederationSessionSetup",
4
+ "title": "Federation Session setup",
5
+ "type": "object",
6
+ "properties": {
7
+ "project": {
8
+ "type": "string",
9
+ "description": "Angular project to configure",
10
+ "$default": {
11
+ "$source": "argv",
12
+ "index": 0
13
+ }
14
+ },
15
+ "role": {
16
+ "type": "string",
17
+ "enum": ["host", "remote"],
18
+ "description": "Role of this application in a federation session",
19
+ "x-prompt": "Configure this application as a host or remote?"
20
+ },
21
+ "yatsiServerUrl": {
22
+ "type": "string",
23
+ "description": "YATSI server URL; required for hosts"
24
+ },
25
+ "remoteName": {
26
+ "type": "string",
27
+ "description": "Lowercase kebab-case remote name; defaults to the project name"
28
+ },
29
+ "component": {
30
+ "type": "string",
31
+ "description": "Root component path override"
32
+ },
33
+ "port": {
34
+ "type": "number",
35
+ "minimum": 1,
36
+ "maximum": 65535,
37
+ "default": 4200
38
+ },
39
+ "capacity": {
40
+ "type": "number",
41
+ "minimum": 1
42
+ },
43
+ "skipInstall": {
44
+ "type": "boolean",
45
+ "default": false
46
+ }
47
+ },
48
+ "required": ["project", "role"],
49
+ "allOf": [
50
+ {
51
+ "if": {
52
+ "properties": {
53
+ "role": {
54
+ "const": "host"
55
+ }
56
+ }
57
+ },
58
+ "then": {
59
+ "required": ["yatsiServerUrl"]
60
+ }
61
+ }
62
+ ]
63
+ }
@@ -0,0 +1,7 @@
1
+ import { type BuilderContext, type BuilderOutput, type BuilderRun } from "@angular-devkit/architect";
2
+ import { Observable } from "rxjs";
3
+ export declare function delegateBuilder(targetString: string, context: BuilderContext, onSuccessfulBuild: (first: boolean) => Promise<void>, onScheduled?: (run: BuilderRun, completeSuccessfully: () => void) => void): Observable<BuilderOutput>;
4
+ export declare function resolveDevServerPort(targetString: string, context: BuilderContext): Promise<number>;
5
+ export declare function resolveProjectRoot(targetString: string, context: BuilderContext): Promise<string>;
6
+ export declare function waitForDevServer(port: number, pathName?: string, timeoutMs?: number): Promise<void>;
7
+ //# sourceMappingURL=architect.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"architect.d.ts","sourceRoot":"","sources":["../../src/shared/architect.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,KAAK,cAAc,EACnB,KAAK,aAAa,EAClB,KAAK,UAAU,EAEhB,MAAM,2BAA2B,CAAC;AACnC,OAAO,EAAE,UAAU,EAAE,MAAM,MAAM,CAAC;AAGlC,wBAAgB,eAAe,CAC7B,YAAY,EAAE,MAAM,EACpB,OAAO,EAAE,cAAc,EACvB,iBAAiB,EAAE,CAAC,KAAK,EAAE,OAAO,KAAK,OAAO,CAAC,IAAI,CAAC,EACpD,WAAW,CAAC,EAAE,CAAC,GAAG,EAAE,UAAU,EAAE,oBAAoB,EAAE,MAAM,IAAI,KAAK,IAAI,GACxE,UAAU,CAAC,aAAa,CAAC,CAkD3B;AAED,wBAAsB,oBAAoB,CACxC,YAAY,EAAE,MAAM,EACpB,OAAO,EAAE,cAAc,GACtB,OAAO,CAAC,MAAM,CAAC,CAkBjB;AAED,wBAAsB,kBAAkB,CACtC,YAAY,EAAE,MAAM,EACpB,OAAO,EAAE,cAAc,GACtB,OAAO,CAAC,MAAM,CAAC,CAKjB;AAED,wBAAsB,gBAAgB,CAAC,IAAI,EAAE,MAAM,EAAE,QAAQ,SAAM,EAAE,SAAS,SAAS,iBAgBtF"}
@@ -0,0 +1,104 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.delegateBuilder = delegateBuilder;
7
+ exports.resolveDevServerPort = resolveDevServerPort;
8
+ exports.resolveProjectRoot = resolveProjectRoot;
9
+ exports.waitForDevServer = waitForDevServer;
10
+ const architect_1 = require("@angular-devkit/architect");
11
+ const rxjs_1 = require("rxjs");
12
+ const node_path_1 = __importDefault(require("node:path"));
13
+ function delegateBuilder(targetString, context, onSuccessfulBuild, onScheduled) {
14
+ return new rxjs_1.Observable((subscriber) => {
15
+ let run;
16
+ let first = true;
17
+ let finished = false;
18
+ let queue = Promise.resolve();
19
+ context.addTeardown(async () => {
20
+ await run?.stop();
21
+ });
22
+ void context
23
+ .scheduleTarget((0, architect_1.targetFromTargetString)(targetString))
24
+ .then((scheduled) => {
25
+ run = scheduled;
26
+ onScheduled?.(scheduled, () => {
27
+ if (finished)
28
+ return;
29
+ finished = true;
30
+ subscriber.next({ success: true });
31
+ subscriber.complete();
32
+ });
33
+ scheduled.output.subscribe({
34
+ next(output) {
35
+ if (finished)
36
+ return;
37
+ queue = queue
38
+ .then(async () => {
39
+ if (output.success) {
40
+ await onSuccessfulBuild(first);
41
+ first = false;
42
+ }
43
+ subscriber.next(output);
44
+ })
45
+ .catch((error) => subscriber.error(error));
46
+ },
47
+ error: (error) => {
48
+ if (!finished)
49
+ subscriber.error(error);
50
+ },
51
+ complete: () => {
52
+ void queue.then(() => {
53
+ if (!finished)
54
+ subscriber.complete();
55
+ });
56
+ },
57
+ });
58
+ })
59
+ .catch((error) => subscriber.error(error));
60
+ return () => {
61
+ void run?.stop();
62
+ };
63
+ });
64
+ }
65
+ async function resolveDevServerPort(targetString, context) {
66
+ const federationTarget = (0, architect_1.targetFromTargetString)(targetString);
67
+ const federationOptions = await context.getTargetOptions(federationTarget);
68
+ if (typeof federationOptions.port === "number" && federationOptions.port > 0) {
69
+ return federationOptions.port;
70
+ }
71
+ if (typeof federationOptions.target !== "string") {
72
+ throw new Error(`Native Federation target ${targetString} does not declare its delegated target`);
73
+ }
74
+ const delegatedTarget = (0, architect_1.targetFromTargetString)(federationOptions.target);
75
+ const delegatedOptions = await context.getTargetOptions(delegatedTarget);
76
+ if (typeof delegatedOptions.port !== "number" || delegatedOptions.port <= 0) {
77
+ throw new Error(`Cannot determine dev-server port for ${targetString}`);
78
+ }
79
+ return delegatedOptions.port;
80
+ }
81
+ async function resolveProjectRoot(targetString, context) {
82
+ const target = (0, architect_1.targetFromTargetString)(targetString);
83
+ const metadata = await context.getProjectMetadata(target.project);
84
+ const root = typeof metadata.root === "string" ? metadata.root : "";
85
+ return node_path_1.default.join(context.workspaceRoot, root);
86
+ }
87
+ async function waitForDevServer(port, pathName = "/", timeoutMs = 60_000) {
88
+ const deadline = Date.now() + timeoutMs;
89
+ let lastError;
90
+ while (Date.now() < deadline) {
91
+ try {
92
+ const response = await fetch(`http://localhost:${port}${pathName}`);
93
+ if (response.ok)
94
+ return;
95
+ lastError = new Error(`Dev server returned ${response.status}`);
96
+ }
97
+ catch (error) {
98
+ lastError = error;
99
+ }
100
+ await new Promise((resolve) => setTimeout(resolve, 100));
101
+ }
102
+ throw lastError instanceof Error ? lastError : new Error("Dev server did not become ready");
103
+ }
104
+ //# sourceMappingURL=architect.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"architect.js","sourceRoot":"","sources":["../../src/shared/architect.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,15 @@
1
+ export interface BaseSchema {
2
+ target: string;
3
+ }
4
+ export interface HostSchema extends BaseSchema {
5
+ yatsiServerUrl: string;
6
+ capacity?: number;
7
+ gatewayPort?: number;
8
+ open?: boolean;
9
+ panel?: boolean;
10
+ }
11
+ export interface RemoteSchema extends BaseSchema {
12
+ remoteName: string;
13
+ sessionUrl: string;
14
+ }
15
+ //# sourceMappingURL=schema.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"schema.d.ts","sourceRoot":"","sources":["../../src/shared/schema.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,UAAU;IACzB,MAAM,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,WAAW,UAAW,SAAQ,UAAU;IAC5C,cAAc,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,KAAK,CAAC,EAAE,OAAO,CAAC;CACjB;AAED,MAAM,WAAW,YAAa,SAAQ,UAAU;IAC9C,UAAU,EAAE,MAAM,CAAC;IACnB,UAAU,EAAE,MAAM,CAAC;CACpB"}
@@ -0,0 +1,3 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ //# sourceMappingURL=schema.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"schema.js","sourceRoot":"","sources":["../../src/shared/schema.ts"],"names":[],"mappings":""}