@cdk8s/awscdk-resolver 0.0.418 → 0.0.420

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (99) hide show
  1. package/.jsii +3 -3
  2. package/lib/resolve.js +1 -1
  3. package/node_modules/@aws-sdk/client-cloudformation/package.json +5 -5
  4. package/node_modules/@aws-sdk/client-sso/package.json +4 -4
  5. package/node_modules/@aws-sdk/core/dist-cjs/index.js +124 -92
  6. package/node_modules/@aws-sdk/core/dist-cjs/submodules/protocols/index.js +124 -92
  7. package/node_modules/@aws-sdk/core/dist-es/submodules/protocols/json/AwsJson1_0Protocol.js +2 -1
  8. package/node_modules/@aws-sdk/core/dist-es/submodules/protocols/json/AwsJson1_1Protocol.js +2 -1
  9. package/node_modules/@aws-sdk/core/dist-es/submodules/protocols/json/AwsJsonRpcProtocol.js +10 -8
  10. package/node_modules/@aws-sdk/core/dist-es/submodules/protocols/json/JsonShapeDeserializer.js +30 -26
  11. package/node_modules/@aws-sdk/core/dist-es/submodules/protocols/json/JsonShapeSerializer.js +75 -53
  12. package/node_modules/@aws-sdk/core/dist-es/submodules/protocols/structIterator.js +5 -3
  13. package/node_modules/@aws-sdk/core/dist-types/submodules/protocols/json/AwsJson1_0Protocol.d.ts +3 -1
  14. package/node_modules/@aws-sdk/core/dist-types/submodules/protocols/json/AwsJson1_1Protocol.d.ts +3 -1
  15. package/node_modules/@aws-sdk/core/dist-types/submodules/protocols/json/AwsJsonRpcProtocol.d.ts +2 -1
  16. package/node_modules/@aws-sdk/core/dist-types/submodules/protocols/json/JsonShapeDeserializer.d.ts +1 -1
  17. package/node_modules/@aws-sdk/core/dist-types/submodules/protocols/json/JsonShapeSerializer.d.ts +12 -3
  18. package/node_modules/@aws-sdk/core/dist-types/ts3.4/submodules/protocols/json/AwsJson1_0Protocol.d.ts +3 -0
  19. package/node_modules/@aws-sdk/core/dist-types/ts3.4/submodules/protocols/json/AwsJson1_1Protocol.d.ts +3 -0
  20. package/node_modules/@aws-sdk/core/dist-types/ts3.4/submodules/protocols/json/AwsJsonRpcProtocol.d.ts +2 -0
  21. package/node_modules/@aws-sdk/core/dist-types/ts3.4/submodules/protocols/json/JsonShapeDeserializer.d.ts +1 -1
  22. package/node_modules/@aws-sdk/core/dist-types/ts3.4/submodules/protocols/json/JsonShapeSerializer.d.ts +9 -3
  23. package/node_modules/@aws-sdk/core/package.json +1 -1
  24. package/node_modules/@aws-sdk/credential-provider-env/package.json +2 -2
  25. package/node_modules/@aws-sdk/credential-provider-http/package.json +2 -2
  26. package/node_modules/@aws-sdk/credential-provider-ini/package.json +9 -9
  27. package/node_modules/@aws-sdk/credential-provider-login/package.json +3 -3
  28. package/node_modules/@aws-sdk/credential-provider-node/package.json +7 -7
  29. package/node_modules/@aws-sdk/credential-provider-process/package.json +2 -2
  30. package/node_modules/@aws-sdk/credential-provider-sso/package.json +4 -4
  31. package/node_modules/@aws-sdk/credential-provider-web-identity/package.json +3 -3
  32. package/node_modules/@aws-sdk/middleware-user-agent/package.json +2 -2
  33. package/node_modules/@aws-sdk/nested-clients/package.json +4 -4
  34. package/node_modules/@aws-sdk/token-providers/package.json +3 -3
  35. package/node_modules/@aws-sdk/util-user-agent-node/package.json +2 -2
  36. package/node_modules/@smithy/core/dist-cjs/submodules/event-streams/index.js +0 -1
  37. package/node_modules/@smithy/core/dist-es/submodules/event-streams/EventStreamSerde.js +0 -1
  38. package/node_modules/@smithy/core/package.json +1 -1
  39. package/node_modules/@smithy/middleware-endpoint/package.json +2 -2
  40. package/node_modules/@smithy/middleware-retry/package.json +2 -2
  41. package/node_modules/@smithy/smithy-client/package.json +3 -3
  42. package/node_modules/@smithy/util-defaults-mode-browser/package.json +2 -2
  43. package/node_modules/@smithy/util-defaults-mode-node/package.json +2 -2
  44. package/package.json +3 -3
  45. /package/node_modules/{fast-xml-parser → @aws-sdk/xml-builder/node_modules/fast-xml-parser}/CHANGELOG.md +0 -0
  46. /package/node_modules/{fast-xml-parser → @aws-sdk/xml-builder/node_modules/fast-xml-parser}/LICENSE +0 -0
  47. /package/node_modules/{fast-xml-parser → @aws-sdk/xml-builder/node_modules/fast-xml-parser}/README.md +0 -0
  48. /package/node_modules/{fast-xml-parser → @aws-sdk/xml-builder/node_modules/fast-xml-parser}/lib/fxbuilder.min.js +0 -0
  49. /package/node_modules/{fast-xml-parser → @aws-sdk/xml-builder/node_modules/fast-xml-parser}/lib/fxbuilder.min.js.map +0 -0
  50. /package/node_modules/{fast-xml-parser → @aws-sdk/xml-builder/node_modules/fast-xml-parser}/lib/fxp.cjs +0 -0
  51. /package/node_modules/{fast-xml-parser → @aws-sdk/xml-builder/node_modules/fast-xml-parser}/lib/fxp.d.cts +0 -0
  52. /package/node_modules/{fast-xml-parser → @aws-sdk/xml-builder/node_modules/fast-xml-parser}/lib/fxp.min.js +0 -0
  53. /package/node_modules/{fast-xml-parser → @aws-sdk/xml-builder/node_modules/fast-xml-parser}/lib/fxp.min.js.map +0 -0
  54. /package/node_modules/{fast-xml-parser → @aws-sdk/xml-builder/node_modules/fast-xml-parser}/lib/fxparser.min.js +0 -0
  55. /package/node_modules/{fast-xml-parser → @aws-sdk/xml-builder/node_modules/fast-xml-parser}/lib/fxparser.min.js.map +0 -0
  56. /package/node_modules/{fast-xml-parser → @aws-sdk/xml-builder/node_modules/fast-xml-parser}/lib/fxvalidator.min.js +0 -0
  57. /package/node_modules/{fast-xml-parser → @aws-sdk/xml-builder/node_modules/fast-xml-parser}/lib/fxvalidator.min.js.map +0 -0
  58. /package/node_modules/{fast-xml-parser → @aws-sdk/xml-builder/node_modules/fast-xml-parser}/package.json +0 -0
  59. /package/node_modules/{fast-xml-parser → @aws-sdk/xml-builder/node_modules/fast-xml-parser}/src/cli/cli.js +0 -0
  60. /package/node_modules/{fast-xml-parser → @aws-sdk/xml-builder/node_modules/fast-xml-parser}/src/cli/man.js +0 -0
  61. /package/node_modules/{fast-xml-parser → @aws-sdk/xml-builder/node_modules/fast-xml-parser}/src/cli/read.js +0 -0
  62. /package/node_modules/{fast-xml-parser → @aws-sdk/xml-builder/node_modules/fast-xml-parser}/src/fxp.d.ts +0 -0
  63. /package/node_modules/{fast-xml-parser → @aws-sdk/xml-builder/node_modules/fast-xml-parser}/src/fxp.js +0 -0
  64. /package/node_modules/{fast-xml-parser → @aws-sdk/xml-builder/node_modules/fast-xml-parser}/src/ignoreAttributes.js +0 -0
  65. /package/node_modules/{fast-xml-parser → @aws-sdk/xml-builder/node_modules/fast-xml-parser}/src/util.js +0 -0
  66. /package/node_modules/{fast-xml-parser → @aws-sdk/xml-builder/node_modules/fast-xml-parser}/src/v6/CharsSymbol.js +0 -0
  67. /package/node_modules/{fast-xml-parser → @aws-sdk/xml-builder/node_modules/fast-xml-parser}/src/v6/EntitiesParser.js +0 -0
  68. /package/node_modules/{fast-xml-parser → @aws-sdk/xml-builder/node_modules/fast-xml-parser}/src/v6/OptionsBuilder.js +0 -0
  69. /package/node_modules/{fast-xml-parser → @aws-sdk/xml-builder/node_modules/fast-xml-parser}/src/v6/OutputBuilders/BaseOutputBuilder.js +0 -0
  70. /package/node_modules/{fast-xml-parser → @aws-sdk/xml-builder/node_modules/fast-xml-parser}/src/v6/OutputBuilders/JsArrBuilder.js +0 -0
  71. /package/node_modules/{fast-xml-parser → @aws-sdk/xml-builder/node_modules/fast-xml-parser}/src/v6/OutputBuilders/JsMinArrBuilder.js +0 -0
  72. /package/node_modules/{fast-xml-parser → @aws-sdk/xml-builder/node_modules/fast-xml-parser}/src/v6/OutputBuilders/JsObjBuilder.js +0 -0
  73. /package/node_modules/{fast-xml-parser → @aws-sdk/xml-builder/node_modules/fast-xml-parser}/src/v6/OutputBuilders/ParserOptionsBuilder.js +0 -0
  74. /package/node_modules/{fast-xml-parser → @aws-sdk/xml-builder/node_modules/fast-xml-parser}/src/v6/Report.js +0 -0
  75. /package/node_modules/{fast-xml-parser → @aws-sdk/xml-builder/node_modules/fast-xml-parser}/src/v6/TagPath.js +0 -0
  76. /package/node_modules/{fast-xml-parser → @aws-sdk/xml-builder/node_modules/fast-xml-parser}/src/v6/TagPathMatcher.js +0 -0
  77. /package/node_modules/{fast-xml-parser → @aws-sdk/xml-builder/node_modules/fast-xml-parser}/src/v6/XMLParser.js +0 -0
  78. /package/node_modules/{fast-xml-parser → @aws-sdk/xml-builder/node_modules/fast-xml-parser}/src/v6/Xml2JsParser.js +0 -0
  79. /package/node_modules/{fast-xml-parser → @aws-sdk/xml-builder/node_modules/fast-xml-parser}/src/v6/XmlPartReader.js +0 -0
  80. /package/node_modules/{fast-xml-parser → @aws-sdk/xml-builder/node_modules/fast-xml-parser}/src/v6/XmlSpecialTagsReader.js +0 -0
  81. /package/node_modules/{fast-xml-parser → @aws-sdk/xml-builder/node_modules/fast-xml-parser}/src/v6/inputSource/BufferSource.js +0 -0
  82. /package/node_modules/{fast-xml-parser → @aws-sdk/xml-builder/node_modules/fast-xml-parser}/src/v6/inputSource/StringSource.js +0 -0
  83. /package/node_modules/{fast-xml-parser → @aws-sdk/xml-builder/node_modules/fast-xml-parser}/src/v6/valueParsers/EntitiesParser.js +0 -0
  84. /package/node_modules/{fast-xml-parser → @aws-sdk/xml-builder/node_modules/fast-xml-parser}/src/v6/valueParsers/booleanParser.js +0 -0
  85. /package/node_modules/{fast-xml-parser → @aws-sdk/xml-builder/node_modules/fast-xml-parser}/src/v6/valueParsers/booleanParserExt.js +0 -0
  86. /package/node_modules/{fast-xml-parser → @aws-sdk/xml-builder/node_modules/fast-xml-parser}/src/v6/valueParsers/currency.js +0 -0
  87. /package/node_modules/{fast-xml-parser → @aws-sdk/xml-builder/node_modules/fast-xml-parser}/src/v6/valueParsers/join.js +0 -0
  88. /package/node_modules/{fast-xml-parser → @aws-sdk/xml-builder/node_modules/fast-xml-parser}/src/v6/valueParsers/number.js +0 -0
  89. /package/node_modules/{fast-xml-parser → @aws-sdk/xml-builder/node_modules/fast-xml-parser}/src/v6/valueParsers/trim.js +0 -0
  90. /package/node_modules/{fast-xml-parser → @aws-sdk/xml-builder/node_modules/fast-xml-parser}/src/validator.js +0 -0
  91. /package/node_modules/{fast-xml-parser → @aws-sdk/xml-builder/node_modules/fast-xml-parser}/src/xmlbuilder/json2xml.js +0 -0
  92. /package/node_modules/{fast-xml-parser → @aws-sdk/xml-builder/node_modules/fast-xml-parser}/src/xmlbuilder/orderedJs2Xml.js +0 -0
  93. /package/node_modules/{fast-xml-parser → @aws-sdk/xml-builder/node_modules/fast-xml-parser}/src/xmlbuilder/prettifyJs2Xml.js +0 -0
  94. /package/node_modules/{fast-xml-parser → @aws-sdk/xml-builder/node_modules/fast-xml-parser}/src/xmlparser/DocTypeReader.js +0 -0
  95. /package/node_modules/{fast-xml-parser → @aws-sdk/xml-builder/node_modules/fast-xml-parser}/src/xmlparser/OptionsBuilder.js +0 -0
  96. /package/node_modules/{fast-xml-parser → @aws-sdk/xml-builder/node_modules/fast-xml-parser}/src/xmlparser/OrderedObjParser.js +0 -0
  97. /package/node_modules/{fast-xml-parser → @aws-sdk/xml-builder/node_modules/fast-xml-parser}/src/xmlparser/XMLParser.js +0 -0
  98. /package/node_modules/{fast-xml-parser → @aws-sdk/xml-builder/node_modules/fast-xml-parser}/src/xmlparser/node2json.js +0 -0
  99. /package/node_modules/{fast-xml-parser → @aws-sdk/xml-builder/node_modules/fast-xml-parser}/src/xmlparser/xmlNode.js +0 -0
