@empire-builder-kit/nx 1.0.0-beta.4

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 (185) hide show
  1. package/LICENSE +201 -0
  2. package/NOTICE +5 -0
  3. package/README.md +25 -0
  4. package/executors.json +54 -0
  5. package/generators.json +35 -0
  6. package/migrations/standard-pre-v1-to-v1.md +11 -0
  7. package/package.json +66 -0
  8. package/src/blueprints/execution.d.ts +31 -0
  9. package/src/blueprints/execution.js +166 -0
  10. package/src/blueprints/execution.js.map +1 -0
  11. package/src/blueprints/index.d.ts +5 -0
  12. package/src/blueprints/index.js +9 -0
  13. package/src/blueprints/index.js.map +1 -0
  14. package/src/blueprints/inputs.d.ts +43 -0
  15. package/src/blueprints/inputs.js +103 -0
  16. package/src/blueprints/inputs.js.map +1 -0
  17. package/src/blueprints/manifest.d.ts +241 -0
  18. package/src/blueprints/manifest.js +369 -0
  19. package/src/blueprints/manifest.js.map +1 -0
  20. package/src/blueprints/resolver.d.ts +28 -0
  21. package/src/blueprints/resolver.js +214 -0
  22. package/src/blueprints/resolver.js.map +1 -0
  23. package/src/blueprints/transitions.d.ts +20 -0
  24. package/src/blueprints/transitions.js +61 -0
  25. package/src/blueprints/transitions.js.map +1 -0
  26. package/src/executors/deploy/deploy.d.ts +4 -0
  27. package/src/executors/deploy/deploy.js +6 -0
  28. package/src/executors/deploy/deploy.js.map +1 -0
  29. package/src/executors/dev/dev.d.ts +4 -0
  30. package/src/executors/dev/dev.js +6 -0
  31. package/src/executors/dev/dev.js.map +1 -0
  32. package/src/executors/dev-doctor/dev-doctor.d.ts +18 -0
  33. package/src/executors/dev-doctor/dev-doctor.js +145 -0
  34. package/src/executors/dev-doctor/dev-doctor.js.map +1 -0
  35. package/src/executors/dev-doctor/schema.json +17 -0
  36. package/src/executors/dev-setup/dev-setup.d.ts +11 -0
  37. package/src/executors/dev-setup/dev-setup.js +454 -0
  38. package/src/executors/dev-setup/dev-setup.js.map +1 -0
  39. package/src/executors/dev-setup/schema.json +16 -0
  40. package/src/executors/fleet/fleet.d.ts +51 -0
  41. package/src/executors/fleet/fleet.js +529 -0
  42. package/src/executors/fleet/fleet.js.map +1 -0
  43. package/src/executors/fleet/schema.json +25 -0
  44. package/src/executors/foundation-preflight/foundation-preflight.d.ts +15 -0
  45. package/src/executors/foundation-preflight/foundation-preflight.js +94 -0
  46. package/src/executors/foundation-preflight/foundation-preflight.js.map +1 -0
  47. package/src/executors/foundation-preflight/schema.json +31 -0
  48. package/src/executors/foundation-remove-preflight/foundation-remove-preflight.d.ts +13 -0
  49. package/src/executors/foundation-remove-preflight/foundation-remove-preflight.js +69 -0
  50. package/src/executors/foundation-remove-preflight/foundation-remove-preflight.js.map +1 -0
  51. package/src/executors/foundation-remove-preflight/schema.json +17 -0
  52. package/src/executors/refresh/refresh.d.ts +4 -0
  53. package/src/executors/refresh/refresh.js +6 -0
  54. package/src/executors/refresh/refresh.js.map +1 -0
  55. package/src/executors/remove/remove.d.ts +4 -0
  56. package/src/executors/remove/remove.js +6 -0
  57. package/src/executors/remove/remove.js.map +1 -0
  58. package/src/executors/sst-lifecycle/run-sst-command.d.ts +28 -0
  59. package/src/executors/sst-lifecycle/run-sst-command.js +154 -0
  60. package/src/executors/sst-lifecycle/run-sst-command.js.map +1 -0
  61. package/src/executors/sst-lifecycle/schema.json +45 -0
  62. package/src/executors/unlock/unlock.d.ts +4 -0
  63. package/src/executors/unlock/unlock.js +6 -0
  64. package/src/executors/unlock/unlock.js.map +1 -0
  65. package/src/foundation/aurora-logical-database.d.ts +76 -0
  66. package/src/foundation/aurora-logical-database.js +419 -0
  67. package/src/foundation/aurora-logical-database.js.map +1 -0
  68. package/src/foundation/discovery.d.ts +55 -0
  69. package/src/foundation/discovery.js +55 -0
  70. package/src/foundation/discovery.js.map +1 -0
  71. package/src/foundation/index.d.ts +6 -0
  72. package/src/foundation/index.js +10 -0
  73. package/src/foundation/index.js.map +1 -0
  74. package/src/foundation/local-database-contract.d.ts +30 -0
  75. package/src/foundation/local-database-contract.js +75 -0
  76. package/src/foundation/local-database-contract.js.map +1 -0
  77. package/src/foundation/preflight.d.ts +31 -0
  78. package/src/foundation/preflight.js +114 -0
  79. package/src/foundation/preflight.js.map +1 -0
  80. package/src/foundation/provision-database-bindings.d.ts +30 -0
  81. package/src/foundation/provision-database-bindings.js +113 -0
  82. package/src/foundation/provision-database-bindings.js.map +1 -0
  83. package/src/foundation/provision-logical-database.d.ts +26 -0
  84. package/src/foundation/provision-logical-database.js +162 -0
  85. package/src/foundation/provision-logical-database.js.map +1 -0
  86. package/src/foundation/requirements.d.ts +37 -0
  87. package/src/foundation/requirements.js +141 -0
  88. package/src/foundation/requirements.js.map +1 -0
  89. package/src/foundation/stages.d.ts +14 -0
  90. package/src/foundation/stages.js +51 -0
  91. package/src/foundation/stages.js.map +1 -0
  92. package/src/generators/function/function.d.ts +13 -0
  93. package/src/generators/function/function.js +71 -0
  94. package/src/generators/function/function.js.map +1 -0
  95. package/src/generators/function/schema.d.ts +5 -0
  96. package/src/generators/function/schema.json +20 -0
  97. package/src/generators/job/job.d.ts +4 -0
  98. package/src/generators/job/job.js +5 -0
  99. package/src/generators/job/job.js.map +1 -0
  100. package/src/generators/preset/generator.d.ts +5 -0
  101. package/src/generators/preset/generator.js +41 -0
  102. package/src/generators/preset/generator.js.map +1 -0
  103. package/src/generators/preset/schema.d.ts +4 -0
  104. package/src/generators/preset/schema.json +22 -0
  105. package/src/generators/preset/workspace-files.d.ts +18 -0
  106. package/src/generators/preset/workspace-files.js +895 -0
  107. package/src/generators/preset/workspace-files.js.map +1 -0
  108. package/src/generators/service/service.d.ts +4 -0
  109. package/src/generators/service/service.js +5 -0
  110. package/src/generators/service/service.js.map +1 -0
  111. package/src/generators/slice/schema.d.ts +7 -0
  112. package/src/generators/slice/schema.json +38 -0
  113. package/src/generators/slice/slice.d.ts +26 -0
  114. package/src/generators/slice/slice.js +1676 -0
  115. package/src/generators/slice/slice.js.map +1 -0
  116. package/src/generators/upgrade/schema.d.ts +8 -0
  117. package/src/generators/upgrade/schema.json +31 -0
  118. package/src/generators/upgrade/upgrade.d.ts +27 -0
  119. package/src/generators/upgrade/upgrade.js +666 -0
  120. package/src/generators/upgrade/upgrade.js.map +1 -0
  121. package/src/generators/workload/schema.d.ts +6 -0
  122. package/src/generators/workload/schema.json +21 -0
  123. package/src/generators/workload/workload.d.ts +16 -0
  124. package/src/generators/workload/workload.js +157 -0
  125. package/src/generators/workload/workload.js.map +1 -0
  126. package/src/index.d.ts +5 -0
  127. package/src/index.js +9 -0
  128. package/src/index.js.map +1 -0
  129. package/src/local-dev/contracts.d.ts +31 -0
  130. package/src/local-dev/contracts.js +126 -0
  131. package/src/local-dev/contracts.js.map +1 -0
  132. package/src/local-dev/gateway-daemon.d.ts +4 -0
  133. package/src/local-dev/gateway-daemon.js +39 -0
  134. package/src/local-dev/gateway-daemon.js.map +1 -0
  135. package/src/local-dev/gateway.d.ts +60 -0
  136. package/src/local-dev/gateway.js +368 -0
  137. package/src/local-dev/gateway.js.map +1 -0
  138. package/src/local-dev/identity.d.ts +16 -0
  139. package/src/local-dev/identity.js +101 -0
  140. package/src/local-dev/identity.js.map +1 -0
  141. package/src/local-dev/index.d.ts +7 -0
  142. package/src/local-dev/index.js +11 -0
  143. package/src/local-dev/index.js.map +1 -0
  144. package/src/local-dev/portless.d.ts +15 -0
  145. package/src/local-dev/portless.js +115 -0
  146. package/src/local-dev/portless.js.map +1 -0
  147. package/src/local-dev/ports.d.ts +10 -0
  148. package/src/local-dev/ports.js +39 -0
  149. package/src/local-dev/ports.js.map +1 -0
  150. package/src/local-dev/proxy.d.ts +37 -0
  151. package/src/local-dev/proxy.js +271 -0
  152. package/src/local-dev/proxy.js.map +1 -0
  153. package/src/local-dev/tls.d.ts +24 -0
  154. package/src/local-dev/tls.js +294 -0
  155. package/src/local-dev/tls.js.map +1 -0
  156. package/src/ownership/composition.d.ts +16 -0
  157. package/src/ownership/composition.js +125 -0
  158. package/src/ownership/composition.js.map +1 -0
  159. package/src/ownership/foundation-record.d.ts +66 -0
  160. package/src/ownership/foundation-record.js +108 -0
  161. package/src/ownership/foundation-record.js.map +1 -0
  162. package/src/ownership/hash.d.ts +2 -0
  163. package/src/ownership/hash.js +10 -0
  164. package/src/ownership/hash.js.map +1 -0
  165. package/src/ownership/index.d.ts +6 -0
  166. package/src/ownership/index.js +10 -0
  167. package/src/ownership/index.js.map +1 -0
  168. package/src/ownership/json-ownership.d.ts +13 -0
  169. package/src/ownership/json-ownership.js +147 -0
  170. package/src/ownership/json-ownership.js.map +1 -0
  171. package/src/ownership/record.d.ts +186 -0
  172. package/src/ownership/record.js +336 -0
  173. package/src/ownership/record.js.map +1 -0
  174. package/src/ownership/workspace-record.d.ts +66 -0
  175. package/src/ownership/workspace-record.js +108 -0
  176. package/src/ownership/workspace-record.js.map +1 -0
  177. package/src/schemas/blueprint-input-schema-v1.json +23 -0
  178. package/src/schemas/blueprint-v1.json +170 -0
  179. package/src/schemas/foundation-ownership-v2.json +42 -0
  180. package/src/schemas/foundation-requirement-v1.json +32 -0
  181. package/src/schemas/generated-ownership-v2.json +117 -0
  182. package/src/schemas/workspace-ownership-v2.json +42 -0
  183. package/src/validation.d.ts +14 -0
  184. package/src/validation.js +14 -0
  185. package/src/validation.js.map +1 -0
