agentv 3.10.3 → 3.11.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/dist/{agentv-provider-NFFLXG5M-TJAWCWCX.js → agentv-provider-MIDKLYIH-6LIYKQRP.js} +2 -1
- package/dist/chunk-2QFWRIYL.js +186 -0
- package/dist/chunk-2QFWRIYL.js.map +1 -0
- package/dist/chunk-2RMPO6LY.js +747 -0
- package/dist/chunk-2RMPO6LY.js.map +1 -0
- package/dist/chunk-3Q7WIXT4.js +4846 -0
- package/dist/chunk-3Q7WIXT4.js.map +1 -0
- package/dist/chunk-73O2DCJP.js +1274 -0
- package/dist/chunk-73O2DCJP.js.map +1 -0
- package/dist/chunk-AUKF3Y3W.js +212 -0
- package/dist/chunk-AUKF3Y3W.js.map +1 -0
- package/dist/{chunk-XOSNETAV.js → chunk-BAUNAXHT.js} +1 -1
- package/dist/chunk-BRH7SIDP.js +133 -0
- package/dist/chunk-BRH7SIDP.js.map +1 -0
- package/dist/chunk-BXM4I3BM.js +526 -0
- package/dist/chunk-BXM4I3BM.js.map +1 -0
- package/dist/{chunk-U556GRI3.js → chunk-CKMAM2GD.js} +76 -34
- package/dist/chunk-CKMAM2GD.js.map +1 -0
- package/dist/chunk-FHTURHTY.js +546 -0
- package/dist/chunk-FHTURHTY.js.map +1 -0
- package/dist/chunk-GJFXQQWG.js +21 -0
- package/dist/chunk-GJFXQQWG.js.map +1 -0
- package/dist/chunk-HKMLG4KF.js +38 -0
- package/dist/chunk-HKMLG4KF.js.map +1 -0
- package/dist/chunk-JGU3PVA4.js +133 -0
- package/dist/chunk-JGU3PVA4.js.map +1 -0
- package/dist/chunk-LHU5FGVZ.js +4804 -0
- package/dist/chunk-LHU5FGVZ.js.map +1 -0
- package/dist/chunk-OL2WGI6E.js +149 -0
- package/dist/chunk-OL2WGI6E.js.map +1 -0
- package/dist/chunk-ONETZL6N.js +15 -0
- package/dist/chunk-ONETZL6N.js.map +1 -0
- package/dist/{chunk-JUQCB3ZW.js → chunk-OYD2NB55.js} +1292 -896
- package/dist/chunk-OYD2NB55.js.map +1 -0
- package/dist/chunk-QV4UGEN6.js +320 -0
- package/dist/chunk-QV4UGEN6.js.map +1 -0
- package/dist/chunk-QXLDKGF3.js +46 -0
- package/dist/chunk-QXLDKGF3.js.map +1 -0
- package/dist/chunk-U6VEM66A.js +63 -0
- package/dist/chunk-U6VEM66A.js.map +1 -0
- package/dist/chunk-UALXHIMX.js +48 -0
- package/dist/chunk-UALXHIMX.js.map +1 -0
- package/dist/chunk-UGXG73VF.js +55 -0
- package/dist/chunk-UGXG73VF.js.map +1 -0
- package/dist/chunk-UHP5KEDL.js +38 -0
- package/dist/chunk-UHP5KEDL.js.map +1 -0
- package/dist/{chunk-7LC3VNOC.js → chunk-V2S5CZU3.js} +1141 -60
- package/dist/chunk-V2S5CZU3.js.map +1 -0
- package/dist/chunk-WVSXFZWP.js +204 -0
- package/dist/chunk-WVSXFZWP.js.map +1 -0
- package/dist/chunk-XSUMCWKO.js +30 -0
- package/dist/chunk-XSUMCWKO.js.map +1 -0
- package/dist/chunk-XUO7ZEHU.js +181 -0
- package/dist/chunk-XUO7ZEHU.js.map +1 -0
- package/dist/chunk-YSGUX5JT.js +1002 -0
- package/dist/chunk-YSGUX5JT.js.map +1 -0
- package/dist/cli.js +5 -4
- package/dist/cli.js.map +1 -1
- package/dist/dist-3PCP5TNF-RYMVLILE.js +25785 -0
- package/dist/dist-3PCP5TNF-RYMVLILE.js.map +1 -0
- package/dist/dist-BOIN5LC5-T5UWUK43.js +76113 -0
- package/dist/dist-BOIN5LC5-T5UWUK43.js.map +1 -0
- package/dist/dist-LXPDQOBI-4V5J2WDS.js +13 -0
- package/dist/dist-LXPDQOBI-4V5J2WDS.js.map +1 -0
- package/dist/{dist-2X7A3TTC.js → dist-VUPMLHIV.js} +4 -3
- package/dist/dist-es-4WSJUIYR-XKIX65IH.js +69 -0
- package/dist/dist-es-4WSJUIYR-XKIX65IH.js.map +1 -0
- package/dist/dist-es-7K7MKRME-CCMAZOQC.js +355 -0
- package/dist/dist-es-7K7MKRME-CCMAZOQC.js.map +1 -0
- package/dist/dist-es-B2RTOKRI-VWZHK5RE.js +191 -0
- package/dist/dist-es-B2RTOKRI-VWZHK5RE.js.map +1 -0
- package/dist/dist-es-HHZ4FAXA-CRERHWKB.js +164 -0
- package/dist/dist-es-HHZ4FAXA-CRERHWKB.js.map +1 -0
- package/dist/dist-es-HVS3RPMX-AYJ3DW4L.js +355 -0
- package/dist/dist-es-HVS3RPMX-AYJ3DW4L.js.map +1 -0
- package/dist/dist-es-L6R4FPI5-IKIRYN45.js +472 -0
- package/dist/dist-es-L6R4FPI5-IKIRYN45.js.map +1 -0
- package/dist/dist-es-SRVEB5QV-Q4CTC2HX.js +24 -0
- package/dist/dist-es-TRIVUKV4-2J47CDXR.js +85 -0
- package/dist/dist-es-TRIVUKV4-2J47CDXR.js.map +1 -0
- package/dist/dist-es-UEEUAV34-IZQDTAMW.js +16 -0
- package/dist/{esm-5Q4BZALM-5REQWAUV.js → esm-OJ2BXJK4-YKEI3Z7E.js} +3 -2
- package/dist/{esm-5Q4BZALM-5REQWAUV.js.map → esm-OJ2BXJK4-YKEI3Z7E.js.map} +1 -1
- package/dist/{esm-CZAWIY6F.js → esm-UYZ3HJBU.js} +2 -2
- package/dist/event-streams-NZADSH5J-6MOSNEV3.js +247 -0
- package/dist/event-streams-NZADSH5J-6MOSNEV3.js.map +1 -0
- package/dist/index.js +5 -4
- package/dist/{interactive-CSA4KIND.js → interactive-FZJANO4A.js} +5 -4
- package/dist/{interactive-CSA4KIND.js.map → interactive-FZJANO4A.js.map} +1 -1
- package/dist/loadSso-IQZ5NB6C-DZJTORO3.js +738 -0
- package/dist/loadSso-IQZ5NB6C-DZJTORO3.js.map +1 -0
- package/dist/multipart-parser-IPYBIGNL-LFMNMM6D.js +387 -0
- package/dist/multipart-parser-IPYBIGNL-LFMNMM6D.js.map +1 -0
- package/dist/{otlp-json-file-exporter-77FDBRSY-EZAPHWP6.js → otlp-json-file-exporter-VN67MK3S-RQIM6EHY.js} +2 -1
- package/dist/otlp-json-file-exporter-VN67MK3S-RQIM6EHY.js.map +1 -0
- package/dist/signin-2ANR4DVS-K5VGBEJF.js +556 -0
- package/dist/signin-2ANR4DVS-K5VGBEJF.js.map +1 -0
- package/dist/{simple-trace-file-exporter-S76DMABU-5FCJESD2.js → simple-trace-file-exporter-XWZTIZR2-4JKATE5G.js} +2 -1
- package/dist/simple-trace-file-exporter-XWZTIZR2-4JKATE5G.js.map +1 -0
- package/dist/{src-ML4D2MC2.js → src-PXDA7QIS.js} +2 -2
- package/dist/src-SLOMUG7K-CV5JG263.js +1408 -0
- package/dist/src-SLOMUG7K-CV5JG263.js.map +1 -0
- package/dist/sso-oidc-HVCDATR2-CYP3BM5O.js +708 -0
- package/dist/sso-oidc-HVCDATR2-CYP3BM5O.js.map +1 -0
- package/dist/sts-X7JGSP4H-PDAAYDDH.js +2917 -0
- package/dist/sts-X7JGSP4H-PDAAYDDH.js.map +1 -0
- package/dist/templates/.agentv/config.yaml +4 -13
- package/dist/templates/.agentv/targets.yaml +0 -16
- package/dist/undici-VAR2VUJI-6PAOUXZC.js +23388 -0
- package/dist/undici-VAR2VUJI-6PAOUXZC.js.map +1 -0
- package/package.json +11 -3
- package/dist/chunk-7LC3VNOC.js.map +0 -1
- package/dist/chunk-JUQCB3ZW.js.map +0 -1
- package/dist/chunk-U556GRI3.js.map +0 -1
- package/dist/templates/.agentv/.env.example +0 -23
- /package/dist/{agentv-provider-NFFLXG5M-TJAWCWCX.js.map → agentv-provider-MIDKLYIH-6LIYKQRP.js.map} +0 -0
- /package/dist/{chunk-XOSNETAV.js.map → chunk-BAUNAXHT.js.map} +0 -0
- /package/dist/{dist-2X7A3TTC.js.map → dist-VUPMLHIV.js.map} +0 -0
- /package/dist/{esm-CZAWIY6F.js.map → dist-es-SRVEB5QV-Q4CTC2HX.js.map} +0 -0
- /package/dist/{otlp-json-file-exporter-77FDBRSY-EZAPHWP6.js.map → dist-es-UEEUAV34-IZQDTAMW.js.map} +0 -0
- /package/dist/{simple-trace-file-exporter-S76DMABU-5FCJESD2.js.map → esm-UYZ3HJBU.js.map} +0 -0
- /package/dist/{src-ML4D2MC2.js.map → src-PXDA7QIS.js.map} +0 -0
|
@@ -0,0 +1,526 @@
|
|
|
1
|
+
import { createRequire } from 'node:module'; const require = createRequire(import.meta.url);
|
|
2
|
+
|
|
3
|
+
// ../../packages/core/dist/chunk-NPYUWTQR.js
|
|
4
|
+
var EndpointCache = class {
|
|
5
|
+
capacity;
|
|
6
|
+
data = /* @__PURE__ */ new Map();
|
|
7
|
+
parameters = [];
|
|
8
|
+
constructor({ size, params }) {
|
|
9
|
+
this.capacity = size ?? 50;
|
|
10
|
+
if (params) {
|
|
11
|
+
this.parameters = params;
|
|
12
|
+
}
|
|
13
|
+
}
|
|
14
|
+
get(endpointParams, resolver) {
|
|
15
|
+
const key = this.hash(endpointParams);
|
|
16
|
+
if (key === false) {
|
|
17
|
+
return resolver();
|
|
18
|
+
}
|
|
19
|
+
if (!this.data.has(key)) {
|
|
20
|
+
if (this.data.size > this.capacity + 10) {
|
|
21
|
+
const keys = this.data.keys();
|
|
22
|
+
let i = 0;
|
|
23
|
+
while (true) {
|
|
24
|
+
const { value, done } = keys.next();
|
|
25
|
+
this.data.delete(value);
|
|
26
|
+
if (done || ++i > 10) {
|
|
27
|
+
break;
|
|
28
|
+
}
|
|
29
|
+
}
|
|
30
|
+
}
|
|
31
|
+
this.data.set(key, resolver());
|
|
32
|
+
}
|
|
33
|
+
return this.data.get(key);
|
|
34
|
+
}
|
|
35
|
+
size() {
|
|
36
|
+
return this.data.size;
|
|
37
|
+
}
|
|
38
|
+
hash(endpointParams) {
|
|
39
|
+
let buffer = "";
|
|
40
|
+
const { parameters } = this;
|
|
41
|
+
if (parameters.length === 0) {
|
|
42
|
+
return false;
|
|
43
|
+
}
|
|
44
|
+
for (const param of parameters) {
|
|
45
|
+
const val = String(endpointParams[param] ?? "");
|
|
46
|
+
if (val.includes("|;")) {
|
|
47
|
+
return false;
|
|
48
|
+
}
|
|
49
|
+
buffer += val + "|;";
|
|
50
|
+
}
|
|
51
|
+
return buffer;
|
|
52
|
+
}
|
|
53
|
+
};
|
|
54
|
+
var IP_V4_REGEX = new RegExp(`^(?:25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]\\d|\\d)(?:\\.(?:25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]\\d|\\d)){3}$`);
|
|
55
|
+
var isIpAddress = (value) => IP_V4_REGEX.test(value) || value.startsWith("[") && value.endsWith("]");
|
|
56
|
+
var VALID_HOST_LABEL_REGEX = new RegExp(`^(?!.*-$)(?!-)[a-zA-Z0-9-]{1,63}$`);
|
|
57
|
+
var isValidHostLabel = (value, allowSubDomains = false) => {
|
|
58
|
+
if (!allowSubDomains) {
|
|
59
|
+
return VALID_HOST_LABEL_REGEX.test(value);
|
|
60
|
+
}
|
|
61
|
+
const labels = value.split(".");
|
|
62
|
+
for (const label of labels) {
|
|
63
|
+
if (!isValidHostLabel(label)) {
|
|
64
|
+
return false;
|
|
65
|
+
}
|
|
66
|
+
}
|
|
67
|
+
return true;
|
|
68
|
+
};
|
|
69
|
+
var customEndpointFunctions = {};
|
|
70
|
+
var debugId = "endpoints";
|
|
71
|
+
function toDebugString(input) {
|
|
72
|
+
if (typeof input !== "object" || input == null) {
|
|
73
|
+
return input;
|
|
74
|
+
}
|
|
75
|
+
if ("ref" in input) {
|
|
76
|
+
return `$${toDebugString(input.ref)}`;
|
|
77
|
+
}
|
|
78
|
+
if ("fn" in input) {
|
|
79
|
+
return `${input.fn}(${(input.argv || []).map(toDebugString).join(", ")})`;
|
|
80
|
+
}
|
|
81
|
+
return JSON.stringify(input, null, 2);
|
|
82
|
+
}
|
|
83
|
+
var EndpointError = class extends Error {
|
|
84
|
+
constructor(message) {
|
|
85
|
+
super(message);
|
|
86
|
+
this.name = "EndpointError";
|
|
87
|
+
}
|
|
88
|
+
};
|
|
89
|
+
var booleanEquals = (value1, value2) => value1 === value2;
|
|
90
|
+
var getAttrPathList = (path) => {
|
|
91
|
+
const parts = path.split(".");
|
|
92
|
+
const pathList = [];
|
|
93
|
+
for (const part of parts) {
|
|
94
|
+
const squareBracketIndex = part.indexOf("[");
|
|
95
|
+
if (squareBracketIndex !== -1) {
|
|
96
|
+
if (part.indexOf("]") !== part.length - 1) {
|
|
97
|
+
throw new EndpointError(`Path: '${path}' does not end with ']'`);
|
|
98
|
+
}
|
|
99
|
+
const arrayIndex = part.slice(squareBracketIndex + 1, -1);
|
|
100
|
+
if (Number.isNaN(parseInt(arrayIndex))) {
|
|
101
|
+
throw new EndpointError(`Invalid array index: '${arrayIndex}' in path: '${path}'`);
|
|
102
|
+
}
|
|
103
|
+
if (squareBracketIndex !== 0) {
|
|
104
|
+
pathList.push(part.slice(0, squareBracketIndex));
|
|
105
|
+
}
|
|
106
|
+
pathList.push(arrayIndex);
|
|
107
|
+
} else {
|
|
108
|
+
pathList.push(part);
|
|
109
|
+
}
|
|
110
|
+
}
|
|
111
|
+
return pathList;
|
|
112
|
+
};
|
|
113
|
+
var getAttr = (value, path) => getAttrPathList(path).reduce((acc, index) => {
|
|
114
|
+
if (typeof acc !== "object") {
|
|
115
|
+
throw new EndpointError(`Index '${index}' in '${path}' not found in '${JSON.stringify(value)}'`);
|
|
116
|
+
} else if (Array.isArray(acc)) {
|
|
117
|
+
return acc[parseInt(index)];
|
|
118
|
+
}
|
|
119
|
+
return acc[index];
|
|
120
|
+
}, value);
|
|
121
|
+
var isSet = (value) => value != null;
|
|
122
|
+
var not = (value) => !value;
|
|
123
|
+
var EndpointURLScheme;
|
|
124
|
+
(function(EndpointURLScheme2) {
|
|
125
|
+
EndpointURLScheme2["HTTP"] = "http";
|
|
126
|
+
EndpointURLScheme2["HTTPS"] = "https";
|
|
127
|
+
})(EndpointURLScheme || (EndpointURLScheme = {}));
|
|
128
|
+
var DEFAULT_PORTS = {
|
|
129
|
+
[EndpointURLScheme.HTTP]: 80,
|
|
130
|
+
[EndpointURLScheme.HTTPS]: 443
|
|
131
|
+
};
|
|
132
|
+
var parseURL = (value) => {
|
|
133
|
+
const whatwgURL = (() => {
|
|
134
|
+
try {
|
|
135
|
+
if (value instanceof URL) {
|
|
136
|
+
return value;
|
|
137
|
+
}
|
|
138
|
+
if (typeof value === "object" && "hostname" in value) {
|
|
139
|
+
const { hostname: hostname2, port, protocol: protocol2 = "", path = "", query = {} } = value;
|
|
140
|
+
const url = new URL(`${protocol2}//${hostname2}${port ? `:${port}` : ""}${path}`);
|
|
141
|
+
url.search = Object.entries(query).map(([k, v]) => `${k}=${v}`).join("&");
|
|
142
|
+
return url;
|
|
143
|
+
}
|
|
144
|
+
return new URL(value);
|
|
145
|
+
} catch (error) {
|
|
146
|
+
return null;
|
|
147
|
+
}
|
|
148
|
+
})();
|
|
149
|
+
if (!whatwgURL) {
|
|
150
|
+
console.error(`Unable to parse ${JSON.stringify(value)} as a whatwg URL.`);
|
|
151
|
+
return null;
|
|
152
|
+
}
|
|
153
|
+
const urlString = whatwgURL.href;
|
|
154
|
+
const { host, hostname, pathname, protocol, search } = whatwgURL;
|
|
155
|
+
if (search) {
|
|
156
|
+
return null;
|
|
157
|
+
}
|
|
158
|
+
const scheme = protocol.slice(0, -1);
|
|
159
|
+
if (!Object.values(EndpointURLScheme).includes(scheme)) {
|
|
160
|
+
return null;
|
|
161
|
+
}
|
|
162
|
+
const isIp = isIpAddress(hostname);
|
|
163
|
+
const inputContainsDefaultPort = urlString.includes(`${host}:${DEFAULT_PORTS[scheme]}`) || typeof value === "string" && value.includes(`${host}:${DEFAULT_PORTS[scheme]}`);
|
|
164
|
+
const authority = `${host}${inputContainsDefaultPort ? `:${DEFAULT_PORTS[scheme]}` : ``}`;
|
|
165
|
+
return {
|
|
166
|
+
scheme,
|
|
167
|
+
authority,
|
|
168
|
+
path: pathname,
|
|
169
|
+
normalizedPath: pathname.endsWith("/") ? pathname : `${pathname}/`,
|
|
170
|
+
isIp
|
|
171
|
+
};
|
|
172
|
+
};
|
|
173
|
+
var stringEquals = (value1, value2) => value1 === value2;
|
|
174
|
+
var substring = (input, start, stop, reverse) => {
|
|
175
|
+
if (start >= stop || input.length < stop) {
|
|
176
|
+
return null;
|
|
177
|
+
}
|
|
178
|
+
if (!reverse) {
|
|
179
|
+
return input.substring(start, stop);
|
|
180
|
+
}
|
|
181
|
+
return input.substring(input.length - stop, input.length - start);
|
|
182
|
+
};
|
|
183
|
+
var uriEncode = (value) => encodeURIComponent(value).replace(/[!*'()]/g, (c) => `%${c.charCodeAt(0).toString(16).toUpperCase()}`);
|
|
184
|
+
var endpointFunctions = {
|
|
185
|
+
booleanEquals,
|
|
186
|
+
getAttr,
|
|
187
|
+
isSet,
|
|
188
|
+
isValidHostLabel,
|
|
189
|
+
not,
|
|
190
|
+
parseURL,
|
|
191
|
+
stringEquals,
|
|
192
|
+
substring,
|
|
193
|
+
uriEncode
|
|
194
|
+
};
|
|
195
|
+
var evaluateTemplate = (template, options) => {
|
|
196
|
+
const evaluatedTemplateArr = [];
|
|
197
|
+
const templateContext = {
|
|
198
|
+
...options.endpointParams,
|
|
199
|
+
...options.referenceRecord
|
|
200
|
+
};
|
|
201
|
+
let currentIndex = 0;
|
|
202
|
+
while (currentIndex < template.length) {
|
|
203
|
+
const openingBraceIndex = template.indexOf("{", currentIndex);
|
|
204
|
+
if (openingBraceIndex === -1) {
|
|
205
|
+
evaluatedTemplateArr.push(template.slice(currentIndex));
|
|
206
|
+
break;
|
|
207
|
+
}
|
|
208
|
+
evaluatedTemplateArr.push(template.slice(currentIndex, openingBraceIndex));
|
|
209
|
+
const closingBraceIndex = template.indexOf("}", openingBraceIndex);
|
|
210
|
+
if (closingBraceIndex === -1) {
|
|
211
|
+
evaluatedTemplateArr.push(template.slice(openingBraceIndex));
|
|
212
|
+
break;
|
|
213
|
+
}
|
|
214
|
+
if (template[openingBraceIndex + 1] === "{" && template[closingBraceIndex + 1] === "}") {
|
|
215
|
+
evaluatedTemplateArr.push(template.slice(openingBraceIndex + 1, closingBraceIndex));
|
|
216
|
+
currentIndex = closingBraceIndex + 2;
|
|
217
|
+
}
|
|
218
|
+
const parameterName = template.substring(openingBraceIndex + 1, closingBraceIndex);
|
|
219
|
+
if (parameterName.includes("#")) {
|
|
220
|
+
const [refName, attrName] = parameterName.split("#");
|
|
221
|
+
evaluatedTemplateArr.push(getAttr(templateContext[refName], attrName));
|
|
222
|
+
} else {
|
|
223
|
+
evaluatedTemplateArr.push(templateContext[parameterName]);
|
|
224
|
+
}
|
|
225
|
+
currentIndex = closingBraceIndex + 1;
|
|
226
|
+
}
|
|
227
|
+
return evaluatedTemplateArr.join("");
|
|
228
|
+
};
|
|
229
|
+
var getReferenceValue = ({ ref }, options) => {
|
|
230
|
+
const referenceRecord = {
|
|
231
|
+
...options.endpointParams,
|
|
232
|
+
...options.referenceRecord
|
|
233
|
+
};
|
|
234
|
+
return referenceRecord[ref];
|
|
235
|
+
};
|
|
236
|
+
var evaluateExpression = (obj, keyName, options) => {
|
|
237
|
+
if (typeof obj === "string") {
|
|
238
|
+
return evaluateTemplate(obj, options);
|
|
239
|
+
} else if (obj["fn"]) {
|
|
240
|
+
return group.callFunction(obj, options);
|
|
241
|
+
} else if (obj["ref"]) {
|
|
242
|
+
return getReferenceValue(obj, options);
|
|
243
|
+
}
|
|
244
|
+
throw new EndpointError(`'${keyName}': ${String(obj)} is not a string, function or reference.`);
|
|
245
|
+
};
|
|
246
|
+
var callFunction = ({ fn, argv }, options) => {
|
|
247
|
+
const evaluatedArgs = argv.map((arg) => ["boolean", "number"].includes(typeof arg) ? arg : group.evaluateExpression(arg, "arg", options));
|
|
248
|
+
const fnSegments = fn.split(".");
|
|
249
|
+
if (fnSegments[0] in customEndpointFunctions && fnSegments[1] != null) {
|
|
250
|
+
return customEndpointFunctions[fnSegments[0]][fnSegments[1]](...evaluatedArgs);
|
|
251
|
+
}
|
|
252
|
+
return endpointFunctions[fn](...evaluatedArgs);
|
|
253
|
+
};
|
|
254
|
+
var group = {
|
|
255
|
+
evaluateExpression,
|
|
256
|
+
callFunction
|
|
257
|
+
};
|
|
258
|
+
var evaluateCondition = ({ assign, ...fnArgs }, options) => {
|
|
259
|
+
if (assign && assign in options.referenceRecord) {
|
|
260
|
+
throw new EndpointError(`'${assign}' is already defined in Reference Record.`);
|
|
261
|
+
}
|
|
262
|
+
const value = callFunction(fnArgs, options);
|
|
263
|
+
options.logger?.debug?.(`${debugId} evaluateCondition: ${toDebugString(fnArgs)} = ${toDebugString(value)}`);
|
|
264
|
+
return {
|
|
265
|
+
result: value === "" ? true : !!value,
|
|
266
|
+
...assign != null && { toAssign: { name: assign, value } }
|
|
267
|
+
};
|
|
268
|
+
};
|
|
269
|
+
var evaluateConditions = (conditions = [], options) => {
|
|
270
|
+
const conditionsReferenceRecord = {};
|
|
271
|
+
for (const condition of conditions) {
|
|
272
|
+
const { result, toAssign } = evaluateCondition(condition, {
|
|
273
|
+
...options,
|
|
274
|
+
referenceRecord: {
|
|
275
|
+
...options.referenceRecord,
|
|
276
|
+
...conditionsReferenceRecord
|
|
277
|
+
}
|
|
278
|
+
});
|
|
279
|
+
if (!result) {
|
|
280
|
+
return { result };
|
|
281
|
+
}
|
|
282
|
+
if (toAssign) {
|
|
283
|
+
conditionsReferenceRecord[toAssign.name] = toAssign.value;
|
|
284
|
+
options.logger?.debug?.(`${debugId} assign: ${toAssign.name} := ${toDebugString(toAssign.value)}`);
|
|
285
|
+
}
|
|
286
|
+
}
|
|
287
|
+
return { result: true, referenceRecord: conditionsReferenceRecord };
|
|
288
|
+
};
|
|
289
|
+
var getEndpointHeaders = (headers, options) => Object.entries(headers).reduce((acc, [headerKey, headerVal]) => ({
|
|
290
|
+
...acc,
|
|
291
|
+
[headerKey]: headerVal.map((headerValEntry) => {
|
|
292
|
+
const processedExpr = evaluateExpression(headerValEntry, "Header value entry", options);
|
|
293
|
+
if (typeof processedExpr !== "string") {
|
|
294
|
+
throw new EndpointError(`Header '${headerKey}' value '${processedExpr}' is not a string`);
|
|
295
|
+
}
|
|
296
|
+
return processedExpr;
|
|
297
|
+
})
|
|
298
|
+
}), {});
|
|
299
|
+
var getEndpointProperties = (properties, options) => Object.entries(properties).reduce((acc, [propertyKey, propertyVal]) => ({
|
|
300
|
+
...acc,
|
|
301
|
+
[propertyKey]: group2.getEndpointProperty(propertyVal, options)
|
|
302
|
+
}), {});
|
|
303
|
+
var getEndpointProperty = (property, options) => {
|
|
304
|
+
if (Array.isArray(property)) {
|
|
305
|
+
return property.map((propertyEntry) => getEndpointProperty(propertyEntry, options));
|
|
306
|
+
}
|
|
307
|
+
switch (typeof property) {
|
|
308
|
+
case "string":
|
|
309
|
+
return evaluateTemplate(property, options);
|
|
310
|
+
case "object":
|
|
311
|
+
if (property === null) {
|
|
312
|
+
throw new EndpointError(`Unexpected endpoint property: ${property}`);
|
|
313
|
+
}
|
|
314
|
+
return group2.getEndpointProperties(property, options);
|
|
315
|
+
case "boolean":
|
|
316
|
+
return property;
|
|
317
|
+
default:
|
|
318
|
+
throw new EndpointError(`Unexpected endpoint property type: ${typeof property}`);
|
|
319
|
+
}
|
|
320
|
+
};
|
|
321
|
+
var group2 = {
|
|
322
|
+
getEndpointProperty,
|
|
323
|
+
getEndpointProperties
|
|
324
|
+
};
|
|
325
|
+
var getEndpointUrl = (endpointUrl, options) => {
|
|
326
|
+
const expression = evaluateExpression(endpointUrl, "Endpoint URL", options);
|
|
327
|
+
if (typeof expression === "string") {
|
|
328
|
+
try {
|
|
329
|
+
return new URL(expression);
|
|
330
|
+
} catch (error) {
|
|
331
|
+
console.error(`Failed to construct URL with ${expression}`, error);
|
|
332
|
+
throw error;
|
|
333
|
+
}
|
|
334
|
+
}
|
|
335
|
+
throw new EndpointError(`Endpoint URL must be a string, got ${typeof expression}`);
|
|
336
|
+
};
|
|
337
|
+
var evaluateEndpointRule = (endpointRule, options) => {
|
|
338
|
+
const { conditions, endpoint } = endpointRule;
|
|
339
|
+
const { result, referenceRecord } = evaluateConditions(conditions, options);
|
|
340
|
+
if (!result) {
|
|
341
|
+
return;
|
|
342
|
+
}
|
|
343
|
+
const endpointRuleOptions = {
|
|
344
|
+
...options,
|
|
345
|
+
referenceRecord: { ...options.referenceRecord, ...referenceRecord }
|
|
346
|
+
};
|
|
347
|
+
const { url, properties, headers } = endpoint;
|
|
348
|
+
options.logger?.debug?.(`${debugId} Resolving endpoint from template: ${toDebugString(endpoint)}`);
|
|
349
|
+
return {
|
|
350
|
+
...headers != void 0 && {
|
|
351
|
+
headers: getEndpointHeaders(headers, endpointRuleOptions)
|
|
352
|
+
},
|
|
353
|
+
...properties != void 0 && {
|
|
354
|
+
properties: getEndpointProperties(properties, endpointRuleOptions)
|
|
355
|
+
},
|
|
356
|
+
url: getEndpointUrl(url, endpointRuleOptions)
|
|
357
|
+
};
|
|
358
|
+
};
|
|
359
|
+
var evaluateErrorRule = (errorRule, options) => {
|
|
360
|
+
const { conditions, error } = errorRule;
|
|
361
|
+
const { result, referenceRecord } = evaluateConditions(conditions, options);
|
|
362
|
+
if (!result) {
|
|
363
|
+
return;
|
|
364
|
+
}
|
|
365
|
+
throw new EndpointError(evaluateExpression(error, "Error", {
|
|
366
|
+
...options,
|
|
367
|
+
referenceRecord: { ...options.referenceRecord, ...referenceRecord }
|
|
368
|
+
}));
|
|
369
|
+
};
|
|
370
|
+
var evaluateRules = (rules, options) => {
|
|
371
|
+
for (const rule of rules) {
|
|
372
|
+
if (rule.type === "endpoint") {
|
|
373
|
+
const endpointOrUndefined = evaluateEndpointRule(rule, options);
|
|
374
|
+
if (endpointOrUndefined) {
|
|
375
|
+
return endpointOrUndefined;
|
|
376
|
+
}
|
|
377
|
+
} else if (rule.type === "error") {
|
|
378
|
+
evaluateErrorRule(rule, options);
|
|
379
|
+
} else if (rule.type === "tree") {
|
|
380
|
+
const endpointOrUndefined = group3.evaluateTreeRule(rule, options);
|
|
381
|
+
if (endpointOrUndefined) {
|
|
382
|
+
return endpointOrUndefined;
|
|
383
|
+
}
|
|
384
|
+
} else {
|
|
385
|
+
throw new EndpointError(`Unknown endpoint rule: ${rule}`);
|
|
386
|
+
}
|
|
387
|
+
}
|
|
388
|
+
throw new EndpointError(`Rules evaluation failed`);
|
|
389
|
+
};
|
|
390
|
+
var evaluateTreeRule = (treeRule, options) => {
|
|
391
|
+
const { conditions, rules } = treeRule;
|
|
392
|
+
const { result, referenceRecord } = evaluateConditions(conditions, options);
|
|
393
|
+
if (!result) {
|
|
394
|
+
return;
|
|
395
|
+
}
|
|
396
|
+
return group3.evaluateRules(rules, {
|
|
397
|
+
...options,
|
|
398
|
+
referenceRecord: { ...options.referenceRecord, ...referenceRecord }
|
|
399
|
+
});
|
|
400
|
+
};
|
|
401
|
+
var group3 = {
|
|
402
|
+
evaluateRules,
|
|
403
|
+
evaluateTreeRule
|
|
404
|
+
};
|
|
405
|
+
var resolveEndpoint = (ruleSetObject, options) => {
|
|
406
|
+
const { endpointParams, logger } = options;
|
|
407
|
+
const { parameters, rules } = ruleSetObject;
|
|
408
|
+
options.logger?.debug?.(`${debugId} Initial EndpointParams: ${toDebugString(endpointParams)}`);
|
|
409
|
+
const paramsWithDefault = Object.entries(parameters).filter(([, v]) => v.default != null).map(([k, v]) => [k, v.default]);
|
|
410
|
+
if (paramsWithDefault.length > 0) {
|
|
411
|
+
for (const [paramKey, paramDefaultValue] of paramsWithDefault) {
|
|
412
|
+
endpointParams[paramKey] = endpointParams[paramKey] ?? paramDefaultValue;
|
|
413
|
+
}
|
|
414
|
+
}
|
|
415
|
+
const requiredParams = Object.entries(parameters).filter(([, v]) => v.required).map(([k]) => k);
|
|
416
|
+
for (const requiredParam of requiredParams) {
|
|
417
|
+
if (endpointParams[requiredParam] == null) {
|
|
418
|
+
throw new EndpointError(`Missing required parameter: '${requiredParam}'`);
|
|
419
|
+
}
|
|
420
|
+
}
|
|
421
|
+
const endpoint = evaluateRules(rules, { endpointParams, logger, referenceRecord: {} });
|
|
422
|
+
options.logger?.debug?.(`${debugId} Resolved endpoint: ${toDebugString(endpoint)}`);
|
|
423
|
+
return endpoint;
|
|
424
|
+
};
|
|
425
|
+
var validRegions = /* @__PURE__ */ new Set();
|
|
426
|
+
var checkRegion = (region, check = isValidHostLabel) => {
|
|
427
|
+
if (!validRegions.has(region) && !check(region)) {
|
|
428
|
+
if (region === "*") {
|
|
429
|
+
console.warn(`@smithy/config-resolver WARN - Please use the caller region instead of "*". See "sigv4a" in https://github.com/aws/aws-sdk-js-v3/blob/main/supplemental-docs/CLIENTS.md.`);
|
|
430
|
+
} else {
|
|
431
|
+
throw new Error(`Region not accepted: region="${region}" is not a valid hostname component.`);
|
|
432
|
+
}
|
|
433
|
+
} else {
|
|
434
|
+
validRegions.add(region);
|
|
435
|
+
}
|
|
436
|
+
};
|
|
437
|
+
var isFipsRegion = (region) => typeof region === "string" && (region.startsWith("fips-") || region.endsWith("-fips"));
|
|
438
|
+
var getRealRegion = (region) => isFipsRegion(region) ? ["fips-aws-global", "aws-fips"].includes(region) ? "us-east-1" : region.replace(/fips-(dkr-|prod-)?|-fips/, "") : region;
|
|
439
|
+
var resolveRegionConfig = (input) => {
|
|
440
|
+
const { region, useFipsEndpoint } = input;
|
|
441
|
+
if (!region) {
|
|
442
|
+
throw new Error("Region is missing");
|
|
443
|
+
}
|
|
444
|
+
return Object.assign(input, {
|
|
445
|
+
region: async () => {
|
|
446
|
+
const providedRegion = typeof region === "function" ? await region() : region;
|
|
447
|
+
const realRegion = getRealRegion(providedRegion);
|
|
448
|
+
checkRegion(realRegion);
|
|
449
|
+
return realRegion;
|
|
450
|
+
},
|
|
451
|
+
useFipsEndpoint: async () => {
|
|
452
|
+
const providedRegion = typeof region === "string" ? region : await region();
|
|
453
|
+
if (isFipsRegion(providedRegion)) {
|
|
454
|
+
return true;
|
|
455
|
+
}
|
|
456
|
+
return typeof useFipsEndpoint !== "function" ? Promise.resolve(!!useFipsEndpoint) : useFipsEndpoint();
|
|
457
|
+
}
|
|
458
|
+
});
|
|
459
|
+
};
|
|
460
|
+
var getHttpHandlerExtensionConfiguration = (runtimeConfig) => {
|
|
461
|
+
return {
|
|
462
|
+
setHttpHandler(handler) {
|
|
463
|
+
runtimeConfig.httpHandler = handler;
|
|
464
|
+
},
|
|
465
|
+
httpHandler() {
|
|
466
|
+
return runtimeConfig.httpHandler;
|
|
467
|
+
},
|
|
468
|
+
updateHttpClientConfig(key, value) {
|
|
469
|
+
runtimeConfig.httpHandler?.updateHttpClientConfig(key, value);
|
|
470
|
+
},
|
|
471
|
+
httpHandlerConfigs() {
|
|
472
|
+
return runtimeConfig.httpHandler.httpHandlerConfigs();
|
|
473
|
+
}
|
|
474
|
+
};
|
|
475
|
+
};
|
|
476
|
+
var resolveHttpHandlerRuntimeConfig = (httpHandlerExtensionConfiguration) => {
|
|
477
|
+
return {
|
|
478
|
+
httpHandler: httpHandlerExtensionConfiguration.httpHandler()
|
|
479
|
+
};
|
|
480
|
+
};
|
|
481
|
+
var NoAuthSigner = class {
|
|
482
|
+
async sign(httpRequest, identity, signingProperties) {
|
|
483
|
+
return httpRequest;
|
|
484
|
+
}
|
|
485
|
+
};
|
|
486
|
+
var booleanSelector = (obj, key, type) => {
|
|
487
|
+
if (!(key in obj))
|
|
488
|
+
return void 0;
|
|
489
|
+
if (obj[key] === "true")
|
|
490
|
+
return true;
|
|
491
|
+
if (obj[key] === "false")
|
|
492
|
+
return false;
|
|
493
|
+
throw new Error(`Cannot load ${type} "${key}". Expected "true" or "false", got ${obj[key]}.`);
|
|
494
|
+
};
|
|
495
|
+
var SelectorType;
|
|
496
|
+
(function(SelectorType2) {
|
|
497
|
+
SelectorType2["ENV"] = "env";
|
|
498
|
+
SelectorType2["CONFIG"] = "shared config entry";
|
|
499
|
+
})(SelectorType || (SelectorType = {}));
|
|
500
|
+
var ENV_USE_DUALSTACK_ENDPOINT = "AWS_USE_DUALSTACK_ENDPOINT";
|
|
501
|
+
var CONFIG_USE_DUALSTACK_ENDPOINT = "use_dualstack_endpoint";
|
|
502
|
+
var NODE_USE_DUALSTACK_ENDPOINT_CONFIG_OPTIONS = {
|
|
503
|
+
environmentVariableSelector: (env) => booleanSelector(env, ENV_USE_DUALSTACK_ENDPOINT, SelectorType.ENV),
|
|
504
|
+
configFileSelector: (profile) => booleanSelector(profile, CONFIG_USE_DUALSTACK_ENDPOINT, SelectorType.CONFIG),
|
|
505
|
+
default: false
|
|
506
|
+
};
|
|
507
|
+
var ENV_USE_FIPS_ENDPOINT = "AWS_USE_FIPS_ENDPOINT";
|
|
508
|
+
var CONFIG_USE_FIPS_ENDPOINT = "use_fips_endpoint";
|
|
509
|
+
var NODE_USE_FIPS_ENDPOINT_CONFIG_OPTIONS = {
|
|
510
|
+
environmentVariableSelector: (env) => booleanSelector(env, ENV_USE_FIPS_ENDPOINT, SelectorType.ENV),
|
|
511
|
+
configFileSelector: (profile) => booleanSelector(profile, CONFIG_USE_FIPS_ENDPOINT, SelectorType.CONFIG),
|
|
512
|
+
default: false
|
|
513
|
+
};
|
|
514
|
+
|
|
515
|
+
export {
|
|
516
|
+
EndpointCache,
|
|
517
|
+
customEndpointFunctions,
|
|
518
|
+
resolveEndpoint,
|
|
519
|
+
resolveRegionConfig,
|
|
520
|
+
getHttpHandlerExtensionConfiguration,
|
|
521
|
+
resolveHttpHandlerRuntimeConfig,
|
|
522
|
+
NoAuthSigner,
|
|
523
|
+
NODE_USE_DUALSTACK_ENDPOINT_CONFIG_OPTIONS,
|
|
524
|
+
NODE_USE_FIPS_ENDPOINT_CONFIG_OPTIONS
|
|
525
|
+
};
|
|
526
|
+
//# sourceMappingURL=chunk-BXM4I3BM.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../../node_modules/.bun/@smithy+util-endpoints@3.2.9/node_modules/@smithy/util-endpoints/dist-es/cache/EndpointCache.js","../../../node_modules/.bun/@smithy+util-endpoints@3.2.9/node_modules/@smithy/util-endpoints/dist-es/lib/isIpAddress.js","../../../node_modules/.bun/@smithy+util-endpoints@3.2.9/node_modules/@smithy/util-endpoints/dist-es/lib/isValidHostLabel.js","../../../node_modules/.bun/@smithy+util-endpoints@3.2.9/node_modules/@smithy/util-endpoints/dist-es/utils/customEndpointFunctions.js","../../../node_modules/.bun/@smithy+util-endpoints@3.2.9/node_modules/@smithy/util-endpoints/dist-es/debug/debugId.js","../../../node_modules/.bun/@smithy+util-endpoints@3.2.9/node_modules/@smithy/util-endpoints/dist-es/debug/toDebugString.js","../../../node_modules/.bun/@smithy+util-endpoints@3.2.9/node_modules/@smithy/util-endpoints/dist-es/types/EndpointError.js","../../../node_modules/.bun/@smithy+util-endpoints@3.2.9/node_modules/@smithy/util-endpoints/dist-es/lib/booleanEquals.js","../../../node_modules/.bun/@smithy+util-endpoints@3.2.9/node_modules/@smithy/util-endpoints/dist-es/lib/getAttrPathList.js","../../../node_modules/.bun/@smithy+util-endpoints@3.2.9/node_modules/@smithy/util-endpoints/dist-es/lib/getAttr.js","../../../node_modules/.bun/@smithy+util-endpoints@3.2.9/node_modules/@smithy/util-endpoints/dist-es/lib/isSet.js","../../../node_modules/.bun/@smithy+util-endpoints@3.2.9/node_modules/@smithy/util-endpoints/dist-es/lib/not.js","../../../node_modules/.bun/@smithy+types@4.12.1/node_modules/@smithy/types/dist-es/endpoint.js","../../../node_modules/.bun/@smithy+util-endpoints@3.2.9/node_modules/@smithy/util-endpoints/dist-es/lib/parseURL.js","../../../node_modules/.bun/@smithy+util-endpoints@3.2.9/node_modules/@smithy/util-endpoints/dist-es/lib/stringEquals.js","../../../node_modules/.bun/@smithy+util-endpoints@3.2.9/node_modules/@smithy/util-endpoints/dist-es/lib/substring.js","../../../node_modules/.bun/@smithy+util-endpoints@3.2.9/node_modules/@smithy/util-endpoints/dist-es/lib/uriEncode.js","../../../node_modules/.bun/@smithy+util-endpoints@3.2.9/node_modules/@smithy/util-endpoints/dist-es/utils/endpointFunctions.js","../../../node_modules/.bun/@smithy+util-endpoints@3.2.9/node_modules/@smithy/util-endpoints/dist-es/utils/evaluateTemplate.js","../../../node_modules/.bun/@smithy+util-endpoints@3.2.9/node_modules/@smithy/util-endpoints/dist-es/utils/getReferenceValue.js","../../../node_modules/.bun/@smithy+util-endpoints@3.2.9/node_modules/@smithy/util-endpoints/dist-es/utils/evaluateExpression.js","../../../node_modules/.bun/@smithy+util-endpoints@3.2.9/node_modules/@smithy/util-endpoints/dist-es/utils/evaluateCondition.js","../../../node_modules/.bun/@smithy+util-endpoints@3.2.9/node_modules/@smithy/util-endpoints/dist-es/utils/evaluateConditions.js","../../../node_modules/.bun/@smithy+util-endpoints@3.2.9/node_modules/@smithy/util-endpoints/dist-es/utils/getEndpointHeaders.js","../../../node_modules/.bun/@smithy+util-endpoints@3.2.9/node_modules/@smithy/util-endpoints/dist-es/utils/getEndpointProperties.js","../../../node_modules/.bun/@smithy+util-endpoints@3.2.9/node_modules/@smithy/util-endpoints/dist-es/utils/getEndpointUrl.js","../../../node_modules/.bun/@smithy+util-endpoints@3.2.9/node_modules/@smithy/util-endpoints/dist-es/utils/evaluateEndpointRule.js","../../../node_modules/.bun/@smithy+util-endpoints@3.2.9/node_modules/@smithy/util-endpoints/dist-es/utils/evaluateErrorRule.js","../../../node_modules/.bun/@smithy+util-endpoints@3.2.9/node_modules/@smithy/util-endpoints/dist-es/utils/evaluateRules.js","../../../node_modules/.bun/@smithy+util-endpoints@3.2.9/node_modules/@smithy/util-endpoints/dist-es/resolveEndpoint.js","../../../node_modules/.bun/@smithy+config-resolver@4.4.7/node_modules/@smithy/config-resolver/dist-es/regionConfig/checkRegion.js","../../../node_modules/.bun/@smithy+config-resolver@4.4.7/node_modules/@smithy/config-resolver/dist-es/regionConfig/isFipsRegion.js","../../../node_modules/.bun/@smithy+config-resolver@4.4.7/node_modules/@smithy/config-resolver/dist-es/regionConfig/getRealRegion.js","../../../node_modules/.bun/@smithy+config-resolver@4.4.7/node_modules/@smithy/config-resolver/dist-es/regionConfig/resolveRegionConfig.js","../../../node_modules/.bun/@smithy+protocol-http@5.3.9/node_modules/@smithy/protocol-http/dist-es/extensions/httpExtensionConfiguration.js","../../../node_modules/.bun/@smithy+core@3.23.4/node_modules/@smithy/core/dist-es/util-identity-and-auth/httpAuthSchemes/noAuth.js","../../../node_modules/.bun/@smithy+util-config-provider@4.2.1/node_modules/@smithy/util-config-provider/dist-es/booleanSelector.js","../../../node_modules/.bun/@smithy+util-config-provider@4.2.1/node_modules/@smithy/util-config-provider/dist-es/types.js","../../../node_modules/.bun/@smithy+config-resolver@4.4.7/node_modules/@smithy/config-resolver/dist-es/endpointsConfig/NodeUseDualstackEndpointConfigOptions.js","../../../node_modules/.bun/@smithy+config-resolver@4.4.7/node_modules/@smithy/config-resolver/dist-es/endpointsConfig/NodeUseFipsEndpointConfigOptions.js"],"sourcesContent":["export class EndpointCache {\n capacity;\n data = new Map();\n parameters = [];\n constructor({ size, params }) {\n this.capacity = size ?? 50;\n if (params) {\n this.parameters = params;\n }\n }\n get(endpointParams, resolver) {\n const key = this.hash(endpointParams);\n if (key === false) {\n return resolver();\n }\n if (!this.data.has(key)) {\n if (this.data.size > this.capacity + 10) {\n const keys = this.data.keys();\n let i = 0;\n while (true) {\n const { value, done } = keys.next();\n this.data.delete(value);\n if (done || ++i > 10) {\n break;\n }\n }\n }\n this.data.set(key, resolver());\n }\n return this.data.get(key);\n }\n size() {\n return this.data.size;\n }\n hash(endpointParams) {\n let buffer = \"\";\n const { parameters } = this;\n if (parameters.length === 0) {\n return false;\n }\n for (const param of parameters) {\n const val = String(endpointParams[param] ?? \"\");\n if (val.includes(\"|;\")) {\n return false;\n }\n buffer += val + \"|;\";\n }\n return buffer;\n }\n}\n","const IP_V4_REGEX = new RegExp(`^(?:25[0-5]|2[0-4]\\\\d|1\\\\d\\\\d|[1-9]\\\\d|\\\\d)(?:\\\\.(?:25[0-5]|2[0-4]\\\\d|1\\\\d\\\\d|[1-9]\\\\d|\\\\d)){3}$`);\nexport const isIpAddress = (value) => IP_V4_REGEX.test(value) || (value.startsWith(\"[\") && value.endsWith(\"]\"));\n","const VALID_HOST_LABEL_REGEX = new RegExp(`^(?!.*-$)(?!-)[a-zA-Z0-9-]{1,63}$`);\nexport const isValidHostLabel = (value, allowSubDomains = false) => {\n if (!allowSubDomains) {\n return VALID_HOST_LABEL_REGEX.test(value);\n }\n const labels = value.split(\".\");\n for (const label of labels) {\n if (!isValidHostLabel(label)) {\n return false;\n }\n }\n return true;\n};\n","export const customEndpointFunctions = {};\n","export const debugId = \"endpoints\";\n","export function toDebugString(input) {\n if (typeof input !== \"object\" || input == null) {\n return input;\n }\n if (\"ref\" in input) {\n return `$${toDebugString(input.ref)}`;\n }\n if (\"fn\" in input) {\n return `${input.fn}(${(input.argv || []).map(toDebugString).join(\", \")})`;\n }\n return JSON.stringify(input, null, 2);\n}\n","export class EndpointError extends Error {\n constructor(message) {\n super(message);\n this.name = \"EndpointError\";\n }\n}\n","export const booleanEquals = (value1, value2) => value1 === value2;\n","import { EndpointError } from \"../types\";\nexport const getAttrPathList = (path) => {\n const parts = path.split(\".\");\n const pathList = [];\n for (const part of parts) {\n const squareBracketIndex = part.indexOf(\"[\");\n if (squareBracketIndex !== -1) {\n if (part.indexOf(\"]\") !== part.length - 1) {\n throw new EndpointError(`Path: '${path}' does not end with ']'`);\n }\n const arrayIndex = part.slice(squareBracketIndex + 1, -1);\n if (Number.isNaN(parseInt(arrayIndex))) {\n throw new EndpointError(`Invalid array index: '${arrayIndex}' in path: '${path}'`);\n }\n if (squareBracketIndex !== 0) {\n pathList.push(part.slice(0, squareBracketIndex));\n }\n pathList.push(arrayIndex);\n }\n else {\n pathList.push(part);\n }\n }\n return pathList;\n};\n","import { EndpointError } from \"../types\";\nimport { getAttrPathList } from \"./getAttrPathList\";\nexport const getAttr = (value, path) => getAttrPathList(path).reduce((acc, index) => {\n if (typeof acc !== \"object\") {\n throw new EndpointError(`Index '${index}' in '${path}' not found in '${JSON.stringify(value)}'`);\n }\n else if (Array.isArray(acc)) {\n return acc[parseInt(index)];\n }\n return acc[index];\n}, value);\n","export const isSet = (value) => value != null;\n","export const not = (value) => !value;\n","export var EndpointURLScheme;\n(function (EndpointURLScheme) {\n EndpointURLScheme[\"HTTP\"] = \"http\";\n EndpointURLScheme[\"HTTPS\"] = \"https\";\n})(EndpointURLScheme || (EndpointURLScheme = {}));\n","import { EndpointURLScheme } from \"@smithy/types\";\nimport { isIpAddress } from \"./isIpAddress\";\nconst DEFAULT_PORTS = {\n [EndpointURLScheme.HTTP]: 80,\n [EndpointURLScheme.HTTPS]: 443,\n};\nexport const parseURL = (value) => {\n const whatwgURL = (() => {\n try {\n if (value instanceof URL) {\n return value;\n }\n if (typeof value === \"object\" && \"hostname\" in value) {\n const { hostname, port, protocol = \"\", path = \"\", query = {} } = value;\n const url = new URL(`${protocol}//${hostname}${port ? `:${port}` : \"\"}${path}`);\n url.search = Object.entries(query)\n .map(([k, v]) => `${k}=${v}`)\n .join(\"&\");\n return url;\n }\n return new URL(value);\n }\n catch (error) {\n return null;\n }\n })();\n if (!whatwgURL) {\n console.error(`Unable to parse ${JSON.stringify(value)} as a whatwg URL.`);\n return null;\n }\n const urlString = whatwgURL.href;\n const { host, hostname, pathname, protocol, search } = whatwgURL;\n if (search) {\n return null;\n }\n const scheme = protocol.slice(0, -1);\n if (!Object.values(EndpointURLScheme).includes(scheme)) {\n return null;\n }\n const isIp = isIpAddress(hostname);\n const inputContainsDefaultPort = urlString.includes(`${host}:${DEFAULT_PORTS[scheme]}`) ||\n (typeof value === \"string\" && value.includes(`${host}:${DEFAULT_PORTS[scheme]}`));\n const authority = `${host}${inputContainsDefaultPort ? `:${DEFAULT_PORTS[scheme]}` : ``}`;\n return {\n scheme,\n authority,\n path: pathname,\n normalizedPath: pathname.endsWith(\"/\") ? pathname : `${pathname}/`,\n isIp,\n };\n};\n","export const stringEquals = (value1, value2) => value1 === value2;\n","export const substring = (input, start, stop, reverse) => {\n if (start >= stop || input.length < stop) {\n return null;\n }\n if (!reverse) {\n return input.substring(start, stop);\n }\n return input.substring(input.length - stop, input.length - start);\n};\n","export const uriEncode = (value) => encodeURIComponent(value).replace(/[!*'()]/g, (c) => `%${c.charCodeAt(0).toString(16).toUpperCase()}`);\n","import { booleanEquals, getAttr, isSet, isValidHostLabel, not, parseURL, stringEquals, substring, uriEncode, } from \"../lib\";\nexport const endpointFunctions = {\n booleanEquals,\n getAttr,\n isSet,\n isValidHostLabel,\n not,\n parseURL,\n stringEquals,\n substring,\n uriEncode,\n};\n","import { getAttr } from \"../lib\";\nexport const evaluateTemplate = (template, options) => {\n const evaluatedTemplateArr = [];\n const templateContext = {\n ...options.endpointParams,\n ...options.referenceRecord,\n };\n let currentIndex = 0;\n while (currentIndex < template.length) {\n const openingBraceIndex = template.indexOf(\"{\", currentIndex);\n if (openingBraceIndex === -1) {\n evaluatedTemplateArr.push(template.slice(currentIndex));\n break;\n }\n evaluatedTemplateArr.push(template.slice(currentIndex, openingBraceIndex));\n const closingBraceIndex = template.indexOf(\"}\", openingBraceIndex);\n if (closingBraceIndex === -1) {\n evaluatedTemplateArr.push(template.slice(openingBraceIndex));\n break;\n }\n if (template[openingBraceIndex + 1] === \"{\" && template[closingBraceIndex + 1] === \"}\") {\n evaluatedTemplateArr.push(template.slice(openingBraceIndex + 1, closingBraceIndex));\n currentIndex = closingBraceIndex + 2;\n }\n const parameterName = template.substring(openingBraceIndex + 1, closingBraceIndex);\n if (parameterName.includes(\"#\")) {\n const [refName, attrName] = parameterName.split(\"#\");\n evaluatedTemplateArr.push(getAttr(templateContext[refName], attrName));\n }\n else {\n evaluatedTemplateArr.push(templateContext[parameterName]);\n }\n currentIndex = closingBraceIndex + 1;\n }\n return evaluatedTemplateArr.join(\"\");\n};\n","export const getReferenceValue = ({ ref }, options) => {\n const referenceRecord = {\n ...options.endpointParams,\n ...options.referenceRecord,\n };\n return referenceRecord[ref];\n};\n","import { EndpointError } from \"../types\";\nimport { customEndpointFunctions } from \"./customEndpointFunctions\";\nimport { endpointFunctions } from \"./endpointFunctions\";\nimport { evaluateTemplate } from \"./evaluateTemplate\";\nimport { getReferenceValue } from \"./getReferenceValue\";\nexport const evaluateExpression = (obj, keyName, options) => {\n if (typeof obj === \"string\") {\n return evaluateTemplate(obj, options);\n }\n else if (obj[\"fn\"]) {\n return group.callFunction(obj, options);\n }\n else if (obj[\"ref\"]) {\n return getReferenceValue(obj, options);\n }\n throw new EndpointError(`'${keyName}': ${String(obj)} is not a string, function or reference.`);\n};\nexport const callFunction = ({ fn, argv }, options) => {\n const evaluatedArgs = argv.map((arg) => [\"boolean\", \"number\"].includes(typeof arg) ? arg : group.evaluateExpression(arg, \"arg\", options));\n const fnSegments = fn.split(\".\");\n if (fnSegments[0] in customEndpointFunctions && fnSegments[1] != null) {\n return customEndpointFunctions[fnSegments[0]][fnSegments[1]](...evaluatedArgs);\n }\n return endpointFunctions[fn](...evaluatedArgs);\n};\nexport const group = {\n evaluateExpression,\n callFunction,\n};\n","import { debugId, toDebugString } from \"../debug\";\nimport { EndpointError } from \"../types\";\nimport { callFunction } from \"./callFunction\";\nexport const evaluateCondition = ({ assign, ...fnArgs }, options) => {\n if (assign && assign in options.referenceRecord) {\n throw new EndpointError(`'${assign}' is already defined in Reference Record.`);\n }\n const value = callFunction(fnArgs, options);\n options.logger?.debug?.(`${debugId} evaluateCondition: ${toDebugString(fnArgs)} = ${toDebugString(value)}`);\n return {\n result: value === \"\" ? true : !!value,\n ...(assign != null && { toAssign: { name: assign, value } }),\n };\n};\n","import { debugId, toDebugString } from \"../debug\";\nimport { evaluateCondition } from \"./evaluateCondition\";\nexport const evaluateConditions = (conditions = [], options) => {\n const conditionsReferenceRecord = {};\n for (const condition of conditions) {\n const { result, toAssign } = evaluateCondition(condition, {\n ...options,\n referenceRecord: {\n ...options.referenceRecord,\n ...conditionsReferenceRecord,\n },\n });\n if (!result) {\n return { result };\n }\n if (toAssign) {\n conditionsReferenceRecord[toAssign.name] = toAssign.value;\n options.logger?.debug?.(`${debugId} assign: ${toAssign.name} := ${toDebugString(toAssign.value)}`);\n }\n }\n return { result: true, referenceRecord: conditionsReferenceRecord };\n};\n","import { EndpointError } from \"../types\";\nimport { evaluateExpression } from \"./evaluateExpression\";\nexport const getEndpointHeaders = (headers, options) => Object.entries(headers).reduce((acc, [headerKey, headerVal]) => ({\n ...acc,\n [headerKey]: headerVal.map((headerValEntry) => {\n const processedExpr = evaluateExpression(headerValEntry, \"Header value entry\", options);\n if (typeof processedExpr !== \"string\") {\n throw new EndpointError(`Header '${headerKey}' value '${processedExpr}' is not a string`);\n }\n return processedExpr;\n }),\n}), {});\n","import { EndpointError } from \"../types\";\nimport { evaluateTemplate } from \"./evaluateTemplate\";\nexport const getEndpointProperties = (properties, options) => Object.entries(properties).reduce((acc, [propertyKey, propertyVal]) => ({\n ...acc,\n [propertyKey]: group.getEndpointProperty(propertyVal, options),\n}), {});\nexport const getEndpointProperty = (property, options) => {\n if (Array.isArray(property)) {\n return property.map((propertyEntry) => getEndpointProperty(propertyEntry, options));\n }\n switch (typeof property) {\n case \"string\":\n return evaluateTemplate(property, options);\n case \"object\":\n if (property === null) {\n throw new EndpointError(`Unexpected endpoint property: ${property}`);\n }\n return group.getEndpointProperties(property, options);\n case \"boolean\":\n return property;\n default:\n throw new EndpointError(`Unexpected endpoint property type: ${typeof property}`);\n }\n};\nexport const group = {\n getEndpointProperty,\n getEndpointProperties,\n};\n","import { EndpointError } from \"../types\";\nimport { evaluateExpression } from \"./evaluateExpression\";\nexport const getEndpointUrl = (endpointUrl, options) => {\n const expression = evaluateExpression(endpointUrl, \"Endpoint URL\", options);\n if (typeof expression === \"string\") {\n try {\n return new URL(expression);\n }\n catch (error) {\n console.error(`Failed to construct URL with ${expression}`, error);\n throw error;\n }\n }\n throw new EndpointError(`Endpoint URL must be a string, got ${typeof expression}`);\n};\n","import { debugId, toDebugString } from \"../debug\";\nimport { evaluateConditions } from \"./evaluateConditions\";\nimport { getEndpointHeaders } from \"./getEndpointHeaders\";\nimport { getEndpointProperties } from \"./getEndpointProperties\";\nimport { getEndpointUrl } from \"./getEndpointUrl\";\nexport const evaluateEndpointRule = (endpointRule, options) => {\n const { conditions, endpoint } = endpointRule;\n const { result, referenceRecord } = evaluateConditions(conditions, options);\n if (!result) {\n return;\n }\n const endpointRuleOptions = {\n ...options,\n referenceRecord: { ...options.referenceRecord, ...referenceRecord },\n };\n const { url, properties, headers } = endpoint;\n options.logger?.debug?.(`${debugId} Resolving endpoint from template: ${toDebugString(endpoint)}`);\n return {\n ...(headers != undefined && {\n headers: getEndpointHeaders(headers, endpointRuleOptions),\n }),\n ...(properties != undefined && {\n properties: getEndpointProperties(properties, endpointRuleOptions),\n }),\n url: getEndpointUrl(url, endpointRuleOptions),\n };\n};\n","import { EndpointError } from \"../types\";\nimport { evaluateConditions } from \"./evaluateConditions\";\nimport { evaluateExpression } from \"./evaluateExpression\";\nexport const evaluateErrorRule = (errorRule, options) => {\n const { conditions, error } = errorRule;\n const { result, referenceRecord } = evaluateConditions(conditions, options);\n if (!result) {\n return;\n }\n throw new EndpointError(evaluateExpression(error, \"Error\", {\n ...options,\n referenceRecord: { ...options.referenceRecord, ...referenceRecord },\n }));\n};\n","import { EndpointError } from \"../types\";\nimport { evaluateConditions } from \"./evaluateConditions\";\nimport { evaluateEndpointRule } from \"./evaluateEndpointRule\";\nimport { evaluateErrorRule } from \"./evaluateErrorRule\";\nexport const evaluateRules = (rules, options) => {\n for (const rule of rules) {\n if (rule.type === \"endpoint\") {\n const endpointOrUndefined = evaluateEndpointRule(rule, options);\n if (endpointOrUndefined) {\n return endpointOrUndefined;\n }\n }\n else if (rule.type === \"error\") {\n evaluateErrorRule(rule, options);\n }\n else if (rule.type === \"tree\") {\n const endpointOrUndefined = group.evaluateTreeRule(rule, options);\n if (endpointOrUndefined) {\n return endpointOrUndefined;\n }\n }\n else {\n throw new EndpointError(`Unknown endpoint rule: ${rule}`);\n }\n }\n throw new EndpointError(`Rules evaluation failed`);\n};\nexport const evaluateTreeRule = (treeRule, options) => {\n const { conditions, rules } = treeRule;\n const { result, referenceRecord } = evaluateConditions(conditions, options);\n if (!result) {\n return;\n }\n return group.evaluateRules(rules, {\n ...options,\n referenceRecord: { ...options.referenceRecord, ...referenceRecord },\n });\n};\nexport const group = {\n evaluateRules,\n evaluateTreeRule,\n};\n","import { debugId, toDebugString } from \"./debug\";\nimport { EndpointError } from \"./types\";\nimport { evaluateRules } from \"./utils\";\nexport const resolveEndpoint = (ruleSetObject, options) => {\n const { endpointParams, logger } = options;\n const { parameters, rules } = ruleSetObject;\n options.logger?.debug?.(`${debugId} Initial EndpointParams: ${toDebugString(endpointParams)}`);\n const paramsWithDefault = Object.entries(parameters)\n .filter(([, v]) => v.default != null)\n .map(([k, v]) => [k, v.default]);\n if (paramsWithDefault.length > 0) {\n for (const [paramKey, paramDefaultValue] of paramsWithDefault) {\n endpointParams[paramKey] = endpointParams[paramKey] ?? paramDefaultValue;\n }\n }\n const requiredParams = Object.entries(parameters)\n .filter(([, v]) => v.required)\n .map(([k]) => k);\n for (const requiredParam of requiredParams) {\n if (endpointParams[requiredParam] == null) {\n throw new EndpointError(`Missing required parameter: '${requiredParam}'`);\n }\n }\n const endpoint = evaluateRules(rules, { endpointParams, logger, referenceRecord: {} });\n options.logger?.debug?.(`${debugId} Resolved endpoint: ${toDebugString(endpoint)}`);\n return endpoint;\n};\n","import { isValidHostLabel } from \"@smithy/util-endpoints\";\nconst validRegions = new Set();\nexport const checkRegion = (region, check = isValidHostLabel) => {\n if (!validRegions.has(region) && !check(region)) {\n if (region === \"*\") {\n console.warn(`@smithy/config-resolver WARN - Please use the caller region instead of \"*\". See \"sigv4a\" in https://github.com/aws/aws-sdk-js-v3/blob/main/supplemental-docs/CLIENTS.md.`);\n }\n else {\n throw new Error(`Region not accepted: region=\"${region}\" is not a valid hostname component.`);\n }\n }\n else {\n validRegions.add(region);\n }\n};\n","export const isFipsRegion = (region) => typeof region === \"string\" && (region.startsWith(\"fips-\") || region.endsWith(\"-fips\"));\n","import { isFipsRegion } from \"./isFipsRegion\";\nexport const getRealRegion = (region) => isFipsRegion(region)\n ? [\"fips-aws-global\", \"aws-fips\"].includes(region)\n ? \"us-east-1\"\n : region.replace(/fips-(dkr-|prod-)?|-fips/, \"\")\n : region;\n","import { checkRegion } from \"./checkRegion\";\nimport { getRealRegion } from \"./getRealRegion\";\nimport { isFipsRegion } from \"./isFipsRegion\";\nexport const resolveRegionConfig = (input) => {\n const { region, useFipsEndpoint } = input;\n if (!region) {\n throw new Error(\"Region is missing\");\n }\n return Object.assign(input, {\n region: async () => {\n const providedRegion = typeof region === \"function\" ? await region() : region;\n const realRegion = getRealRegion(providedRegion);\n checkRegion(realRegion);\n return realRegion;\n },\n useFipsEndpoint: async () => {\n const providedRegion = typeof region === \"string\" ? region : await region();\n if (isFipsRegion(providedRegion)) {\n return true;\n }\n return typeof useFipsEndpoint !== \"function\" ? Promise.resolve(!!useFipsEndpoint) : useFipsEndpoint();\n },\n });\n};\n","export const getHttpHandlerExtensionConfiguration = (runtimeConfig) => {\n return {\n setHttpHandler(handler) {\n runtimeConfig.httpHandler = handler;\n },\n httpHandler() {\n return runtimeConfig.httpHandler;\n },\n updateHttpClientConfig(key, value) {\n runtimeConfig.httpHandler?.updateHttpClientConfig(key, value);\n },\n httpHandlerConfigs() {\n return runtimeConfig.httpHandler.httpHandlerConfigs();\n },\n };\n};\nexport const resolveHttpHandlerRuntimeConfig = (httpHandlerExtensionConfiguration) => {\n return {\n httpHandler: httpHandlerExtensionConfiguration.httpHandler(),\n };\n};\n","export class NoAuthSigner {\n async sign(httpRequest, identity, signingProperties) {\n return httpRequest;\n }\n}\n","export const booleanSelector = (obj, key, type) => {\n if (!(key in obj))\n return undefined;\n if (obj[key] === \"true\")\n return true;\n if (obj[key] === \"false\")\n return false;\n throw new Error(`Cannot load ${type} \"${key}\". Expected \"true\" or \"false\", got ${obj[key]}.`);\n};\n","export var SelectorType;\n(function (SelectorType) {\n SelectorType[\"ENV\"] = \"env\";\n SelectorType[\"CONFIG\"] = \"shared config entry\";\n})(SelectorType || (SelectorType = {}));\n","import { booleanSelector, SelectorType } from \"@smithy/util-config-provider\";\nexport const ENV_USE_DUALSTACK_ENDPOINT = \"AWS_USE_DUALSTACK_ENDPOINT\";\nexport const CONFIG_USE_DUALSTACK_ENDPOINT = \"use_dualstack_endpoint\";\nexport const DEFAULT_USE_DUALSTACK_ENDPOINT = false;\nexport const NODE_USE_DUALSTACK_ENDPOINT_CONFIG_OPTIONS = {\n environmentVariableSelector: (env) => booleanSelector(env, ENV_USE_DUALSTACK_ENDPOINT, SelectorType.ENV),\n configFileSelector: (profile) => booleanSelector(profile, CONFIG_USE_DUALSTACK_ENDPOINT, SelectorType.CONFIG),\n default: false,\n};\n","import { booleanSelector, SelectorType } from \"@smithy/util-config-provider\";\nexport const ENV_USE_FIPS_ENDPOINT = \"AWS_USE_FIPS_ENDPOINT\";\nexport const CONFIG_USE_FIPS_ENDPOINT = \"use_fips_endpoint\";\nexport const DEFAULT_USE_FIPS_ENDPOINT = false;\nexport const NODE_USE_FIPS_ENDPOINT_CONFIG_OPTIONS = {\n environmentVariableSelector: (env) => booleanSelector(env, ENV_USE_FIPS_ENDPOINT, SelectorType.ENV),\n configFileSelector: (profile) => booleanSelector(profile, CONFIG_USE_FIPS_ENDPOINT, SelectorType.CONFIG),\n default: false,\n};\n"],"mappings":"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","names":["EndpointURLScheme","hostname","protocol","group","SelectorType"]}
|