@@ -216,7 +216,8 @@ function* serializingStructIterator(ns, sourceObject) {
216
216
  const struct = ns.getSchema();
217
217
  for (let i = 0; i < struct[4].length; ++i) {
218
218
  const key = struct[4][i];
219
- const memberNs = new schema.NormalizedSchema([struct[5][i], 0], key);
219
+ const memberSchema = struct[5][i];
220
+ const memberNs = new schema.NormalizedSchema([memberSchema, 0], key);
220
221
  if (!(key in sourceObject) && !memberNs.isIdempotencyToken()) {
221
222
  continue;
222
223
  }
@@ -228,13 +229,14 @@ function* deserializingStructIterator(ns, sourceObject, nameTrait) {
228
229
  return;
229
230
  }
230
231
  const struct = ns.getSchema();
231
- let keysRemaining = Object.keys(sourceObject).length;
232
+ let keysRemaining = Object.keys(sourceObject).filter((k) => k !== "__type").length;
232
233
  for (let i = 0; i < struct[4].length; ++i) {
233
234
  if (keysRemaining === 0) {
234
235
  break;
235
236
  }
236
237
  const key = struct[4][i];
237
- const memberNs = new schema.NormalizedSchema([struct[5][i], 0], key);
238
+ const memberSchema = struct[5][i];
239
+ const memberNs = new schema.NormalizedSchema([memberSchema, 0], key);
238
240
  let serializationKey = key;
239
241
  if (nameTrait) {
240
242
  serializationKey = memberNs.getMergedTraits()[nameTrait] ?? key;
@@ -336,38 +338,40 @@ class JsonShapeDeserializer extends SerdeContextConfig {
336
338
  _read(schema$1, value) {
337
339
  const isObject = value !== null && typeof value === "object";
338
340
  const ns = schema.NormalizedSchema.of(schema$1);
339
- if (ns.isListSchema() && Array.isArray(value)) {
340
- const listMember = ns.getValueSchema();
341
- const out = [];
342
- const sparse = !!ns.getMergedTraits().sparse;
343
- for (const item of value) {
344
- if (sparse || item != null) {
345
- out.push(this._read(listMember, item));
341
+ if (isObject) {
342
+ if (ns.isStructSchema()) {
343
+ const out = {};
344
+ for (const [memberName, memberSchema] of deserializingStructIterator(ns, value, this.settings.jsonName ? "jsonName" : false)) {
345
+ const fromKey = this.settings.jsonName ? memberSchema.getMergedTraits().jsonName ?? memberName : memberName;
346
+ const deserializedValue = this._read(memberSchema, value[fromKey]);
347
+ if (deserializedValue != null) {
348
+ out[memberName] = deserializedValue;
349
+ }
346
350
  }
351
+ return out;
347
352
  }
348
- return out;
349
- }
350
- else if (ns.isMapSchema() && isObject) {
351
- const mapMember = ns.getValueSchema();
352
- const out = {};
353
- const sparse = !!ns.getMergedTraits().sparse;
354
- for (const [_k, _v] of Object.entries(value)) {
355
- if (sparse || _v != null) {
356
- out[_k] = this._read(mapMember, _v);
353
+ if (Array.isArray(value) && ns.isListSchema()) {
354
+ const listMember = ns.getValueSchema();
355
+ const out = [];
356
+ const sparse = !!ns.getMergedTraits().sparse;
357
+ for (const item of value) {
358
+ if (sparse || item != null) {
359
+ out.push(this._read(listMember, item));
360
+ }
357
361
  }
362
+ return out;
358
363
  }
359
- return out;
360
- }
361
- else if (ns.isStructSchema() && isObject) {
362
- const out = {};
363
- for (const [memberName, memberSchema] of deserializingStructIterator(ns, value, this.settings.jsonName ? "jsonName" : false)) {
364
- const fromKey = this.settings.jsonName ? memberSchema.getMergedTraits().jsonName ?? memberName : memberName;
365
- const deserializedValue = this._read(memberSchema, value[fromKey]);
366
- if (deserializedValue != null) {
367
- out[memberName] = deserializedValue;
364
+ if (ns.isMapSchema()) {
365
+ const mapMember = ns.getValueSchema();
366
+ const out = {};
367
+ const sparse = !!ns.getMergedTraits().sparse;
368
+ for (const [_k, _v] of Object.entries(value)) {
369
+ if (sparse || _v != null) {
370
+ out[_k] = this._read(mapMember, _v);
371
+ }
368
372
  }
373
+ return out;
369
374
  }
370
- return out;
371
375
  }
372
376
  if (ns.isBlobSchema() && typeof value === "string") {
373
377
  return utilBase64.fromBase64(value);
@@ -378,6 +382,7 @@ class JsonShapeDeserializer extends SerdeContextConfig {
378
382
  if (isJson) {
379
383
  return serde.LazyJsonString.from(value);
380
384
  }
385
+ return value;
381
386
  }
382
387
  if (ns.isTimestampSchema() && value != null) {
383
388
  const format = protocols.determineTimestampFormat(ns, this.settings);
@@ -415,6 +420,7 @@ class JsonShapeDeserializer extends SerdeContextConfig {
415
420
  case "NaN":
416
421
  return NaN;
417
422
  }
423
+ return value;
418
424
  }
419
425
  if (ns.isDocumentSchema()) {
420
426
  if (isObject) {
@@ -486,6 +492,7 @@ class JsonReplacer {
486
492
  class JsonShapeSerializer extends SerdeContextConfig {
487
493
  settings;
488
494
  buffer;
495
+ useReplacer = false;
489
496
  rootSchema;
490
497
  constructor(settings) {
491
498
  super();
@@ -502,9 +509,13 @@ class JsonShapeSerializer extends SerdeContextConfig {
502
509
  }
503
510
  }
504
511
  flush() {
505
- const { rootSchema } = this;
512
+ const { rootSchema, useReplacer } = this;
506
513
  this.rootSchema = undefined;
514
+ this.useReplacer = false;
507
515
  if (rootSchema?.isStructSchema() || rootSchema?.isDocumentSchema()) {
516
+ if (!useReplacer) {
517
+ return JSON.stringify(this.buffer);
518
+ }
508
519
  const replacer = new JsonReplacer();
509
520
  return replacer.replaceInJson(JSON.stringify(this.buffer, replacer.createReplacer(), 0));
510
521
  }
@@ -513,68 +524,68 @@ class JsonShapeSerializer extends SerdeContextConfig {
513
524
  _write(schema$1, value, container) {
514
525
  const isObject = value !== null && typeof value === "object";
515
526
  const ns = schema.NormalizedSchema.of(schema$1);
516
- if (ns.isListSchema() && Array.isArray(value)) {
517
- const listMember = ns.getValueSchema();
518
- const out = [];
519
- const sparse = !!ns.getMergedTraits().sparse;
520
- for (const item of value) {
521
- if (sparse || item != null) {
522
- out.push(this._write(listMember, item));
527
+ if (isObject) {
528
+ if (ns.isStructSchema()) {
529
+ const out = {};
530
+ for (const [memberName, memberSchema] of serializingStructIterator(ns, value)) {
531
+ const serializableValue = this._write(memberSchema, value[memberName], ns);
532
+ if (serializableValue !== undefined) {
533
+ const jsonName = memberSchema.getMergedTraits().jsonName;
534
+ const targetKey = this.settings.jsonName ? jsonName ?? memberName : memberName;
535
+ out[targetKey] = serializableValue;
536
+ }
523
537
  }
538
+ return out;
524
539
  }
525
- return out;
526
- }
527
- else if (ns.isMapSchema() && isObject) {
528
- const mapMember = ns.getValueSchema();
529
- const out = {};
530
- const sparse = !!ns.getMergedTraits().sparse;
531
- for (const [_k, _v] of Object.entries(value)) {
532
- if (sparse || _v != null) {
533
- out[_k] = this._write(mapMember, _v);
540
+ if (Array.isArray(value) && ns.isListSchema()) {
541
+ const listMember = ns.getValueSchema();
542
+ const out = [];
543
+ const sparse = !!ns.getMergedTraits().sparse;
544
+ for (const item of value) {
545
+ if (sparse || item != null) {
546
+ out.push(this._write(listMember, item));
547
+ }
534
548
  }
549
+ return out;
535
550
  }
536
- return out;
537
- }
538
- else if (ns.isStructSchema() && isObject) {
539
- const out = {};
540
- for (const [memberName, memberSchema] of serializingStructIterator(ns, value)) {
541
- const serializableValue = this._write(memberSchema, value[memberName], ns);
542
- if (serializableValue !== undefined) {
543
- const targetKey = this.settings.jsonName ? memberSchema.getMergedTraits().jsonName ?? memberName : memberName;
544
- out[targetKey] = serializableValue;
551
+ if (ns.isMapSchema()) {
552
+ const mapMember = ns.getValueSchema();
553
+ const out = {};
554
+ const sparse = !!ns.getMergedTraits().sparse;
555
+ for (const [_k, _v] of Object.entries(value)) {
556
+ if (sparse || _v != null) {
557
+ out[_k] = this._write(mapMember, _v);
558
+ }
545
559
  }
560
+ return out;
546
561
  }
547
- return out;
548
- }
549
- if (value === null && container?.isStructSchema()) {
550
- return void 0;
551
- }
552
- if ((ns.isBlobSchema() && (value instanceof Uint8Array || typeof value === "string")) ||
553
- (ns.isDocumentSchema() && value instanceof Uint8Array)) {
554
- if (ns === this.rootSchema) {
555
- return value;
562
+ if (value instanceof Uint8Array && (ns.isBlobSchema() || ns.isDocumentSchema())) {
563
+ if (ns === this.rootSchema) {
564
+ return value;
565
+ }
566
+ return (this.serdeContext?.base64Encoder ?? utilBase64.toBase64)(value);
556
567
  }
557
- return (this.serdeContext?.base64Encoder ?? utilBase64.toBase64)(value);
558
- }
559
- if ((ns.isTimestampSchema() || ns.isDocumentSchema()) && value instanceof Date) {
560
- const format = protocols.determineTimestampFormat(ns, this.settings);
561
- switch (format) {
562
- case 5:
563
- return value.toISOString().replace(".000Z", "Z");
564
- case 6:
565
- return serde.dateToUtcString(value);
566
- case 7:
567
- return value.getTime() / 1000;
568
- default:
569
- console.warn("Missing timestamp format, using epoch seconds", value);
570
- return value.getTime() / 1000;
568
+ if (value instanceof Date && (ns.isTimestampSchema() || ns.isDocumentSchema())) {
569
+ const format = protocols.determineTimestampFormat(ns, this.settings);
570
+ switch (format) {
571
+ case 5:
572
+ return value.toISOString().replace(".000Z", "Z");
573
+ case 6:
574
+ return serde.dateToUtcString(value);
575
+ case 7:
576
+ return value.getTime() / 1000;
577
+ default:
578
+ console.warn("Missing timestamp format, using epoch seconds", value);
579
+ return value.getTime() / 1000;
580
+ }
571
581
  }
572
- }
573
- if (ns.isNumericSchema() && typeof value === "number") {
574
- if (Math.abs(value) === Infinity || isNaN(value)) {
575
- return String(value);
582
+ if (value instanceof serde.NumericValue) {
583
+ this.useReplacer = true;
576
584
  }
577
585
  }
586
+ if (value === null && container?.isStructSchema()) {
587
+ return void 0;
588
+ }
578
589
  if (ns.isStringSchema()) {
579
590
  if (typeof value === "undefined" && ns.isIdempotencyToken()) {
580
591
  return serde.generateIdempotencyToken();
@@ -586,12 +597,29 @@ class JsonShapeSerializer extends SerdeContextConfig {
586
597
  return serde.LazyJsonString.from(value);
587
598
  }
588
599
  }
600
+ return value;
601
+ }
602
+ if (typeof value === "number" && ns.isNumericSchema()) {
603
+ if (Math.abs(value) === Infinity || isNaN(value)) {
604
+ return String(value);
605
+ }
606
+ return value;
607
+ }
608
+ if (typeof value === "string" && ns.isBlobSchema()) {
609
+ if (ns === this.rootSchema) {
610
+ return value;
611
+ }
612
+ return (this.serdeContext?.base64Encoder ?? utilBase64.toBase64)(value);
613
+ }
614
+ if (typeof value === "bigint") {
615
+ this.useReplacer = true;
589
616
  }
590
617
  if (ns.isDocumentSchema()) {
591
618
  if (isObject) {
592
619
  const out = Array.isArray(value) ? [] : {};
593
620
  for (const [k, v] of Object.entries(value)) {
594
621
  if (v instanceof serde.NumericValue) {
622
+ this.useReplacer = true;
595
623
  out[k] = v;
596
624
  }
597
625
  else {
@@ -633,18 +661,20 @@ class AwsJsonRpcProtocol extends protocols.RpcProtocol {
633
661
  codec;
634
662
  mixin;
635
663
  awsQueryCompatible;
636
- constructor({ defaultNamespace, serviceTarget, awsQueryCompatible, }) {
664
+ constructor({ defaultNamespace, serviceTarget, awsQueryCompatible, jsonCodec, }) {
637
665
  super({
638
666
  defaultNamespace,
639
667
  });
640
668
  this.serviceTarget = serviceTarget;
641
- this.codec = new JsonCodec({
642
- timestampFormat: {
643
- useTrait: true,
644
- default: 7,
645
- },
646
- jsonName: false,
647
- });
669
+ this.codec =
670
+ jsonCodec ??
671
+ new JsonCodec({
672
+ timestampFormat: {
673
+ useTrait: true,
674
+ default: 7,
675
+ },
676
+ jsonName: false,
677
+ });
648
678
  this.serializer = this.codec.createSerializer();
649
679
  this.deserializer = this.codec.createDeserializer();
650
680
  this.awsQueryCompatible = !!awsQueryCompatible;
@@ -696,11 +726,12 @@ class AwsJsonRpcProtocol extends protocols.RpcProtocol {
696
726
  }
697
727
 
698
728
  class AwsJson1_0Protocol extends AwsJsonRpcProtocol {
699
- constructor({ defaultNamespace, serviceTarget, awsQueryCompatible, }) {
729
+ constructor({ defaultNamespace, serviceTarget, awsQueryCompatible, jsonCodec, }) {
700
730
  super({
701
731
  defaultNamespace,
702
732
  serviceTarget,
703
733
  awsQueryCompatible,
734
+ jsonCodec,
704
735
  });
705
736
  }
706
737
  getShapeId() {
@@ -715,11 +746,12 @@ class AwsJson1_0Protocol extends AwsJsonRpcProtocol {
715
746
  }
716
747
 
717
748
  class AwsJson1_1Protocol extends AwsJsonRpcProtocol {
718
- constructor({ defaultNamespace, serviceTarget, awsQueryCompatible, }) {
749
+ constructor({ defaultNamespace, serviceTarget, awsQueryCompatible, jsonCodec, }) {
719
750
  super({
720
751
  defaultNamespace,
721
752
  serviceTarget,
722
753
  awsQueryCompatible,
754
+ jsonCodec,
723
755
  });
724
756
  }
725
757
  getShapeId() {
@@ -1,10 +1,11 @@
1
1
  import { AwsJsonRpcProtocol } from "./AwsJsonRpcProtocol";
2
2
  export class AwsJson1_0Protocol extends AwsJsonRpcProtocol {
3
- constructor({ defaultNamespace, serviceTarget, awsQueryCompatible, }) {
3
+ constructor({ defaultNamespace, serviceTarget, awsQueryCompatible, jsonCodec, }) {
4
4
  super({
5
5
  defaultNamespace,
6
6
  serviceTarget,
7
7
  awsQueryCompatible,
8
+ jsonCodec,
8
9
  });
9
10
  }
10
11
  getShapeId() {
@@ -1,10 +1,11 @@
1
1
  import { AwsJsonRpcProtocol } from "./AwsJsonRpcProtocol";
2
2
  export class AwsJson1_1Protocol extends AwsJsonRpcProtocol {
3
- constructor({ defaultNamespace, serviceTarget, awsQueryCompatible, }) {
3
+ constructor({ defaultNamespace, serviceTarget, awsQueryCompatible, jsonCodec, }) {
4
4
  super({
5
5
  defaultNamespace,
6
6
  serviceTarget,
7
7
  awsQueryCompatible,
8
+ jsonCodec,
8
9
  });
9
10
  }
10
11
  getShapeId() {
@@ -10,18 +10,20 @@ export class AwsJsonRpcProtocol extends RpcProtocol {
10
10
  codec;
11
11
  mixin;
12
12
  awsQueryCompatible;
13
- constructor({ defaultNamespace, serviceTarget, awsQueryCompatible, }) {
13
+ constructor({ defaultNamespace, serviceTarget, awsQueryCompatible, jsonCodec, }) {
14
14
  super({
15
15
  defaultNamespace,
16
16
  });
17
17
  this.serviceTarget = serviceTarget;
18
- this.codec = new JsonCodec({
19
- timestampFormat: {
20
- useTrait: true,
21
- default: 7,
22
- },
23
- jsonName: false,
24
- });
18
+ this.codec =
19
+ jsonCodec ??
20
+ new JsonCodec({
21
+ timestampFormat: {
22
+ useTrait: true,
23
+ default: 7,
24
+ },
25
+ jsonName: false,
26
+ });
25
27
  this.serializer = this.codec.createSerializer();
26
28
  this.deserializer = this.codec.createDeserializer();
27
29
  this.awsQueryCompatible = !!awsQueryCompatible;
@@ -21,38 +21,40 @@ export class JsonShapeDeserializer extends SerdeContextConfig {
21
21
  _read(schema, value) {
22
22
  const isObject = value !== null && typeof value === "object";
23
23
  const ns = NormalizedSchema.of(schema);
24
- if (ns.isListSchema() && Array.isArray(value)) {
25
- const listMember = ns.getValueSchema();
26
- const out = [];
27
- const sparse = !!ns.getMergedTraits().sparse;
28
- for (const item of value) {
29
- if (sparse || item != null) {
30
- out.push(this._read(listMember, item));
24
+ if (isObject) {
25
+ if (ns.isStructSchema()) {
26
+ const out = {};
27
+ for (const [memberName, memberSchema] of deserializingStructIterator(ns, value, this.settings.jsonName ? "jsonName" : false)) {
28
+ const fromKey = this.settings.jsonName ? memberSchema.getMergedTraits().jsonName ?? memberName : memberName;
29
+ const deserializedValue = this._read(memberSchema, value[fromKey]);
30
+ if (deserializedValue != null) {
31
+ out[memberName] = deserializedValue;
32
+ }
31
33
  }
34
+ return out;
32
35
  }
33
- return out;
34
- }
35
- else if (ns.isMapSchema() && isObject) {
36
- const mapMember = ns.getValueSchema();
37
- const out = {};
38
- const sparse = !!ns.getMergedTraits().sparse;
39
- for (const [_k, _v] of Object.entries(value)) {
40
- if (sparse || _v != null) {
41
- out[_k] = this._read(mapMember, _v);
36
+ if (Array.isArray(value) && ns.isListSchema()) {
37
+ const listMember = ns.getValueSchema();
38
+ const out = [];
39
+ const sparse = !!ns.getMergedTraits().sparse;
40
+ for (const item of value) {
41
+ if (sparse || item != null) {
42
+ out.push(this._read(listMember, item));
43
+ }
42
44
  }
45
+ return out;
43
46
  }
44
- return out;
45
- }
46
- else if (ns.isStructSchema() && isObject) {
47
- const out = {};
48
- for (const [memberName, memberSchema] of deserializingStructIterator(ns, value, this.settings.jsonName ? "jsonName" : false)) {
49
- const fromKey = this.settings.jsonName ? memberSchema.getMergedTraits().jsonName ?? memberName : memberName;
50
- const deserializedValue = this._read(memberSchema, value[fromKey]);
51
- if (deserializedValue != null) {
52
- out[memberName] = deserializedValue;
47
+ if (ns.isMapSchema()) {
48
+ const mapMember = ns.getValueSchema();
49
+ const out = {};
50
+ const sparse = !!ns.getMergedTraits().sparse;
51
+ for (const [_k, _v] of Object.entries(value)) {
52
+ if (sparse || _v != null) {
53
+ out[_k] = this._read(mapMember, _v);
54
+ }
53
55
  }
56
+ return out;
54
57
  }
55
- return out;
56
58
  }
57
59
  if (ns.isBlobSchema() && typeof value === "string") {
58
60
  return fromBase64(value);
@@ -63,6 +65,7 @@ export class JsonShapeDeserializer extends SerdeContextConfig {
63
65
  if (isJson) {
64
66
  return LazyJsonString.from(value);
65
67
  }
68
+ return value;
66
69
  }
67
70
  if (ns.isTimestampSchema() && value != null) {
68
71
  const format = determineTimestampFormat(ns, this.settings);
@@ -100,6 +103,7 @@ export class JsonShapeDeserializer extends SerdeContextConfig {
100
103
  case "NaN":
101
104
  return NaN;
102
105
  }
106
+ return value;
103
107
  }
104
108
  if (ns.isDocumentSchema()) {
105
109
  if (isObject) {