aws-runtime-bridge 1.8.2 → 1.8.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.
- package/dist/config.d.ts.map +1 -1
- package/dist/config.js +28 -4
- package/dist/config.test.js +26 -1
- package/package.json +1 -1
package/dist/config.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAMH,WAAW;AACX,eAAO,MAAM,IAAI,EAAE,MAElB,CAAC;AAEF,kBAAkB;AAClB,eAAO,MAAM,0BAA0B,0BAA0B,CAAC;AAElE,MAAM,MAAM,sBAAsB,GAC9B,SAAS,GACT,KAAK,GACL,6BAA6B,GAC7B,SAAS,GACT,iCAAiC,CAAC;AAEtC,MAAM,WAAW,0BAA0B;IACzC,GAAG,EAAE,MAAM,CAAC;IACZ,MAAM,EAAE,sBAAsB,CAAC;IAC/B,mBAAmB,EAAE,MAAM,EAAE,CAAC;CAC/B;AA+
|
|
1
|
+
{"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAMH,WAAW;AACX,eAAO,MAAM,IAAI,EAAE,MAElB,CAAC;AAEF,kBAAkB;AAClB,eAAO,MAAM,0BAA0B,0BAA0B,CAAC;AAElE,MAAM,MAAM,sBAAsB,GAC9B,SAAS,GACT,KAAK,GACL,6BAA6B,GAC7B,SAAS,GACT,iCAAiC,CAAC;AAEtC,MAAM,WAAW,0BAA0B;IACzC,GAAG,EAAE,MAAM,CAAC;IACZ,MAAM,EAAE,sBAAsB,CAAC;IAC/B,mBAAmB,EAAE,MAAM,EAAE,CAAC;CAC/B;AA+FD;;;GAGG;AACH,wBAAgB,uBAAuB,IAAI,0BAA0B,CAEpE;AAED;;;GAGG;AACH,wBAAgB,2BAA2B,CACzC,uBAAuB,EAAE,OAAO,GAC/B,0BAA0B,CA6D5B;AAED,+DAA+D;AAC/D,eAAO,MAAM,gBAAgB,EAAE,MAEH,CAAC;AAE7B,cAAc;AACd,eAAO,MAAM,OAAO,EAAE,MAA8C,CAAC;AAErE,oCAAoC;AACpC,eAAO,MAAM,oBAAoB,EAAE,OACiB,CAAC;AAErD,8BAA8B;AAC9B,eAAO,MAAM,kBAAkB,EAAE,MAAM,EAMC,CAAC;AAEzC,gEAAgE;AAChE,wBAAgB,uBAAuB,IAAI,IAAI,CAAG;AAElD,eAAe;AACf,wBAAgB,iBAAiB,IAAI,MAAM,CAE1C;AAED,8CAA8C;AAC9C,wBAAgB,mBAAmB,CAAC,WAAW,EAAE,MAAM,GAAG,MAAM,CAK/D;AAED,2BAA2B;AAC3B,wBAAgB,sBAAsB,CAAC,WAAW,EAAE,MAAM,GAAG,MAAM,CAKlE;AAED,0BAA0B;AAC1B,wBAAgB,kBAAkB,CAAC,WAAW,EAAE,MAAM,GAAG,MAAM,CAK9D;AAED,yBAAyB;AACzB,wBAAgB,qBAAqB,CAAC,WAAW,EAAE,MAAM,GAAG,MAAM,CAKjE;AAED,wBAAwB;AACxB,wBAAgB,kBAAkB,CAAC,WAAW,EAAE,MAAM,GAAG,MAAM,CAK9D;AAED,sBAAsB;AACtB,wBAAgB,kBAAkB,CAAC,WAAW,EAAE,MAAM,GAAG,MAAM,CAK9D;AAED,yBAAyB;AACzB,wBAAgB,iBAAiB,CAAC,WAAW,EAAE,MAAM,GAAG,MAAM,CAK7D;AAED,4BAA4B;AAC5B,wBAAgB,oBAAoB,CAAC,WAAW,EAAE,MAAM,GAAG,MAAM,CAKhE;AAED,2BAA2B;AAC3B,wBAAgB,iBAAiB,CAAC,WAAW,EAAE,MAAM,GAAG,MAAM,CAK7D;AAED;;GAEG;AAEH,yBAAyB;AACzB,eAAO,MAAM,oBAAoB,QAEhC,CAAC;AAEF,0CAA0C;AAC1C,eAAO,MAAM,sBAAsB,EACrB,MAAM,GAAG,OAAO,GAAG,QAAQ,CAAC;AAE1C,eAAe;AACf,eAAO,MAAM,mBAAmB,SACiB,CAAC;AAElD,iCAAiC;AACjC,eAAO,MAAM,2BAA2B,QAEvC,CAAC;AAEF,0CAA0C;AAC1C,eAAO,MAAM,oBAAoB,QAEhC,CAAC;AAEF,qCAAqC;AACrC,eAAO,MAAM,uBAAuB,QAEnC,CAAC;AAEF;;GAEG;AAEH,eAAe;AACf,eAAO,MAAM,qBAAqB,SAA2C,CAAC;AAE9E,YAAY;AACZ,eAAO,MAAM,uBAAuB,QAAkC,CAAC;AAEvE,iBAAiB;AACjB,eAAO,MAAM,sBAAsB,QAAiC,CAAC;AAErE,oBAAoB;AACpB,eAAO,MAAM,2BAA2B,QAAsC,CAAC;AAE/E,WAAW;AACX,eAAO,MAAM,0BAA0B,QAAqC,CAAC;AAE7E,WAAW;AACX,eAAO,MAAM,uBAAuB,QAAkC,CAAC;AAEvE,aAAa;AACb,eAAO,MAAM,4BAA4B,QACH,CAAC;AAEvC,kCAAkC;AAClC,eAAO,MAAM,wBAAwB,QAC4B,CAAC;AAElE,aAAa;AACb,eAAO,MAAM,yBAAyB,QAErC,CAAC;AAEF,iBAAiB;AACjB,eAAO,MAAM,4BAA4B,QAExC,CAAC"}
|
package/dist/config.js
CHANGED
|
@@ -41,6 +41,19 @@ function normalizeSchedulerHttpBaseUrl(value) {
|
|
|
41
41
|
return repaired.replace(/\/+$/, "");
|
|
42
42
|
}
|
|
43
43
|
}
|
|
44
|
+
function isLoopbackSchedulerBaseUrl(value) {
|
|
45
|
+
try {
|
|
46
|
+
const url = new URL(value);
|
|
47
|
+
const hostname = url.hostname.toLowerCase();
|
|
48
|
+
return (hostname === "localhost" ||
|
|
49
|
+
hostname === "127.0.0.1" ||
|
|
50
|
+
hostname === "::1" ||
|
|
51
|
+
hostname === "[::1]");
|
|
52
|
+
}
|
|
53
|
+
catch {
|
|
54
|
+
return /^https?:\/\/(localhost|127\.0\.0\.1)(:\d+)?(?:\/|$)/i.test(value);
|
|
55
|
+
}
|
|
56
|
+
}
|
|
44
57
|
function getAutoRegisterConfigFilePath() {
|
|
45
58
|
const testHomeDir = String(process.env.AWS_TEST_HOME || "").trim();
|
|
46
59
|
return path.join(testHomeDir || homedir(), ".aws-bridge", "config.json");
|
|
@@ -84,14 +97,26 @@ export function resolveSchedulerBaseUrl() {
|
|
|
84
97
|
*/
|
|
85
98
|
export function resolveSchedulerBaseUrlFrom(requestSchedulerBaseUrl) {
|
|
86
99
|
const normalizedRequestSchedulerBaseUrl = normalizeSchedulerHttpBaseUrl(requestSchedulerBaseUrl);
|
|
100
|
+
const envSchedulerBaseUrl = normalizeSchedulerHttpBaseUrl(process.env.AWS_RUNTIME_SCHEDULER_BASE_URL);
|
|
101
|
+
const autoRegisterTargetUrls = readAutoRegisterTargetUrls();
|
|
102
|
+
const singleAutoRegisterTargetUrl = autoRegisterTargetUrls.length === 1 ? autoRegisterTargetUrls[0] : undefined;
|
|
87
103
|
if (normalizedRequestSchedulerBaseUrl) {
|
|
104
|
+
const localSchedulerBaseUrl = envSchedulerBaseUrl || singleAutoRegisterTargetUrl;
|
|
105
|
+
if (localSchedulerBaseUrl &&
|
|
106
|
+
isLoopbackSchedulerBaseUrl(normalizedRequestSchedulerBaseUrl) &&
|
|
107
|
+
!isLoopbackSchedulerBaseUrl(localSchedulerBaseUrl)) {
|
|
108
|
+
return {
|
|
109
|
+
url: localSchedulerBaseUrl,
|
|
110
|
+
source: envSchedulerBaseUrl ? "env" : "single-auto-register-target",
|
|
111
|
+
ambiguousTargetUrls: [],
|
|
112
|
+
};
|
|
113
|
+
}
|
|
88
114
|
return {
|
|
89
115
|
url: normalizedRequestSchedulerBaseUrl,
|
|
90
116
|
source: "request",
|
|
91
117
|
ambiguousTargetUrls: [],
|
|
92
118
|
};
|
|
93
119
|
}
|
|
94
|
-
const envSchedulerBaseUrl = normalizeSchedulerHttpBaseUrl(process.env.AWS_RUNTIME_SCHEDULER_BASE_URL);
|
|
95
120
|
if (envSchedulerBaseUrl) {
|
|
96
121
|
return {
|
|
97
122
|
url: envSchedulerBaseUrl,
|
|
@@ -99,10 +124,9 @@ export function resolveSchedulerBaseUrlFrom(requestSchedulerBaseUrl) {
|
|
|
99
124
|
ambiguousTargetUrls: [],
|
|
100
125
|
};
|
|
101
126
|
}
|
|
102
|
-
|
|
103
|
-
if (autoRegisterTargetUrls.length === 1) {
|
|
127
|
+
if (singleAutoRegisterTargetUrl) {
|
|
104
128
|
return {
|
|
105
|
-
url:
|
|
129
|
+
url: singleAutoRegisterTargetUrl || DEFAULT_SCHEDULER_BASE_URL,
|
|
106
130
|
source: "single-auto-register-target",
|
|
107
131
|
ambiguousTargetUrls: [],
|
|
108
132
|
};
|
package/dist/config.test.js
CHANGED
|
@@ -57,7 +57,8 @@ describe("scheduler base URL resolution", () => {
|
|
|
57
57
|
it("keeps explicit AWS_RUNTIME_SCHEDULER_BASE_URL as the highest priority", async () => {
|
|
58
58
|
const runtimeHome = createRuntimeHome();
|
|
59
59
|
useRuntimeHome(runtimeHome);
|
|
60
|
-
process.env.AWS_RUNTIME_SCHEDULER_BASE_URL =
|
|
60
|
+
process.env.AWS_RUNTIME_SCHEDULER_BASE_URL =
|
|
61
|
+
"http://explicit.local:7380/path";
|
|
61
62
|
writeBridgeConfig(runtimeHome, [{ serverUrl: "http://target.local:7380" }]);
|
|
62
63
|
const { resolveSchedulerBaseUrl } = await import("./config.js");
|
|
63
64
|
expect(resolveSchedulerBaseUrl()).toEqual({
|
|
@@ -66,6 +67,30 @@ describe("scheduler base URL resolution", () => {
|
|
|
66
67
|
ambiguousTargetUrls: [],
|
|
67
68
|
});
|
|
68
69
|
});
|
|
70
|
+
it("ignores a server-supplied loopback URL when bridge has an explicit external scheduler URL", async () => {
|
|
71
|
+
const runtimeHome = createRuntimeHome();
|
|
72
|
+
useRuntimeHome(runtimeHome);
|
|
73
|
+
process.env.AWS_RUNTIME_SCHEDULER_BASE_URL = "http://101.42.200.84:7380";
|
|
74
|
+
const { resolveSchedulerBaseUrlFrom } = await import("./config.js");
|
|
75
|
+
expect(resolveSchedulerBaseUrlFrom("http://127.0.0.1:7380/api")).toEqual({
|
|
76
|
+
url: "http://101.42.200.84:7380",
|
|
77
|
+
source: "env",
|
|
78
|
+
ambiguousTargetUrls: [],
|
|
79
|
+
});
|
|
80
|
+
});
|
|
81
|
+
it("uses a single external auto-register target instead of a server-supplied loopback URL", async () => {
|
|
82
|
+
const runtimeHome = createRuntimeHome();
|
|
83
|
+
useRuntimeHome(runtimeHome);
|
|
84
|
+
writeBridgeConfig(runtimeHome, [
|
|
85
|
+
{ serverUrl: "http://101.42.200.84:7380" },
|
|
86
|
+
]);
|
|
87
|
+
const { resolveSchedulerBaseUrlFrom } = await import("./config.js");
|
|
88
|
+
expect(resolveSchedulerBaseUrlFrom("http://127.0.0.1:7380/api")).toEqual({
|
|
89
|
+
url: "http://101.42.200.84:7380",
|
|
90
|
+
source: "single-auto-register-target",
|
|
91
|
+
ambiguousTargetUrls: [],
|
|
92
|
+
});
|
|
93
|
+
});
|
|
69
94
|
it("uses a single auto-register target serverUrl when scheduler env is absent", async () => {
|
|
70
95
|
const runtimeHome = createRuntimeHome();
|
|
71
96
|
useRuntimeHome(runtimeHome);
|