@@ -0,0 +1,115 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.EBK_GATEWAY_INTERNAL_PORT = void 0;
4
+ exports.createPortlessForwardPlan = createPortlessForwardPlan;
5
+ exports.applyPrivilegedCommands = applyPrivilegedCommands;
6
+ const node_child_process_1 = require("node:child_process");
7
+ exports.EBK_GATEWAY_INTERNAL_PORT = 54443;
8
+ function createPortlessForwardPlan(targetPlatform = process.platform) {
9
+ if (targetPlatform === 'win32') {
10
+ return {
11
+ install: [],
12
+ internalPort: 443,
13
+ platform: targetPlatform,
14
+ remove: [],
15
+ };
16
+ }
17
+ if (targetPlatform === 'darwin') {
18
+ // macOS's stock ruleset already evaluates com.apple/* anchors. A dedicated
19
+ // child anchor avoids replacing or editing /etc/pf.conf.
20
+ const anchor = 'com.apple/250.EmpireBuilderKit';
21
+ const rules = `rdr pass on lo0 inet proto tcp from any to 127.0.0.1 port 443 -> 127.0.0.1 port ${exports.EBK_GATEWAY_INTERNAL_PORT}\nrdr pass on lo0 inet6 proto tcp from any to ::1 port 443 -> ::1 port ${exports.EBK_GATEWAY_INTERNAL_PORT}\n`;
22
+ return {
23
+ install: [
24
+ {
25
+ args: ['pfctl', '-E'],
26
+ command: 'sudo',
27
+ label: 'enable the macOS packet filter',
28
+ },
29
+ {
30
+ args: ['pfctl', '-a', anchor, '-f', '-'],
31
+ command: 'sudo',
32
+ input: rules,
33
+ label: 'install the EBK loopback-only port forward',
34
+ },
35
+ ],
36
+ internalPort: exports.EBK_GATEWAY_INTERNAL_PORT,
37
+ platform: targetPlatform,
38
+ remove: [
39
+ {
40
+ args: ['pfctl', '-a', anchor, '-F', 'all'],
41
+ command: 'sudo',
42
+ label: 'remove the EBK packet-filter anchor',
43
+ },
44
+ ],
45
+ };
46
+ }
47
+ if (targetPlatform === 'linux') {
48
+ const ipv4 = [
49
+ '-p',
50
+ 'tcp',
51
+ '-d',
52
+ '127.0.0.0/8',
53
+ '--dport',
54
+ '443',
55
+ '-j',
56
+ 'REDIRECT',
57
+ '--to-ports',
58
+ String(exports.EBK_GATEWAY_INTERNAL_PORT),
59
+ ];
60
+ const ipv6 = [
61
+ '-p',
62
+ 'tcp',
63
+ '-d',
64
+ '::1/128',
65
+ '--dport',
66
+ '443',
67
+ '-j',
68
+ 'REDIRECT',
69
+ '--to-ports',
70
+ String(exports.EBK_GATEWAY_INTERNAL_PORT),
71
+ ];
72
+ return {
73
+ install: [
74
+ {
75
+ args: ['iptables', '-t', 'nat', '-A', 'OUTPUT', ...ipv4],
76
+ command: 'sudo',
77
+ label: 'install the EBK IPv4 loopback port forward',
78
+ },
79
+ {
80
+ args: ['ip6tables', '-t', 'nat', '-A', 'OUTPUT', ...ipv6],
81
+ command: 'sudo',
82
+ label: 'install the EBK IPv6 loopback port forward',
83
+ },
84
+ ],
85
+ internalPort: exports.EBK_GATEWAY_INTERNAL_PORT,
86
+ platform: targetPlatform,
87
+ remove: [
88
+ {
89
+ args: ['iptables', '-t', 'nat', '-D', 'OUTPUT', ...ipv4],
90
+ command: 'sudo',
91
+ label: 'remove the EBK IPv4 loopback port forward',
92
+ },
93
+ {
94
+ args: ['ip6tables', '-t', 'nat', '-D', 'OUTPUT', ...ipv6],
95
+ command: 'sudo',
96
+ label: 'remove the EBK IPv6 loopback port forward',
97
+ },
98
+ ],
99
+ };
100
+ }
101
+ throw new Error(`Portless EBK gateway setup is unsupported on ${targetPlatform}.`);
102
+ }
103
+ function applyPrivilegedCommands(commands) {
104
+ for (const step of commands) {
105
+ const result = (0, node_child_process_1.spawnSync)(step.command, step.args, {
106
+ ...(step.input ? { input: step.input } : {}),
107
+ encoding: 'utf8',
108
+ stdio: step.input ? ['pipe', 'inherit', 'inherit'] : 'inherit',
109
+ });
110
+ if (result.error || result.status !== 0) {
111
+ throw new Error(`Failed to ${step.label}${result.error ? `: ${result.error.message}` : ` (status ${result.status ?? 'unknown'})`}.`);
112
+ }
113
+ }
114
+ }
115
+ //# sourceMappingURL=portless.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"portless.js","sourceRoot":"","sources":["../../../../../packages/nx/src/local-dev/portless.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,10 @@
1
+ export declare const FLEET_PORT_RANGE: {
2
+ readonly first: 41000;
3
+ readonly last: 51999;
4
+ };
5
+ export declare function preferredFleetPort(key: string): number;
6
+ export declare function canBindLoopbackPort(port: number): Promise<boolean>;
7
+ export declare function allocateFleetPort(key: string, options?: {
8
+ isAvailable?: (port: number) => Promise<boolean>;
9
+ reserved?: ReadonlySet<number>;
10
+ }): Promise<number>;
@@ -0,0 +1,39 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.FLEET_PORT_RANGE = void 0;
4
+ exports.preferredFleetPort = preferredFleetPort;
5
+ exports.canBindLoopbackPort = canBindLoopbackPort;
6
+ exports.allocateFleetPort = allocateFleetPort;
7
+ const node_crypto_1 = require("node:crypto");
8
+ const node_net_1 = require("node:net");
9
+ exports.FLEET_PORT_RANGE = { first: 41000, last: 51999 };
10
+ function preferredFleetPort(key) {
11
+ const digest = (0, node_crypto_1.createHash)('sha256').update(key).digest();
12
+ const size = exports.FLEET_PORT_RANGE.last - exports.FLEET_PORT_RANGE.first + 1;
13
+ return exports.FLEET_PORT_RANGE.first + (digest.readUInt32BE(0) % size);
14
+ }
15
+ async function canBindLoopbackPort(port) {
16
+ if (!Number.isInteger(port) || port < 1 || port > 65535)
17
+ return false;
18
+ return new Promise((resolve) => {
19
+ const server = (0, node_net_1.createServer)();
20
+ server.unref();
21
+ server.once('error', () => resolve(false));
22
+ server.listen({ host: '127.0.0.1', port, exclusive: true }, () => {
23
+ server.close(() => resolve(true));
24
+ });
25
+ });
26
+ }
27
+ async function allocateFleetPort(key, options = {}) {
28
+ const isAvailable = options.isAvailable ?? canBindLoopbackPort;
29
+ const first = preferredFleetPort(key);
30
+ const size = exports.FLEET_PORT_RANGE.last - exports.FLEET_PORT_RANGE.first + 1;
31
+ for (let offset = 0; offset < size; offset += 1) {
32
+ const port = exports.FLEET_PORT_RANGE.first +
33
+ ((first - exports.FLEET_PORT_RANGE.first + offset) % size);
34
+ if (!options.reserved?.has(port) && (await isAvailable(port)))
35
+ return port;
36
+ }
37
+ throw new Error(`No loopback port is available in ${exports.FLEET_PORT_RANGE.first}-${exports.FLEET_PORT_RANGE.last}.`);
38
+ }
39
+ //# sourceMappingURL=ports.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ports.js","sourceRoot":"","sources":["../../../../../packages/nx/src/local-dev/ports.ts"],"names":[],"mappings":";;;AAKA,gDAIC;AAED,kDAUC;AAED,8CAmBC;AA1CD,6CAAyC;AACzC,uCAAwC;AAE3B,QAAA,gBAAgB,GAAG,EAAE,KAAK,EAAE,KAAK,EAAE,IAAI,EAAE,KAAK,EAAW,CAAC;AAEvE,SAAgB,kBAAkB,CAAC,GAAW;IAC5C,MAAM,MAAM,GAAG,IAAA,wBAAU,EAAC,QAAQ,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,CAAC;IACzD,MAAM,IAAI,GAAG,wBAAgB,CAAC,IAAI,GAAG,wBAAgB,CAAC,KAAK,GAAG,CAAC,CAAC;IAChE,OAAO,wBAAgB,CAAC,KAAK,GAAG,CAAC,MAAM,CAAC,YAAY,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC;AAClE,CAAC;AAEM,KAAK,UAAU,mBAAmB,CAAC,IAAY;IACpD,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,IAAI,GAAG,CAAC,IAAI,IAAI,GAAG,KAAK;QAAE,OAAO,KAAK,CAAC;IACtE,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE;QAC7B,MAAM,MAAM,GAAG,IAAA,uBAAY,GAAE,CAAC;QAC9B,MAAM,CAAC,KAAK,EAAE,CAAC;QACf,MAAM,CAAC,IAAI,CAAC,OAAO,EAAE,GAAG,EAAE,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC;QAC3C,MAAM,CAAC,MAAM,CAAC,EAAE,IAAI,EAAE,WAAW,EAAE,IAAI,EAAE,SAAS,EAAE,IAAI,EAAE,EAAE,GAAG,EAAE;YAC/D,MAAM,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC;QACpC,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;AACL,CAAC;AAEM,KAAK,UAAU,iBAAiB,CACrC,GAAW,EACX,UAGI,EAAE;IAEN,MAAM,WAAW,GAAG,OAAO,CAAC,WAAW,IAAI,mBAAmB,CAAC;IAC/D,MAAM,KAAK,GAAG,kBAAkB,CAAC,GAAG,CAAC,CAAC;IACtC,MAAM,IAAI,GAAG,wBAAgB,CAAC,IAAI,GAAG,wBAAgB,CAAC,KAAK,GAAG,CAAC,CAAC;IAChE,KAAK,IAAI,MAAM,GAAG,CAAC,EAAE,MAAM,GAAG,IAAI,EAAE,MAAM,IAAI,CAAC,EAAE,CAAC;QAChD,MAAM,IAAI,GACR,wBAAgB,CAAC,KAAK;YACtB,CAAC,CAAC,KAAK,GAAG,wBAAgB,CAAC,KAAK,GAAG,MAAM,CAAC,GAAG,IAAI,CAAC,CAAC;QACrD,IAAI,CAAC,OAAO,CAAC,QAAQ,EAAE,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,WAAW,CAAC,IAAI,CAAC,CAAC;YAAE,OAAO,IAAI,CAAC;IAC7E,CAAC;IACD,MAAM,IAAI,KAAK,CACb,oCAAoC,wBAAgB,CAAC,KAAK,IAAI,wBAAgB,CAAC,IAAI,GAAG,CACvF,CAAC;AACJ,CAAC"}
@@ -0,0 +1,37 @@
1
+ import { type Server } from 'node:http';
2
+ import type { FleetRoute } from './contracts.js';
3
+ export interface FleetProxyOptions {
4
+ certificateExpires: string;
5
+ consumerStage: string;
6
+ fleetOrigin: URL;
7
+ foundationStage: string;
8
+ remoteOrigin: URL;
9
+ routes: FleetRoute[];
10
+ safeMethodFallback?: boolean;
11
+ timeoutMs?: number;
12
+ }
13
+ export interface FleetStatus {
14
+ certificateExpires: string;
15
+ consumerStage: string;
16
+ fleetOrigin: string;
17
+ foundationStage: string;
18
+ gatewayRegistration: 'registered' | 'standalone';
19
+ mode: 'explicit-port' | 'gateway';
20
+ routes: {
21
+ name: string;
22
+ routePrefix: string;
23
+ state: FleetRoute['state'];
24
+ }[];
25
+ }
26
+ export declare class FleetSessionProxy {
27
+ #private;
28
+ readonly options: FleetProxyOptions;
29
+ readonly server: Server;
30
+ constructor(options: FleetProxyOptions);
31
+ setMode(mode: FleetStatus['mode'], registration: FleetStatus['gatewayRegistration']): void;
32
+ status(): FleetStatus;
33
+ listen(port: number): Promise<void>;
34
+ close(): Promise<void>;
35
+ private handle;
36
+ private handleUpgrade;
37
+ }
@@ -0,0 +1,271 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.FleetSessionProxy = void 0;
4
+ const node_http_1 = require("node:http");
5
+ const node_https_1 = require("node:https");
6
+ const node_http_2 = require("node:http");
7
+ const SAFE_METHODS = new Set(['GET', 'HEAD', 'OPTIONS']);
8
+ const HOP_BY_HOP = new Set([
9
+ 'connection',
10
+ 'keep-alive',
11
+ 'proxy-authenticate',
12
+ 'proxy-authorization',
13
+ 'te',
14
+ 'trailer',
15
+ 'transfer-encoding',
16
+ 'upgrade',
17
+ ]);
18
+ const UNTRUSTED_FORWARDING_HEADERS = new Set([
19
+ 'forwarded',
20
+ 'x-forwarded-for',
21
+ 'x-forwarded-host',
22
+ 'x-forwarded-port',
23
+ 'x-forwarded-proto',
24
+ ]);
25
+ function pathMatches(pathname, prefix) {
26
+ return (prefix === '/' || pathname === prefix || pathname.startsWith(`${prefix}/`));
27
+ }
28
+ function routeFor(routes, pathname) {
29
+ return [...routes]
30
+ .filter((route) => route.adapter && pathMatches(pathname, route.adapter.routePrefix))
31
+ .sort((left, right) => (right.adapter?.routePrefix.length ?? 0) -
32
+ (left.adapter?.routePrefix.length ?? 0))[0];
33
+ }
34
+ function requestHeaders(request, options, upstream) {
35
+ const headers = {};
36
+ for (const [name, value] of Object.entries(request.headers)) {
37
+ const normalizedName = name.toLowerCase();
38
+ if (!HOP_BY_HOP.has(normalizedName) &&
39
+ !UNTRUSTED_FORWARDING_HEADERS.has(normalizedName)) {
40
+ headers[name] = value;
41
+ }
42
+ }
43
+ headers.host =
44
+ upstream.type === 'local' ? options.fleetOrigin.host : upstream.url.host;
45
+ headers['x-forwarded-for'] = '127.0.0.1';
46
+ headers['x-forwarded-host'] = options.fleetOrigin.host;
47
+ headers['x-forwarded-port'] = options.fleetOrigin.port || '443';
48
+ headers['x-forwarded-proto'] = 'https';
49
+ return headers;
50
+ }
51
+ function responseHeaders(headers, upstream, options) {
52
+ const result = {};
53
+ for (const [name, value] of Object.entries(headers)) {
54
+ if (!HOP_BY_HOP.has(name.toLowerCase()))
55
+ result[name] = value;
56
+ }
57
+ const location = result.location;
58
+ if (typeof location === 'string') {
59
+ try {
60
+ const resolved = new URL(location, upstream.url);
61
+ const localFleetHost = upstream.type === 'local' &&
62
+ resolved.hostname === options.fleetOrigin.hostname &&
63
+ (resolved.port === '' || resolved.port === options.fleetOrigin.port);
64
+ if (resolved.origin === upstream.url.origin || localFleetHost) {
65
+ result.location = new URL(`${resolved.pathname}${resolved.search}${resolved.hash}`, options.fleetOrigin).toString();
66
+ }
67
+ }
68
+ catch {
69
+ // Preserve invalid/relative application locations rather than inventing one.
70
+ }
71
+ }
72
+ const cookies = result['set-cookie'];
73
+ if (Array.isArray(cookies)) {
74
+ result['set-cookie'] = cookies.map((cookie) => cookie.replace(/;\s*Domain=[^;]+/gi, ''));
75
+ }
76
+ result['x-ebk-upstream'] = upstream.type;
77
+ result['x-ebk-consumer-stage'] = options.consumerStage;
78
+ result['x-ebk-foundation-stage'] = options.foundationStage;
79
+ return result;
80
+ }
81
+ function selectUpstream(request, options) {
82
+ const requestUrl = new URL(request.url ?? '/', options.fleetOrigin);
83
+ const route = routeFor(options.routes, requestUrl.pathname);
84
+ if (!route || !route.selected) {
85
+ return { route, type: 'development', url: options.remoteOrigin };
86
+ }
87
+ if (route.state === 'ready' && route.upstream) {
88
+ return { route, type: 'local', url: route.upstream };
89
+ }
90
+ const method = request.method?.toUpperCase() ?? 'GET';
91
+ if (options.safeMethodFallback && SAFE_METHODS.has(method)) {
92
+ return { route, type: 'development', url: options.remoteOrigin };
93
+ }
94
+ return undefined;
95
+ }
96
+ function proxyPath(request, upstream) {
97
+ const input = new URL(request.url ?? '/', 'https://fleet.invalid');
98
+ const base = upstream.pathname.endsWith('/')
99
+ ? upstream.pathname.slice(0, -1)
100
+ : upstream.pathname;
101
+ return `${base}${input.pathname}${input.search}` || '/';
102
+ }
103
+ class FleetSessionProxy {
104
+ options;
105
+ server;
106
+ #mode = 'gateway';
107
+ #registration = 'standalone';
108
+ #sockets = new Set();
109
+ constructor(options) {
110
+ this.options = options;
111
+ this.server = (0, node_http_2.createServer)((request, response) => {
112
+ void this.handle(request, response);
113
+ });
114
+ this.server.on('connection', (socket) => {
115
+ this.#sockets.add(socket);
116
+ socket.once('close', () => this.#sockets.delete(socket));
117
+ });
118
+ this.server.on('upgrade', (request, socket, head) => {
119
+ this.handleUpgrade(request, socket, head);
120
+ });
121
+ }
122
+ setMode(mode, registration) {
123
+ this.#mode = mode;
124
+ this.#registration = registration;
125
+ }
126
+ status() {
127
+ return {
128
+ certificateExpires: this.options.certificateExpires,
129
+ consumerStage: this.options.consumerStage,
130
+ fleetOrigin: this.options.fleetOrigin.toString(),
131
+ foundationStage: this.options.foundationStage,
132
+ gatewayRegistration: this.#registration,
133
+ mode: this.#mode,
134
+ routes: this.options.routes.map((route) => ({
135
+ name: route.name,
136
+ routePrefix: route.adapter?.routePrefix ?? '',
137
+ state: route.state,
138
+ })),
139
+ };
140
+ }
141
+ async listen(port) {
142
+ await new Promise((resolve, reject) => {
143
+ this.server.once('error', reject);
144
+ this.server.listen(port, '127.0.0.1', () => {
145
+ this.server.off('error', reject);
146
+ resolve();
147
+ });
148
+ });
149
+ }
150
+ async close() {
151
+ for (const socket of this.#sockets)
152
+ socket.destroy();
153
+ if (!this.server.listening)
154
+ return;
155
+ await new Promise((resolve, reject) => this.server.close((error) => (error ? reject(error) : resolve())));
156
+ }
157
+ async handle(request, response) {
158
+ if (new URL(request.url ?? '/', this.options.fleetOrigin).pathname ===
159
+ '/_ebk/fleet') {
160
+ response.writeHead(200, {
161
+ 'cache-control': 'no-store',
162
+ 'content-type': 'application/json; charset=utf-8',
163
+ });
164
+ response.end(`${JSON.stringify(this.status(), null, 2)}\n`);
165
+ return;
166
+ }
167
+ const selected = selectUpstream(request, this.options);
168
+ if (!selected) {
169
+ response.writeHead(503, {
170
+ 'content-type': 'application/json; charset=utf-8',
171
+ 'retry-after': '2',
172
+ 'x-ebk-consumer-stage': this.options.consumerStage,
173
+ 'x-ebk-foundation-stage': this.options.foundationStage,
174
+ 'x-ebk-upstream': 'local',
175
+ });
176
+ response.end(`${JSON.stringify({ error: 'selected local slice is unavailable', route: request.url })}\n`);
177
+ return;
178
+ }
179
+ const method = request.method?.toUpperCase() ?? 'GET';
180
+ const mayRetryWithoutBody = selected.type === 'local' &&
181
+ this.options.safeMethodFallback === true &&
182
+ SAFE_METHODS.has(method) &&
183
+ request.headers['transfer-encoding'] === undefined &&
184
+ Number(request.headers['content-length'] ?? '0') === 0;
185
+ let retried = false;
186
+ const dispatch = (upstream, replay) => {
187
+ const transport = upstream.url.protocol === 'https:' ? node_https_1.request : node_http_1.request;
188
+ const requestOptions = {
189
+ headers: requestHeaders(request, this.options, upstream),
190
+ hostname: upstream.url.hostname,
191
+ method: request.method,
192
+ path: proxyPath(request, upstream.url),
193
+ port: upstream.url.port || (upstream.url.protocol === 'https:' ? 443 : 80),
194
+ protocol: upstream.url.protocol,
195
+ timeout: this.options.timeoutMs ?? 30_000,
196
+ };
197
+ let upstreamResponded = false;
198
+ const upstreamRequest = transport(requestOptions, (upstreamResponse) => {
199
+ upstreamResponded = true;
200
+ response.writeHead(upstreamResponse.statusCode ?? 502, responseHeaders(upstreamResponse.headers, upstream, this.options));
201
+ upstreamResponse.pipe(response);
202
+ });
203
+ upstreamRequest.on('timeout', () => upstreamRequest.destroy(new Error('upstream connection timed out')));
204
+ upstreamRequest.on('error', () => {
205
+ if (upstreamResponded || response.headersSent) {
206
+ response.destroy();
207
+ return;
208
+ }
209
+ if (mayRetryWithoutBody && !retried && !response.headersSent) {
210
+ retried = true;
211
+ dispatch({ type: 'development', url: this.options.remoteOrigin }, true);
212
+ return;
213
+ }
214
+ if (!response.headersSent) {
215
+ response.writeHead(502, {
216
+ 'content-type': 'application/json; charset=utf-8',
217
+ 'x-ebk-consumer-stage': this.options.consumerStage,
218
+ 'x-ebk-foundation-stage': this.options.foundationStage,
219
+ 'x-ebk-upstream': upstream.type,
220
+ });
221
+ }
222
+ response.end(`${JSON.stringify({ error: `${upstream.type} upstream unavailable` })}\n`);
223
+ });
224
+ if (replay)
225
+ upstreamRequest.end();
226
+ else
227
+ request.pipe(upstreamRequest);
228
+ };
229
+ dispatch(selected, false);
230
+ }
231
+ handleUpgrade(request, socket, head) {
232
+ const selected = selectUpstream(request, this.options);
233
+ if (!selected ||
234
+ (selected.type === 'local' && selected.route?.adapter?.websocket !== true)) {
235
+ socket.end('HTTP/1.1 503 Service Unavailable\r\nConnection: close\r\n\r\n');
236
+ return;
237
+ }
238
+ const transport = selected.url.protocol === 'https:' ? node_https_1.request : node_http_1.request;
239
+ const upstream = transport({
240
+ headers: {
241
+ ...requestHeaders(request, this.options, selected),
242
+ connection: 'Upgrade',
243
+ upgrade: request.headers.upgrade,
244
+ },
245
+ hostname: selected.url.hostname,
246
+ method: request.method,
247
+ path: proxyPath(request, selected.url),
248
+ port: selected.url.port || (selected.url.protocol === 'https:' ? 443 : 80),
249
+ protocol: selected.url.protocol,
250
+ });
251
+ upstream.on('upgrade', (response, upstreamSocket, upstreamHead) => {
252
+ socket.write(`HTTP/1.1 ${response.statusCode ?? 101} ${response.statusMessage ?? 'Switching Protocols'}\r\n` +
253
+ Object.entries(response.headers)
254
+ .map(([name, value]) => `${name}: ${Array.isArray(value) ? value.join(', ') : (value ?? '')}\r\n`)
255
+ .join('') +
256
+ '\r\n');
257
+ if (upstreamHead.length)
258
+ socket.write(upstreamHead);
259
+ if (head.length)
260
+ upstreamSocket.write(head);
261
+ upstreamSocket.pipe(socket).pipe(upstreamSocket);
262
+ });
263
+ upstream.on('response', (response) => {
264
+ socket.end(`HTTP/1.1 ${response.statusCode ?? 502} ${response.statusMessage ?? 'Bad Gateway'}\r\nConnection: close\r\n\r\n`);
265
+ });
266
+ upstream.on('error', () => socket.end('HTTP/1.1 502 Bad Gateway\r\nConnection: close\r\n\r\n'));
267
+ upstream.end();
268
+ }
269
+ }
270
+ exports.FleetSessionProxy = FleetSessionProxy;
271
+ //# sourceMappingURL=proxy.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"proxy.js","sourceRoot":"","sources":["../../../../../packages/nx/src/local-dev/proxy.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,24 @@
1
+ export interface LocalTlsPaths {
2
+ appData: string;
3
+ capability: string;
4
+ intermediateCertificate: string;
5
+ intermediateKey: string;
6
+ leafCertificate: string;
7
+ leafKey: string;
8
+ rootCertificate: string;
9
+ rootKey: string;
10
+ gatewayPid: string;
11
+ gatewaySocket: string;
12
+ gatewayState: string;
13
+ }
14
+ export declare function defaultLocalDevAppData(environment?: NodeJS.ProcessEnv): string;
15
+ export declare function localTlsPaths(appData?: string): LocalTlsPaths;
16
+ export declare function createLocalIpcPath(base: string, identity: string): string;
17
+ export declare function assertPrivateKeyPermissions(path: string): void;
18
+ export declare function createLocalTlsState(options: {
19
+ appData?: string;
20
+ capability: string;
21
+ force?: boolean;
22
+ hostSuffix?: string;
23
+ }): LocalTlsPaths;
24
+ export declare function removeLocalTlsState(appData?: string): void;