replicas-engine 0.1.142 → 0.1.144

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.
@@ -0,0 +1,1316 @@
1
+ #!/usr/bin/env node
2
+ import {
3
+ FromStringShapeDeserializer,
4
+ HttpProtocol,
5
+ LazyJsonString,
6
+ NormalizedSchema,
7
+ NumericValue,
8
+ ProtocolLib,
9
+ SerdeContext,
10
+ SerdeContextConfig,
11
+ UnionSerde,
12
+ collectBody,
13
+ determineTimestampFormat,
14
+ extendedEncodeURIComponent,
15
+ splitHeader,
16
+ translateTraits,
17
+ v4
18
+ } from "./chunk-7RS3TOFT.js";
19
+ import {
20
+ sdkStreamMixin
21
+ } from "./chunk-NPXMDMPW.js";
22
+ import {
23
+ fromBase64,
24
+ toBase64
25
+ } from "./chunk-TY2FR253.js";
26
+ import {
27
+ HttpRequest
28
+ } from "./chunk-WCAERHFE.js";
29
+ import {
30
+ fromUtf8,
31
+ toUtf8
32
+ } from "./chunk-ERL3EC7G.js";
33
+
34
+ // ../node_modules/.bun/@smithy+core@3.23.13/node_modules/@smithy/core/dist-es/submodules/serde/parse-utils.js
35
+ var expectNumber = (value) => {
36
+ if (value === null || value === void 0) {
37
+ return void 0;
38
+ }
39
+ if (typeof value === "string") {
40
+ const parsed = parseFloat(value);
41
+ if (!Number.isNaN(parsed)) {
42
+ if (String(parsed) !== String(value)) {
43
+ logger.warn(stackTraceWarning(`Expected number but observed string: ${value}`));
44
+ }
45
+ return parsed;
46
+ }
47
+ }
48
+ if (typeof value === "number") {
49
+ return value;
50
+ }
51
+ throw new TypeError(`Expected number, got ${typeof value}: ${value}`);
52
+ };
53
+ var MAX_FLOAT = Math.ceil(2 ** 127 * (2 - 2 ** -23));
54
+ var expectFloat32 = (value) => {
55
+ const expected = expectNumber(value);
56
+ if (expected !== void 0 && !Number.isNaN(expected) && expected !== Infinity && expected !== -Infinity) {
57
+ if (Math.abs(expected) > MAX_FLOAT) {
58
+ throw new TypeError(`Expected 32-bit float, got ${value}`);
59
+ }
60
+ }
61
+ return expected;
62
+ };
63
+ var expectLong = (value) => {
64
+ if (value === null || value === void 0) {
65
+ return void 0;
66
+ }
67
+ if (Number.isInteger(value) && !Number.isNaN(value)) {
68
+ return value;
69
+ }
70
+ throw new TypeError(`Expected integer, got ${typeof value}: ${value}`);
71
+ };
72
+ var expectShort = (value) => expectSizedInt(value, 16);
73
+ var expectByte = (value) => expectSizedInt(value, 8);
74
+ var expectSizedInt = (value, size) => {
75
+ const expected = expectLong(value);
76
+ if (expected !== void 0 && castInt(expected, size) !== expected) {
77
+ throw new TypeError(`Expected ${size}-bit integer, got ${value}`);
78
+ }
79
+ return expected;
80
+ };
81
+ var castInt = (value, size) => {
82
+ switch (size) {
83
+ case 32:
84
+ return Int32Array.of(value)[0];
85
+ case 16:
86
+ return Int16Array.of(value)[0];
87
+ case 8:
88
+ return Int8Array.of(value)[0];
89
+ }
90
+ };
91
+ var strictParseDouble = (value) => {
92
+ if (typeof value == "string") {
93
+ return expectNumber(parseNumber(value));
94
+ }
95
+ return expectNumber(value);
96
+ };
97
+ var strictParseFloat32 = (value) => {
98
+ if (typeof value == "string") {
99
+ return expectFloat32(parseNumber(value));
100
+ }
101
+ return expectFloat32(value);
102
+ };
103
+ var NUMBER_REGEX = /(-?(?:0|[1-9]\d*)(?:\.\d+)?(?:[eE][+-]?\d+)?)|(-?Infinity)|(NaN)/g;
104
+ var parseNumber = (value) => {
105
+ const matches = value.match(NUMBER_REGEX);
106
+ if (matches === null || matches[0].length !== value.length) {
107
+ throw new TypeError(`Expected real number, got implicit NaN`);
108
+ }
109
+ return parseFloat(value);
110
+ };
111
+ var strictParseShort = (value) => {
112
+ if (typeof value === "string") {
113
+ return expectShort(parseNumber(value));
114
+ }
115
+ return expectShort(value);
116
+ };
117
+ var strictParseByte = (value) => {
118
+ if (typeof value === "string") {
119
+ return expectByte(parseNumber(value));
120
+ }
121
+ return expectByte(value);
122
+ };
123
+ var stackTraceWarning = (message) => {
124
+ return String(new TypeError(message).stack || message).split("\n").slice(0, 5).filter((s) => !s.includes("stackTraceWarning")).join("\n");
125
+ };
126
+ var logger = {
127
+ warn: console.warn
128
+ };
129
+
130
+ // ../node_modules/.bun/@smithy+core@3.23.13/node_modules/@smithy/core/dist-es/submodules/serde/date-utils.js
131
+ var DAYS = ["Sun", "Mon", "Tue", "Wed", "Thu", "Fri", "Sat"];
132
+ var MONTHS = ["Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec"];
133
+ function dateToUtcString(date) {
134
+ const year = date.getUTCFullYear();
135
+ const month = date.getUTCMonth();
136
+ const dayOfWeek = date.getUTCDay();
137
+ const dayOfMonthInt = date.getUTCDate();
138
+ const hoursInt = date.getUTCHours();
139
+ const minutesInt = date.getUTCMinutes();
140
+ const secondsInt = date.getUTCSeconds();
141
+ const dayOfMonthString = dayOfMonthInt < 10 ? `0${dayOfMonthInt}` : `${dayOfMonthInt}`;
142
+ const hoursString = hoursInt < 10 ? `0${hoursInt}` : `${hoursInt}`;
143
+ const minutesString = minutesInt < 10 ? `0${minutesInt}` : `${minutesInt}`;
144
+ const secondsString = secondsInt < 10 ? `0${secondsInt}` : `${secondsInt}`;
145
+ return `${DAYS[dayOfWeek]}, ${dayOfMonthString} ${MONTHS[month]} ${year} ${hoursString}:${minutesString}:${secondsString} GMT`;
146
+ }
147
+ var RFC3339 = new RegExp(/^(\d{4})-(\d{2})-(\d{2})[tT](\d{2}):(\d{2}):(\d{2})(?:\.(\d+))?[zZ]$/);
148
+ var RFC3339_WITH_OFFSET = new RegExp(/^(\d{4})-(\d{2})-(\d{2})[tT](\d{2}):(\d{2}):(\d{2})(?:\.(\d+))?(([-+]\d{2}\:\d{2})|[zZ])$/);
149
+ var parseRfc3339DateTimeWithOffset = (value) => {
150
+ if (value === null || value === void 0) {
151
+ return void 0;
152
+ }
153
+ if (typeof value !== "string") {
154
+ throw new TypeError("RFC-3339 date-times must be expressed as strings");
155
+ }
156
+ const match = RFC3339_WITH_OFFSET.exec(value);
157
+ if (!match) {
158
+ throw new TypeError("Invalid RFC-3339 date-time value");
159
+ }
160
+ const [_, yearStr, monthStr, dayStr, hours, minutes, seconds, fractionalMilliseconds, offsetStr] = match;
161
+ const year = strictParseShort(stripLeadingZeroes(yearStr));
162
+ const month = parseDateValue(monthStr, "month", 1, 12);
163
+ const day = parseDateValue(dayStr, "day", 1, 31);
164
+ const date = buildDate(year, month, day, { hours, minutes, seconds, fractionalMilliseconds });
165
+ if (offsetStr.toUpperCase() != "Z") {
166
+ date.setTime(date.getTime() - parseOffsetToMilliseconds(offsetStr));
167
+ }
168
+ return date;
169
+ };
170
+ var IMF_FIXDATE = new RegExp(/^(?:Mon|Tue|Wed|Thu|Fri|Sat|Sun), (\d{2}) (Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec) (\d{4}) (\d{1,2}):(\d{2}):(\d{2})(?:\.(\d+))? GMT$/);
171
+ var RFC_850_DATE = new RegExp(/^(?:Monday|Tuesday|Wednesday|Thursday|Friday|Saturday|Sunday), (\d{2})-(Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec)-(\d{2}) (\d{1,2}):(\d{2}):(\d{2})(?:\.(\d+))? GMT$/);
172
+ var ASC_TIME = new RegExp(/^(?:Mon|Tue|Wed|Thu|Fri|Sat|Sun) (Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec) ( [1-9]|\d{2}) (\d{1,2}):(\d{2}):(\d{2})(?:\.(\d+))? (\d{4})$/);
173
+ var parseRfc7231DateTime = (value) => {
174
+ if (value === null || value === void 0) {
175
+ return void 0;
176
+ }
177
+ if (typeof value !== "string") {
178
+ throw new TypeError("RFC-7231 date-times must be expressed as strings");
179
+ }
180
+ let match = IMF_FIXDATE.exec(value);
181
+ if (match) {
182
+ const [_, dayStr, monthStr, yearStr, hours, minutes, seconds, fractionalMilliseconds] = match;
183
+ return buildDate(strictParseShort(stripLeadingZeroes(yearStr)), parseMonthByShortName(monthStr), parseDateValue(dayStr, "day", 1, 31), { hours, minutes, seconds, fractionalMilliseconds });
184
+ }
185
+ match = RFC_850_DATE.exec(value);
186
+ if (match) {
187
+ const [_, dayStr, monthStr, yearStr, hours, minutes, seconds, fractionalMilliseconds] = match;
188
+ return adjustRfc850Year(buildDate(parseTwoDigitYear(yearStr), parseMonthByShortName(monthStr), parseDateValue(dayStr, "day", 1, 31), {
189
+ hours,
190
+ minutes,
191
+ seconds,
192
+ fractionalMilliseconds
193
+ }));
194
+ }
195
+ match = ASC_TIME.exec(value);
196
+ if (match) {
197
+ const [_, monthStr, dayStr, hours, minutes, seconds, fractionalMilliseconds, yearStr] = match;
198
+ return buildDate(strictParseShort(stripLeadingZeroes(yearStr)), parseMonthByShortName(monthStr), parseDateValue(dayStr.trimLeft(), "day", 1, 31), { hours, minutes, seconds, fractionalMilliseconds });
199
+ }
200
+ throw new TypeError("Invalid RFC-7231 date-time value");
201
+ };
202
+ var parseEpochTimestamp = (value) => {
203
+ if (value === null || value === void 0) {
204
+ return void 0;
205
+ }
206
+ let valueAsDouble;
207
+ if (typeof value === "number") {
208
+ valueAsDouble = value;
209
+ } else if (typeof value === "string") {
210
+ valueAsDouble = strictParseDouble(value);
211
+ } else if (typeof value === "object" && value.tag === 1) {
212
+ valueAsDouble = value.value;
213
+ } else {
214
+ throw new TypeError("Epoch timestamps must be expressed as floating point numbers or their string representation");
215
+ }
216
+ if (Number.isNaN(valueAsDouble) || valueAsDouble === Infinity || valueAsDouble === -Infinity) {
217
+ throw new TypeError("Epoch timestamps must be valid, non-Infinite, non-NaN numerics");
218
+ }
219
+ return new Date(Math.round(valueAsDouble * 1e3));
220
+ };
221
+ var buildDate = (year, month, day, time) => {
222
+ const adjustedMonth = month - 1;
223
+ validateDayOfMonth(year, adjustedMonth, day);
224
+ return new Date(Date.UTC(year, adjustedMonth, day, parseDateValue(time.hours, "hour", 0, 23), parseDateValue(time.minutes, "minute", 0, 59), parseDateValue(time.seconds, "seconds", 0, 60), parseMilliseconds(time.fractionalMilliseconds)));
225
+ };
226
+ var parseTwoDigitYear = (value) => {
227
+ const thisYear = (/* @__PURE__ */ new Date()).getUTCFullYear();
228
+ const valueInThisCentury = Math.floor(thisYear / 100) * 100 + strictParseShort(stripLeadingZeroes(value));
229
+ if (valueInThisCentury < thisYear) {
230
+ return valueInThisCentury + 100;
231
+ }
232
+ return valueInThisCentury;
233
+ };
234
+ var FIFTY_YEARS_IN_MILLIS = 50 * 365 * 24 * 60 * 60 * 1e3;
235
+ var adjustRfc850Year = (input) => {
236
+ if (input.getTime() - (/* @__PURE__ */ new Date()).getTime() > FIFTY_YEARS_IN_MILLIS) {
237
+ return new Date(Date.UTC(input.getUTCFullYear() - 100, input.getUTCMonth(), input.getUTCDate(), input.getUTCHours(), input.getUTCMinutes(), input.getUTCSeconds(), input.getUTCMilliseconds()));
238
+ }
239
+ return input;
240
+ };
241
+ var parseMonthByShortName = (value) => {
242
+ const monthIdx = MONTHS.indexOf(value);
243
+ if (monthIdx < 0) {
244
+ throw new TypeError(`Invalid month: ${value}`);
245
+ }
246
+ return monthIdx + 1;
247
+ };
248
+ var DAYS_IN_MONTH = [31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31];
249
+ var validateDayOfMonth = (year, month, day) => {
250
+ let maxDays = DAYS_IN_MONTH[month];
251
+ if (month === 1 && isLeapYear(year)) {
252
+ maxDays = 29;
253
+ }
254
+ if (day > maxDays) {
255
+ throw new TypeError(`Invalid day for ${MONTHS[month]} in ${year}: ${day}`);
256
+ }
257
+ };
258
+ var isLeapYear = (year) => {
259
+ return year % 4 === 0 && (year % 100 !== 0 || year % 400 === 0);
260
+ };
261
+ var parseDateValue = (value, type, lower, upper) => {
262
+ const dateVal = strictParseByte(stripLeadingZeroes(value));
263
+ if (dateVal < lower || dateVal > upper) {
264
+ throw new TypeError(`${type} must be between ${lower} and ${upper}, inclusive`);
265
+ }
266
+ return dateVal;
267
+ };
268
+ var parseMilliseconds = (value) => {
269
+ if (value === null || value === void 0) {
270
+ return 0;
271
+ }
272
+ return strictParseFloat32("0." + value) * 1e3;
273
+ };
274
+ var parseOffsetToMilliseconds = (value) => {
275
+ const directionStr = value[0];
276
+ let direction = 1;
277
+ if (directionStr == "+") {
278
+ direction = 1;
279
+ } else if (directionStr == "-") {
280
+ direction = -1;
281
+ } else {
282
+ throw new TypeError(`Offset direction, ${directionStr}, must be "+" or "-"`);
283
+ }
284
+ const hour = Number(value.substring(1, 3));
285
+ const minute = Number(value.substring(4, 6));
286
+ return direction * (hour * 60 + minute) * 60 * 1e3;
287
+ };
288
+ var stripLeadingZeroes = (value) => {
289
+ let idx = 0;
290
+ while (idx < value.length - 1 && value.charAt(idx) === "0") {
291
+ idx++;
292
+ }
293
+ if (idx === 0) {
294
+ return value;
295
+ }
296
+ return value.slice(idx);
297
+ };
298
+
299
+ // ../node_modules/.bun/@smithy+core@3.23.13/node_modules/@smithy/core/dist-es/submodules/serde/quote-header.js
300
+ function quoteHeader(part) {
301
+ if (part.includes(",") || part.includes('"')) {
302
+ part = `"${part.replace(/"/g, '\\"')}"`;
303
+ }
304
+ return part;
305
+ }
306
+
307
+ // ../node_modules/.bun/@smithy+core@3.23.13/node_modules/@smithy/core/dist-es/submodules/serde/split-every.js
308
+ function splitEvery(value, delimiter, numDelimiters) {
309
+ if (numDelimiters <= 0 || !Number.isInteger(numDelimiters)) {
310
+ throw new Error("Invalid number of delimiters (" + numDelimiters + ") for splitEvery.");
311
+ }
312
+ const segments = value.split(delimiter);
313
+ if (numDelimiters === 1) {
314
+ return segments;
315
+ }
316
+ const compoundSegments = [];
317
+ let currentSegment = "";
318
+ for (let i = 0; i < segments.length; i++) {
319
+ if (currentSegment === "") {
320
+ currentSegment = segments[i];
321
+ } else {
322
+ currentSegment += delimiter + segments[i];
323
+ }
324
+ if ((i + 1) % numDelimiters === 0) {
325
+ compoundSegments.push(currentSegment);
326
+ currentSegment = "";
327
+ }
328
+ }
329
+ if (currentSegment !== "") {
330
+ compoundSegments.push(currentSegment);
331
+ }
332
+ return compoundSegments;
333
+ }
334
+
335
+ // ../node_modules/.bun/@smithy+core@3.23.13/node_modules/@smithy/core/dist-es/submodules/protocols/HttpBindingProtocol.js
336
+ var HttpBindingProtocol = class extends HttpProtocol {
337
+ async serializeRequest(operationSchema, _input, context) {
338
+ const input = _input && typeof _input === "object" ? _input : {};
339
+ const serializer = this.serializer;
340
+ const query = {};
341
+ const headers = {};
342
+ const endpoint = await context.endpoint();
343
+ const ns = NormalizedSchema.of(operationSchema?.input);
344
+ const payloadMemberNames = [];
345
+ const payloadMemberSchemas = [];
346
+ let hasNonHttpBindingMember = false;
347
+ let payload;
348
+ const request = new HttpRequest({
349
+ protocol: "",
350
+ hostname: "",
351
+ port: void 0,
352
+ path: "",
353
+ fragment: void 0,
354
+ query,
355
+ headers,
356
+ body: void 0
357
+ });
358
+ if (endpoint) {
359
+ this.updateServiceEndpoint(request, endpoint);
360
+ this.setHostPrefix(request, operationSchema, input);
361
+ const opTraits = translateTraits(operationSchema.traits);
362
+ if (opTraits.http) {
363
+ request.method = opTraits.http[0];
364
+ const [path, search] = opTraits.http[1].split("?");
365
+ if (request.path == "/") {
366
+ request.path = path;
367
+ } else {
368
+ request.path += path;
369
+ }
370
+ const traitSearchParams = new URLSearchParams(search ?? "");
371
+ Object.assign(query, Object.fromEntries(traitSearchParams));
372
+ }
373
+ }
374
+ for (const [memberName, memberNs] of ns.structIterator()) {
375
+ const memberTraits = memberNs.getMergedTraits() ?? {};
376
+ const inputMemberValue = input[memberName];
377
+ if (inputMemberValue == null && !memberNs.isIdempotencyToken()) {
378
+ if (memberTraits.httpLabel) {
379
+ if (request.path.includes(`{${memberName}+}`) || request.path.includes(`{${memberName}}`)) {
380
+ throw new Error(`No value provided for input HTTP label: ${memberName}.`);
381
+ }
382
+ }
383
+ continue;
384
+ }
385
+ if (memberTraits.httpPayload) {
386
+ const isStreaming = memberNs.isStreaming();
387
+ if (isStreaming) {
388
+ const isEventStream = memberNs.isStructSchema();
389
+ if (isEventStream) {
390
+ if (input[memberName]) {
391
+ payload = await this.serializeEventStream({
392
+ eventStream: input[memberName],
393
+ requestSchema: ns
394
+ });
395
+ }
396
+ } else {
397
+ payload = inputMemberValue;
398
+ }
399
+ } else {
400
+ serializer.write(memberNs, inputMemberValue);
401
+ payload = serializer.flush();
402
+ }
403
+ } else if (memberTraits.httpLabel) {
404
+ serializer.write(memberNs, inputMemberValue);
405
+ const replacement = serializer.flush();
406
+ if (request.path.includes(`{${memberName}+}`)) {
407
+ request.path = request.path.replace(`{${memberName}+}`, replacement.split("/").map(extendedEncodeURIComponent).join("/"));
408
+ } else if (request.path.includes(`{${memberName}}`)) {
409
+ request.path = request.path.replace(`{${memberName}}`, extendedEncodeURIComponent(replacement));
410
+ }
411
+ } else if (memberTraits.httpHeader) {
412
+ serializer.write(memberNs, inputMemberValue);
413
+ headers[memberTraits.httpHeader.toLowerCase()] = String(serializer.flush());
414
+ } else if (typeof memberTraits.httpPrefixHeaders === "string") {
415
+ for (const [key, val] of Object.entries(inputMemberValue)) {
416
+ const amalgam = memberTraits.httpPrefixHeaders + key;
417
+ serializer.write([memberNs.getValueSchema(), { httpHeader: amalgam }], val);
418
+ headers[amalgam.toLowerCase()] = serializer.flush();
419
+ }
420
+ } else if (memberTraits.httpQuery || memberTraits.httpQueryParams) {
421
+ this.serializeQuery(memberNs, inputMemberValue, query);
422
+ } else {
423
+ hasNonHttpBindingMember = true;
424
+ payloadMemberNames.push(memberName);
425
+ payloadMemberSchemas.push(memberNs);
426
+ }
427
+ }
428
+ if (hasNonHttpBindingMember && input) {
429
+ const [namespace, name] = (ns.getName(true) ?? "#Unknown").split("#");
430
+ const requiredMembers = ns.getSchema()[6];
431
+ const payloadSchema = [
432
+ 3,
433
+ namespace,
434
+ name,
435
+ ns.getMergedTraits(),
436
+ payloadMemberNames,
437
+ payloadMemberSchemas,
438
+ void 0
439
+ ];
440
+ if (requiredMembers) {
441
+ payloadSchema[6] = requiredMembers;
442
+ } else {
443
+ payloadSchema.pop();
444
+ }
445
+ serializer.write(payloadSchema, input);
446
+ payload = serializer.flush();
447
+ }
448
+ request.headers = headers;
449
+ request.query = query;
450
+ request.body = payload;
451
+ return request;
452
+ }
453
+ serializeQuery(ns, data, query) {
454
+ const serializer = this.serializer;
455
+ const traits = ns.getMergedTraits();
456
+ if (traits.httpQueryParams) {
457
+ for (const [key, val] of Object.entries(data)) {
458
+ if (!(key in query)) {
459
+ const valueSchema = ns.getValueSchema();
460
+ Object.assign(valueSchema.getMergedTraits(), {
461
+ ...traits,
462
+ httpQuery: key,
463
+ httpQueryParams: void 0
464
+ });
465
+ this.serializeQuery(valueSchema, val, query);
466
+ }
467
+ }
468
+ return;
469
+ }
470
+ if (ns.isListSchema()) {
471
+ const sparse = !!ns.getMergedTraits().sparse;
472
+ const buffer = [];
473
+ for (const item of data) {
474
+ serializer.write([ns.getValueSchema(), traits], item);
475
+ const serializable = serializer.flush();
476
+ if (sparse || serializable !== void 0) {
477
+ buffer.push(serializable);
478
+ }
479
+ }
480
+ query[traits.httpQuery] = buffer;
481
+ } else {
482
+ serializer.write([ns, traits], data);
483
+ query[traits.httpQuery] = serializer.flush();
484
+ }
485
+ }
486
+ async deserializeResponse(operationSchema, context, response) {
487
+ const deserializer = this.deserializer;
488
+ const ns = NormalizedSchema.of(operationSchema.output);
489
+ const dataObject = {};
490
+ if (response.statusCode >= 300) {
491
+ const bytes = await collectBody(response.body, context);
492
+ if (bytes.byteLength > 0) {
493
+ Object.assign(dataObject, await deserializer.read(15, bytes));
494
+ }
495
+ await this.handleError(operationSchema, context, response, dataObject, this.deserializeMetadata(response));
496
+ throw new Error("@smithy/core/protocols - HTTP Protocol error handler failed to throw.");
497
+ }
498
+ for (const header in response.headers) {
499
+ const value = response.headers[header];
500
+ delete response.headers[header];
501
+ response.headers[header.toLowerCase()] = value;
502
+ }
503
+ const nonHttpBindingMembers = await this.deserializeHttpMessage(ns, context, response, dataObject);
504
+ if (nonHttpBindingMembers.length) {
505
+ const bytes = await collectBody(response.body, context);
506
+ if (bytes.byteLength > 0) {
507
+ const dataFromBody = await deserializer.read(ns, bytes);
508
+ for (const member of nonHttpBindingMembers) {
509
+ if (dataFromBody[member] != null) {
510
+ dataObject[member] = dataFromBody[member];
511
+ }
512
+ }
513
+ }
514
+ } else if (nonHttpBindingMembers.discardResponseBody) {
515
+ await collectBody(response.body, context);
516
+ }
517
+ dataObject.$metadata = this.deserializeMetadata(response);
518
+ return dataObject;
519
+ }
520
+ async deserializeHttpMessage(schema, context, response, arg4, arg5) {
521
+ let dataObject;
522
+ if (arg4 instanceof Set) {
523
+ dataObject = arg5;
524
+ } else {
525
+ dataObject = arg4;
526
+ }
527
+ let discardResponseBody = true;
528
+ const deserializer = this.deserializer;
529
+ const ns = NormalizedSchema.of(schema);
530
+ const nonHttpBindingMembers = [];
531
+ for (const [memberName, memberSchema] of ns.structIterator()) {
532
+ const memberTraits = memberSchema.getMemberTraits();
533
+ if (memberTraits.httpPayload) {
534
+ discardResponseBody = false;
535
+ const isStreaming = memberSchema.isStreaming();
536
+ if (isStreaming) {
537
+ const isEventStream = memberSchema.isStructSchema();
538
+ if (isEventStream) {
539
+ dataObject[memberName] = await this.deserializeEventStream({
540
+ response,
541
+ responseSchema: ns
542
+ });
543
+ } else {
544
+ dataObject[memberName] = sdkStreamMixin(response.body);
545
+ }
546
+ } else if (response.body) {
547
+ const bytes = await collectBody(response.body, context);
548
+ if (bytes.byteLength > 0) {
549
+ dataObject[memberName] = await deserializer.read(memberSchema, bytes);
550
+ }
551
+ }
552
+ } else if (memberTraits.httpHeader) {
553
+ const key = String(memberTraits.httpHeader).toLowerCase();
554
+ const value = response.headers[key];
555
+ if (null != value) {
556
+ if (memberSchema.isListSchema()) {
557
+ const headerListValueSchema = memberSchema.getValueSchema();
558
+ headerListValueSchema.getMergedTraits().httpHeader = key;
559
+ let sections;
560
+ if (headerListValueSchema.isTimestampSchema() && headerListValueSchema.getSchema() === 4) {
561
+ sections = splitEvery(value, ",", 2);
562
+ } else {
563
+ sections = splitHeader(value);
564
+ }
565
+ const list = [];
566
+ for (const section of sections) {
567
+ list.push(await deserializer.read(headerListValueSchema, section.trim()));
568
+ }
569
+ dataObject[memberName] = list;
570
+ } else {
571
+ dataObject[memberName] = await deserializer.read(memberSchema, value);
572
+ }
573
+ }
574
+ } else if (memberTraits.httpPrefixHeaders !== void 0) {
575
+ dataObject[memberName] = {};
576
+ for (const [header, value] of Object.entries(response.headers)) {
577
+ if (header.startsWith(memberTraits.httpPrefixHeaders)) {
578
+ const valueSchema = memberSchema.getValueSchema();
579
+ valueSchema.getMergedTraits().httpHeader = header;
580
+ dataObject[memberName][header.slice(memberTraits.httpPrefixHeaders.length)] = await deserializer.read(valueSchema, value);
581
+ }
582
+ }
583
+ } else if (memberTraits.httpResponseCode) {
584
+ dataObject[memberName] = response.statusCode;
585
+ } else {
586
+ nonHttpBindingMembers.push(memberName);
587
+ }
588
+ }
589
+ nonHttpBindingMembers.discardResponseBody = discardResponseBody;
590
+ return nonHttpBindingMembers;
591
+ }
592
+ };
593
+
594
+ // ../node_modules/.bun/@smithy+core@3.23.13/node_modules/@smithy/core/dist-es/submodules/protocols/serde/HttpInterceptingShapeDeserializer.js
595
+ var HttpInterceptingShapeDeserializer = class extends SerdeContext {
596
+ codecDeserializer;
597
+ stringDeserializer;
598
+ constructor(codecDeserializer, codecSettings) {
599
+ super();
600
+ this.codecDeserializer = codecDeserializer;
601
+ this.stringDeserializer = new FromStringShapeDeserializer(codecSettings);
602
+ }
603
+ setSerdeContext(serdeContext) {
604
+ this.stringDeserializer.setSerdeContext(serdeContext);
605
+ this.codecDeserializer.setSerdeContext(serdeContext);
606
+ this.serdeContext = serdeContext;
607
+ }
608
+ read(schema, data) {
609
+ const ns = NormalizedSchema.of(schema);
610
+ const traits = ns.getMergedTraits();
611
+ const toString = this.serdeContext?.utf8Encoder ?? toUtf8;
612
+ if (traits.httpHeader || traits.httpResponseCode) {
613
+ return this.stringDeserializer.read(ns, toString(data));
614
+ }
615
+ if (traits.httpPayload) {
616
+ if (ns.isBlobSchema()) {
617
+ const toBytes = this.serdeContext?.utf8Decoder ?? fromUtf8;
618
+ if (typeof data === "string") {
619
+ return toBytes(data);
620
+ }
621
+ return data;
622
+ } else if (ns.isStringSchema()) {
623
+ if ("byteLength" in data) {
624
+ return toString(data);
625
+ }
626
+ return data;
627
+ }
628
+ }
629
+ return this.codecDeserializer.read(ns, data);
630
+ }
631
+ };
632
+
633
+ // ../node_modules/.bun/@smithy+core@3.23.13/node_modules/@smithy/core/dist-es/submodules/protocols/serde/ToStringShapeSerializer.js
634
+ var ToStringShapeSerializer = class extends SerdeContext {
635
+ settings;
636
+ stringBuffer = "";
637
+ constructor(settings) {
638
+ super();
639
+ this.settings = settings;
640
+ }
641
+ write(schema, value) {
642
+ const ns = NormalizedSchema.of(schema);
643
+ switch (typeof value) {
644
+ case "object":
645
+ if (value === null) {
646
+ this.stringBuffer = "null";
647
+ return;
648
+ }
649
+ if (ns.isTimestampSchema()) {
650
+ if (!(value instanceof Date)) {
651
+ throw new Error(`@smithy/core/protocols - received non-Date value ${value} when schema expected Date in ${ns.getName(true)}`);
652
+ }
653
+ const format = determineTimestampFormat(ns, this.settings);
654
+ switch (format) {
655
+ case 5:
656
+ this.stringBuffer = value.toISOString().replace(".000Z", "Z");
657
+ break;
658
+ case 6:
659
+ this.stringBuffer = dateToUtcString(value);
660
+ break;
661
+ case 7:
662
+ this.stringBuffer = String(value.getTime() / 1e3);
663
+ break;
664
+ default:
665
+ console.warn("Missing timestamp format, using epoch seconds", value);
666
+ this.stringBuffer = String(value.getTime() / 1e3);
667
+ }
668
+ return;
669
+ }
670
+ if (ns.isBlobSchema() && "byteLength" in value) {
671
+ this.stringBuffer = (this.serdeContext?.base64Encoder ?? toBase64)(value);
672
+ return;
673
+ }
674
+ if (ns.isListSchema() && Array.isArray(value)) {
675
+ let buffer = "";
676
+ for (const item of value) {
677
+ this.write([ns.getValueSchema(), ns.getMergedTraits()], item);
678
+ const headerItem = this.flush();
679
+ const serialized = ns.getValueSchema().isTimestampSchema() ? headerItem : quoteHeader(headerItem);
680
+ if (buffer !== "") {
681
+ buffer += ", ";
682
+ }
683
+ buffer += serialized;
684
+ }
685
+ this.stringBuffer = buffer;
686
+ return;
687
+ }
688
+ this.stringBuffer = JSON.stringify(value, null, 2);
689
+ break;
690
+ case "string":
691
+ const mediaType = ns.getMergedTraits().mediaType;
692
+ let intermediateValue = value;
693
+ if (mediaType) {
694
+ const isJson = mediaType === "application/json" || mediaType.endsWith("+json");
695
+ if (isJson) {
696
+ intermediateValue = LazyJsonString.from(intermediateValue);
697
+ }
698
+ if (ns.getMergedTraits().httpHeader) {
699
+ this.stringBuffer = (this.serdeContext?.base64Encoder ?? toBase64)(intermediateValue.toString());
700
+ return;
701
+ }
702
+ }
703
+ this.stringBuffer = value;
704
+ break;
705
+ default:
706
+ if (ns.isIdempotencyToken()) {
707
+ this.stringBuffer = v4();
708
+ } else {
709
+ this.stringBuffer = String(value);
710
+ }
711
+ }
712
+ }
713
+ flush() {
714
+ const buffer = this.stringBuffer;
715
+ this.stringBuffer = "";
716
+ return buffer;
717
+ }
718
+ };
719
+
720
+ // ../node_modules/.bun/@smithy+core@3.23.13/node_modules/@smithy/core/dist-es/submodules/protocols/serde/HttpInterceptingShapeSerializer.js
721
+ var HttpInterceptingShapeSerializer = class {
722
+ codecSerializer;
723
+ stringSerializer;
724
+ buffer;
725
+ constructor(codecSerializer, codecSettings, stringSerializer = new ToStringShapeSerializer(codecSettings)) {
726
+ this.codecSerializer = codecSerializer;
727
+ this.stringSerializer = stringSerializer;
728
+ }
729
+ setSerdeContext(serdeContext) {
730
+ this.codecSerializer.setSerdeContext(serdeContext);
731
+ this.stringSerializer.setSerdeContext(serdeContext);
732
+ }
733
+ write(schema, value) {
734
+ const ns = NormalizedSchema.of(schema);
735
+ const traits = ns.getMergedTraits();
736
+ if (traits.httpHeader || traits.httpLabel || traits.httpQuery) {
737
+ this.stringSerializer.write(ns, value);
738
+ this.buffer = this.stringSerializer.flush();
739
+ return;
740
+ }
741
+ return this.codecSerializer.write(ns, value);
742
+ }
743
+ flush() {
744
+ if (this.buffer !== void 0) {
745
+ const buffer = this.buffer;
746
+ this.buffer = void 0;
747
+ return buffer;
748
+ }
749
+ return this.codecSerializer.flush();
750
+ }
751
+ };
752
+
753
+ // ../node_modules/.bun/@smithy+util-stream@4.5.25/node_modules/@smithy/util-stream/dist-es/blob/Uint8ArrayBlobAdapter.js
754
+ var Uint8ArrayBlobAdapter = class _Uint8ArrayBlobAdapter extends Uint8Array {
755
+ static fromString(source, encoding = "utf-8") {
756
+ if (typeof source === "string") {
757
+ if (encoding === "base64") {
758
+ return _Uint8ArrayBlobAdapter.mutate(fromBase64(source));
759
+ }
760
+ return _Uint8ArrayBlobAdapter.mutate(fromUtf8(source));
761
+ }
762
+ throw new Error(`Unsupported conversion from ${typeof source} to Uint8ArrayBlobAdapter.`);
763
+ }
764
+ static mutate(source) {
765
+ Object.setPrototypeOf(source, _Uint8ArrayBlobAdapter.prototype);
766
+ return source;
767
+ }
768
+ transformToString(encoding = "utf-8") {
769
+ if (encoding === "base64") {
770
+ return toBase64(this);
771
+ }
772
+ return toUtf8(this);
773
+ }
774
+ };
775
+
776
+ // ../node_modules/.bun/@smithy+core@3.23.17/node_modules/@smithy/core/dist-es/submodules/protocols/collect-stream-body.js
777
+ var collectBody2 = async (streamBody = new Uint8Array(), context) => {
778
+ if (streamBody instanceof Uint8Array) {
779
+ return Uint8ArrayBlobAdapter.mutate(streamBody);
780
+ }
781
+ if (!streamBody) {
782
+ return Uint8ArrayBlobAdapter.mutate(new Uint8Array());
783
+ }
784
+ const fromContext = context.streamCollector(streamBody);
785
+ return Uint8ArrayBlobAdapter.mutate(await fromContext);
786
+ };
787
+
788
+ // ../node_modules/.bun/@aws-sdk+core@3.973.26/node_modules/@aws-sdk/core/dist-es/submodules/protocols/json/jsonReviver.js
789
+ function jsonReviver(key, value, context) {
790
+ if (context?.source) {
791
+ const numericString = context.source;
792
+ if (typeof value === "number") {
793
+ if (value > Number.MAX_SAFE_INTEGER || value < Number.MIN_SAFE_INTEGER || numericString !== String(value)) {
794
+ const isFractional = numericString.includes(".");
795
+ if (isFractional) {
796
+ return new NumericValue(numericString, "bigDecimal");
797
+ } else {
798
+ return BigInt(numericString);
799
+ }
800
+ }
801
+ }
802
+ }
803
+ return value;
804
+ }
805
+
806
+ // ../node_modules/.bun/@aws-sdk+core@3.973.26/node_modules/@aws-sdk/core/dist-es/submodules/protocols/common.js
807
+ var collectBodyString = (streamBody, context) => collectBody2(streamBody, context).then((body) => (context?.utf8Encoder ?? toUtf8)(body));
808
+
809
+ // ../node_modules/.bun/@aws-sdk+core@3.973.26/node_modules/@aws-sdk/core/dist-es/submodules/protocols/json/parseJsonBody.js
810
+ var parseJsonBody = (streamBody, context) => collectBodyString(streamBody, context).then((encoded) => {
811
+ if (encoded.length) {
812
+ try {
813
+ return JSON.parse(encoded);
814
+ } catch (e) {
815
+ if (e?.name === "SyntaxError") {
816
+ Object.defineProperty(e, "$responseBodyText", {
817
+ value: encoded
818
+ });
819
+ }
820
+ throw e;
821
+ }
822
+ }
823
+ return {};
824
+ });
825
+ var loadRestJsonErrorCode = (output, data) => {
826
+ const findKey = (object, key) => Object.keys(object).find((k) => k.toLowerCase() === key.toLowerCase());
827
+ const sanitizeErrorCode = (rawValue) => {
828
+ let cleanValue = rawValue;
829
+ if (typeof cleanValue === "number") {
830
+ cleanValue = cleanValue.toString();
831
+ }
832
+ if (cleanValue.indexOf(",") >= 0) {
833
+ cleanValue = cleanValue.split(",")[0];
834
+ }
835
+ if (cleanValue.indexOf(":") >= 0) {
836
+ cleanValue = cleanValue.split(":")[0];
837
+ }
838
+ if (cleanValue.indexOf("#") >= 0) {
839
+ cleanValue = cleanValue.split("#")[1];
840
+ }
841
+ return cleanValue;
842
+ };
843
+ const headerKey = findKey(output.headers, "x-amzn-errortype");
844
+ if (headerKey !== void 0) {
845
+ return sanitizeErrorCode(output.headers[headerKey]);
846
+ }
847
+ if (data && typeof data === "object") {
848
+ const codeKey = findKey(data, "code");
849
+ if (codeKey && data[codeKey] !== void 0) {
850
+ return sanitizeErrorCode(data[codeKey]);
851
+ }
852
+ if (data["__type"] !== void 0) {
853
+ return sanitizeErrorCode(data["__type"]);
854
+ }
855
+ }
856
+ };
857
+
858
+ // ../node_modules/.bun/@aws-sdk+core@3.973.26/node_modules/@aws-sdk/core/dist-es/submodules/protocols/json/JsonShapeDeserializer.js
859
+ var JsonShapeDeserializer = class extends SerdeContextConfig {
860
+ settings;
861
+ constructor(settings) {
862
+ super();
863
+ this.settings = settings;
864
+ }
865
+ async read(schema, data) {
866
+ return this._read(schema, typeof data === "string" ? JSON.parse(data, jsonReviver) : await parseJsonBody(data, this.serdeContext));
867
+ }
868
+ readObject(schema, data) {
869
+ return this._read(schema, data);
870
+ }
871
+ _read(schema, value) {
872
+ const isObject = value !== null && typeof value === "object";
873
+ const ns = NormalizedSchema.of(schema);
874
+ if (isObject) {
875
+ if (ns.isStructSchema()) {
876
+ const record = value;
877
+ const union = ns.isUnionSchema();
878
+ const out = {};
879
+ let nameMap = void 0;
880
+ const { jsonName } = this.settings;
881
+ if (jsonName) {
882
+ nameMap = {};
883
+ }
884
+ let unionSerde;
885
+ if (union) {
886
+ unionSerde = new UnionSerde(record, out);
887
+ }
888
+ for (const [memberName, memberSchema] of ns.structIterator()) {
889
+ let fromKey = memberName;
890
+ if (jsonName) {
891
+ fromKey = memberSchema.getMergedTraits().jsonName ?? fromKey;
892
+ nameMap[fromKey] = memberName;
893
+ }
894
+ if (union) {
895
+ unionSerde.mark(fromKey);
896
+ }
897
+ if (record[fromKey] != null) {
898
+ out[memberName] = this._read(memberSchema, record[fromKey]);
899
+ }
900
+ }
901
+ if (union) {
902
+ unionSerde.writeUnknown();
903
+ } else if (typeof record.__type === "string") {
904
+ for (const [k, v] of Object.entries(record)) {
905
+ const t = jsonName ? nameMap[k] ?? k : k;
906
+ if (!(t in out)) {
907
+ out[t] = v;
908
+ }
909
+ }
910
+ }
911
+ return out;
912
+ }
913
+ if (Array.isArray(value) && ns.isListSchema()) {
914
+ const listMember = ns.getValueSchema();
915
+ const out = [];
916
+ for (const item of value) {
917
+ out.push(this._read(listMember, item));
918
+ }
919
+ return out;
920
+ }
921
+ if (ns.isMapSchema()) {
922
+ const mapMember = ns.getValueSchema();
923
+ const out = {};
924
+ for (const [_k, _v] of Object.entries(value)) {
925
+ out[_k] = this._read(mapMember, _v);
926
+ }
927
+ return out;
928
+ }
929
+ }
930
+ if (ns.isBlobSchema() && typeof value === "string") {
931
+ return fromBase64(value);
932
+ }
933
+ const mediaType = ns.getMergedTraits().mediaType;
934
+ if (ns.isStringSchema() && typeof value === "string" && mediaType) {
935
+ const isJson = mediaType === "application/json" || mediaType.endsWith("+json");
936
+ if (isJson) {
937
+ return LazyJsonString.from(value);
938
+ }
939
+ return value;
940
+ }
941
+ if (ns.isTimestampSchema() && value != null) {
942
+ const format = determineTimestampFormat(ns, this.settings);
943
+ switch (format) {
944
+ case 5:
945
+ return parseRfc3339DateTimeWithOffset(value);
946
+ case 6:
947
+ return parseRfc7231DateTime(value);
948
+ case 7:
949
+ return parseEpochTimestamp(value);
950
+ default:
951
+ console.warn("Missing timestamp format, parsing value with Date constructor:", value);
952
+ return new Date(value);
953
+ }
954
+ }
955
+ if (ns.isBigIntegerSchema() && (typeof value === "number" || typeof value === "string")) {
956
+ return BigInt(value);
957
+ }
958
+ if (ns.isBigDecimalSchema() && value != void 0) {
959
+ if (value instanceof NumericValue) {
960
+ return value;
961
+ }
962
+ const untyped = value;
963
+ if (untyped.type === "bigDecimal" && "string" in untyped) {
964
+ return new NumericValue(untyped.string, untyped.type);
965
+ }
966
+ return new NumericValue(String(value), "bigDecimal");
967
+ }
968
+ if (ns.isNumericSchema() && typeof value === "string") {
969
+ switch (value) {
970
+ case "Infinity":
971
+ return Infinity;
972
+ case "-Infinity":
973
+ return -Infinity;
974
+ case "NaN":
975
+ return NaN;
976
+ }
977
+ return value;
978
+ }
979
+ if (ns.isDocumentSchema()) {
980
+ if (isObject) {
981
+ const out = Array.isArray(value) ? [] : {};
982
+ for (const [k, v] of Object.entries(value)) {
983
+ if (v instanceof NumericValue) {
984
+ out[k] = v;
985
+ } else {
986
+ out[k] = this._read(ns, v);
987
+ }
988
+ }
989
+ return out;
990
+ } else {
991
+ return structuredClone(value);
992
+ }
993
+ }
994
+ return value;
995
+ }
996
+ };
997
+
998
+ // ../node_modules/.bun/@aws-sdk+core@3.973.26/node_modules/@aws-sdk/core/dist-es/submodules/protocols/json/jsonReplacer.js
999
+ var NUMERIC_CONTROL_CHAR = String.fromCharCode(925);
1000
+ var JsonReplacer = class {
1001
+ values = /* @__PURE__ */ new Map();
1002
+ counter = 0;
1003
+ stage = 0;
1004
+ createReplacer() {
1005
+ if (this.stage === 1) {
1006
+ throw new Error("@aws-sdk/core/protocols - JsonReplacer already created.");
1007
+ }
1008
+ if (this.stage === 2) {
1009
+ throw new Error("@aws-sdk/core/protocols - JsonReplacer exhausted.");
1010
+ }
1011
+ this.stage = 1;
1012
+ return (key, value) => {
1013
+ if (value instanceof NumericValue) {
1014
+ const v = `${NUMERIC_CONTROL_CHAR + "nv" + this.counter++}_` + value.string;
1015
+ this.values.set(`"${v}"`, value.string);
1016
+ return v;
1017
+ }
1018
+ if (typeof value === "bigint") {
1019
+ const s = value.toString();
1020
+ const v = `${NUMERIC_CONTROL_CHAR + "b" + this.counter++}_` + s;
1021
+ this.values.set(`"${v}"`, s);
1022
+ return v;
1023
+ }
1024
+ return value;
1025
+ };
1026
+ }
1027
+ replaceInJson(json) {
1028
+ if (this.stage === 0) {
1029
+ throw new Error("@aws-sdk/core/protocols - JsonReplacer not created yet.");
1030
+ }
1031
+ if (this.stage === 2) {
1032
+ throw new Error("@aws-sdk/core/protocols - JsonReplacer exhausted.");
1033
+ }
1034
+ this.stage = 2;
1035
+ if (this.counter === 0) {
1036
+ return json;
1037
+ }
1038
+ for (const [key, value] of this.values) {
1039
+ json = json.replace(key, value);
1040
+ }
1041
+ return json;
1042
+ }
1043
+ };
1044
+
1045
+ // ../node_modules/.bun/@aws-sdk+core@3.973.26/node_modules/@aws-sdk/core/dist-es/submodules/protocols/json/JsonShapeSerializer.js
1046
+ var JsonShapeSerializer = class extends SerdeContextConfig {
1047
+ settings;
1048
+ buffer;
1049
+ useReplacer = false;
1050
+ rootSchema;
1051
+ constructor(settings) {
1052
+ super();
1053
+ this.settings = settings;
1054
+ }
1055
+ write(schema, value) {
1056
+ this.rootSchema = NormalizedSchema.of(schema);
1057
+ this.buffer = this._write(this.rootSchema, value);
1058
+ }
1059
+ writeDiscriminatedDocument(schema, value) {
1060
+ this.write(schema, value);
1061
+ if (typeof this.buffer === "object") {
1062
+ this.buffer.__type = NormalizedSchema.of(schema).getName(true);
1063
+ }
1064
+ }
1065
+ flush() {
1066
+ const { rootSchema, useReplacer } = this;
1067
+ this.rootSchema = void 0;
1068
+ this.useReplacer = false;
1069
+ if (rootSchema?.isStructSchema() || rootSchema?.isDocumentSchema()) {
1070
+ if (!useReplacer) {
1071
+ return JSON.stringify(this.buffer);
1072
+ }
1073
+ const replacer = new JsonReplacer();
1074
+ return replacer.replaceInJson(JSON.stringify(this.buffer, replacer.createReplacer(), 0));
1075
+ }
1076
+ return this.buffer;
1077
+ }
1078
+ _write(schema, value, container) {
1079
+ const isObject = value !== null && typeof value === "object";
1080
+ const ns = NormalizedSchema.of(schema);
1081
+ if (isObject) {
1082
+ if (ns.isStructSchema()) {
1083
+ const record = value;
1084
+ const out = {};
1085
+ const { jsonName } = this.settings;
1086
+ let nameMap = void 0;
1087
+ if (jsonName) {
1088
+ nameMap = {};
1089
+ }
1090
+ for (const [memberName, memberSchema] of ns.structIterator()) {
1091
+ const serializableValue = this._write(memberSchema, record[memberName], ns);
1092
+ if (serializableValue !== void 0) {
1093
+ let targetKey = memberName;
1094
+ if (jsonName) {
1095
+ targetKey = memberSchema.getMergedTraits().jsonName ?? memberName;
1096
+ nameMap[memberName] = targetKey;
1097
+ }
1098
+ out[targetKey] = serializableValue;
1099
+ }
1100
+ }
1101
+ if (ns.isUnionSchema() && Object.keys(out).length === 0) {
1102
+ const { $unknown } = record;
1103
+ if (Array.isArray($unknown)) {
1104
+ const [k, v] = $unknown;
1105
+ out[k] = this._write(15, v);
1106
+ }
1107
+ } else if (typeof record.__type === "string") {
1108
+ for (const [k, v] of Object.entries(record)) {
1109
+ const targetKey = jsonName ? nameMap[k] ?? k : k;
1110
+ if (!(targetKey in out)) {
1111
+ out[targetKey] = this._write(15, v);
1112
+ }
1113
+ }
1114
+ }
1115
+ return out;
1116
+ }
1117
+ if (Array.isArray(value) && ns.isListSchema()) {
1118
+ const listMember = ns.getValueSchema();
1119
+ const out = [];
1120
+ const sparse = !!ns.getMergedTraits().sparse;
1121
+ for (const item of value) {
1122
+ if (sparse || item != null) {
1123
+ out.push(this._write(listMember, item));
1124
+ }
1125
+ }
1126
+ return out;
1127
+ }
1128
+ if (ns.isMapSchema()) {
1129
+ const mapMember = ns.getValueSchema();
1130
+ const out = {};
1131
+ const sparse = !!ns.getMergedTraits().sparse;
1132
+ for (const [_k, _v] of Object.entries(value)) {
1133
+ if (sparse || _v != null) {
1134
+ out[_k] = this._write(mapMember, _v);
1135
+ }
1136
+ }
1137
+ return out;
1138
+ }
1139
+ if (value instanceof Uint8Array && (ns.isBlobSchema() || ns.isDocumentSchema())) {
1140
+ if (ns === this.rootSchema) {
1141
+ return value;
1142
+ }
1143
+ return (this.serdeContext?.base64Encoder ?? toBase64)(value);
1144
+ }
1145
+ if (value instanceof Date && (ns.isTimestampSchema() || ns.isDocumentSchema())) {
1146
+ const format = determineTimestampFormat(ns, this.settings);
1147
+ switch (format) {
1148
+ case 5:
1149
+ return value.toISOString().replace(".000Z", "Z");
1150
+ case 6:
1151
+ return dateToUtcString(value);
1152
+ case 7:
1153
+ return value.getTime() / 1e3;
1154
+ default:
1155
+ console.warn("Missing timestamp format, using epoch seconds", value);
1156
+ return value.getTime() / 1e3;
1157
+ }
1158
+ }
1159
+ if (value instanceof NumericValue) {
1160
+ this.useReplacer = true;
1161
+ }
1162
+ }
1163
+ if (value === null && container?.isStructSchema()) {
1164
+ return void 0;
1165
+ }
1166
+ if (ns.isStringSchema()) {
1167
+ if (typeof value === "undefined" && ns.isIdempotencyToken()) {
1168
+ return v4();
1169
+ }
1170
+ const mediaType = ns.getMergedTraits().mediaType;
1171
+ if (value != null && mediaType) {
1172
+ const isJson = mediaType === "application/json" || mediaType.endsWith("+json");
1173
+ if (isJson) {
1174
+ return LazyJsonString.from(value);
1175
+ }
1176
+ }
1177
+ return value;
1178
+ }
1179
+ if (typeof value === "number" && ns.isNumericSchema()) {
1180
+ if (Math.abs(value) === Infinity || isNaN(value)) {
1181
+ return String(value);
1182
+ }
1183
+ return value;
1184
+ }
1185
+ if (typeof value === "string" && ns.isBlobSchema()) {
1186
+ if (ns === this.rootSchema) {
1187
+ return value;
1188
+ }
1189
+ return (this.serdeContext?.base64Encoder ?? toBase64)(value);
1190
+ }
1191
+ if (typeof value === "bigint") {
1192
+ this.useReplacer = true;
1193
+ }
1194
+ if (ns.isDocumentSchema()) {
1195
+ if (isObject) {
1196
+ const out = Array.isArray(value) ? [] : {};
1197
+ for (const [k, v] of Object.entries(value)) {
1198
+ if (v instanceof NumericValue) {
1199
+ this.useReplacer = true;
1200
+ out[k] = v;
1201
+ } else {
1202
+ out[k] = this._write(ns, v);
1203
+ }
1204
+ }
1205
+ return out;
1206
+ } else {
1207
+ return structuredClone(value);
1208
+ }
1209
+ }
1210
+ return value;
1211
+ }
1212
+ };
1213
+
1214
+ // ../node_modules/.bun/@aws-sdk+core@3.973.26/node_modules/@aws-sdk/core/dist-es/submodules/protocols/json/JsonCodec.js
1215
+ var JsonCodec = class extends SerdeContextConfig {
1216
+ settings;
1217
+ constructor(settings) {
1218
+ super();
1219
+ this.settings = settings;
1220
+ }
1221
+ createSerializer() {
1222
+ const serializer = new JsonShapeSerializer(this.settings);
1223
+ serializer.setSerdeContext(this.serdeContext);
1224
+ return serializer;
1225
+ }
1226
+ createDeserializer() {
1227
+ const deserializer = new JsonShapeDeserializer(this.settings);
1228
+ deserializer.setSerdeContext(this.serdeContext);
1229
+ return deserializer;
1230
+ }
1231
+ };
1232
+
1233
+ // ../node_modules/.bun/@aws-sdk+core@3.973.26/node_modules/@aws-sdk/core/dist-es/submodules/protocols/json/AwsRestJsonProtocol.js
1234
+ var AwsRestJsonProtocol = class extends HttpBindingProtocol {
1235
+ serializer;
1236
+ deserializer;
1237
+ codec;
1238
+ mixin = new ProtocolLib();
1239
+ constructor({ defaultNamespace, errorTypeRegistries }) {
1240
+ super({
1241
+ defaultNamespace,
1242
+ errorTypeRegistries
1243
+ });
1244
+ const settings = {
1245
+ timestampFormat: {
1246
+ useTrait: true,
1247
+ default: 7
1248
+ },
1249
+ httpBindings: true,
1250
+ jsonName: true
1251
+ };
1252
+ this.codec = new JsonCodec(settings);
1253
+ this.serializer = new HttpInterceptingShapeSerializer(this.codec.createSerializer(), settings);
1254
+ this.deserializer = new HttpInterceptingShapeDeserializer(this.codec.createDeserializer(), settings);
1255
+ }
1256
+ getShapeId() {
1257
+ return "aws.protocols#restJson1";
1258
+ }
1259
+ getPayloadCodec() {
1260
+ return this.codec;
1261
+ }
1262
+ setSerdeContext(serdeContext) {
1263
+ this.codec.setSerdeContext(serdeContext);
1264
+ super.setSerdeContext(serdeContext);
1265
+ }
1266
+ async serializeRequest(operationSchema, input, context) {
1267
+ const request = await super.serializeRequest(operationSchema, input, context);
1268
+ const inputSchema = NormalizedSchema.of(operationSchema.input);
1269
+ if (!request.headers["content-type"]) {
1270
+ const contentType = this.mixin.resolveRestContentType(this.getDefaultContentType(), inputSchema);
1271
+ if (contentType) {
1272
+ request.headers["content-type"] = contentType;
1273
+ }
1274
+ }
1275
+ if (request.body == null && request.headers["content-type"] === this.getDefaultContentType()) {
1276
+ request.body = "{}";
1277
+ }
1278
+ return request;
1279
+ }
1280
+ async deserializeResponse(operationSchema, context, response) {
1281
+ const output = await super.deserializeResponse(operationSchema, context, response);
1282
+ const outputSchema = NormalizedSchema.of(operationSchema.output);
1283
+ for (const [name, member] of outputSchema.structIterator()) {
1284
+ if (member.getMemberTraits().httpPayload && !(name in output)) {
1285
+ output[name] = null;
1286
+ }
1287
+ }
1288
+ return output;
1289
+ }
1290
+ async handleError(operationSchema, context, response, dataObject, metadata) {
1291
+ const errorIdentifier = loadRestJsonErrorCode(response, dataObject) ?? "Unknown";
1292
+ this.mixin.compose(this.compositeErrorRegistry, errorIdentifier, this.options.defaultNamespace);
1293
+ const { errorSchema, errorMetadata } = await this.mixin.getErrorSchemaOrThrowBaseException(errorIdentifier, this.options.defaultNamespace, response, dataObject, metadata);
1294
+ const ns = NormalizedSchema.of(errorSchema);
1295
+ const message = dataObject.message ?? dataObject.Message ?? "UnknownError";
1296
+ const ErrorCtor = this.compositeErrorRegistry.getErrorCtor(errorSchema) ?? Error;
1297
+ const exception = new ErrorCtor(message);
1298
+ await this.deserializeHttpMessage(errorSchema, context, response, dataObject);
1299
+ const output = {};
1300
+ for (const [name, member] of ns.structIterator()) {
1301
+ const target = member.getMergedTraits().jsonName ?? name;
1302
+ output[name] = this.codec.createDeserializer().readObject(member, dataObject[target]);
1303
+ }
1304
+ throw this.mixin.decorateServiceException(Object.assign(exception, errorMetadata, {
1305
+ $fault: ns.getMergedTraits().error,
1306
+ message
1307
+ }, output), dataObject);
1308
+ }
1309
+ getDefaultContentType() {
1310
+ return "application/json";
1311
+ }
1312
+ };
1313
+
1314
+ export {
1315
+ AwsRestJsonProtocol
1316
+ };