@cdk8s/awscdk-resolver 0.0.300 → 0.0.302

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 (144) hide show
  1. package/.jsii +3 -3
  2. package/lib/resolve.js +1 -1
  3. package/node_modules/@smithy/abort-controller/package.json +2 -2
  4. package/node_modules/@smithy/config-resolver/package.json +4 -4
  5. package/node_modules/@smithy/core/dist-cjs/submodules/cbor/index.js +209 -0
  6. package/node_modules/@smithy/core/dist-cjs/submodules/protocols/index.js +667 -2
  7. package/node_modules/@smithy/core/dist-cjs/submodules/schema/index.js +771 -0
  8. package/node_modules/@smithy/core/dist-cjs/submodules/serde/index.js +108 -53
  9. package/node_modules/@smithy/core/dist-es/submodules/cbor/CborCodec.js +136 -0
  10. package/node_modules/@smithy/core/dist-es/submodules/cbor/SmithyRpcV2CborProtocol.js +74 -0
  11. package/node_modules/@smithy/core/dist-es/submodules/cbor/index.js +3 -1
  12. package/node_modules/@smithy/core/dist-es/submodules/protocols/HttpBindingProtocol.js +183 -0
  13. package/node_modules/@smithy/core/dist-es/submodules/protocols/HttpProtocol.js +164 -0
  14. package/node_modules/@smithy/core/dist-es/submodules/protocols/RpcProtocol.js +68 -0
  15. package/node_modules/@smithy/core/dist-es/submodules/protocols/index.js +7 -0
  16. package/node_modules/@smithy/core/dist-es/submodules/protocols/serde/FromStringShapeDeserializer.js +64 -0
  17. package/node_modules/@smithy/core/dist-es/submodules/protocols/serde/HttpInterceptingShapeDeserializer.js +38 -0
  18. package/node_modules/@smithy/core/dist-es/submodules/protocols/serde/HttpInterceptingShapeSerializer.js +30 -0
  19. package/node_modules/@smithy/core/dist-es/submodules/protocols/serde/ToStringShapeSerializer.js +87 -0
  20. package/node_modules/@smithy/core/dist-es/submodules/protocols/serde/determineTimestampFormat.js +20 -0
  21. package/node_modules/@smithy/core/dist-es/submodules/schema/TypeRegistry.js +49 -0
  22. package/node_modules/@smithy/core/dist-es/submodules/schema/deref.js +6 -0
  23. package/node_modules/@smithy/core/dist-es/submodules/schema/index.js +12 -0
  24. package/node_modules/@smithy/core/dist-es/submodules/schema/middleware/getSchemaSerdePlugin.js +23 -0
  25. package/node_modules/@smithy/core/dist-es/submodules/schema/middleware/schema-middleware-types.js +1 -0
  26. package/node_modules/@smithy/core/dist-es/submodules/schema/middleware/schemaDeserializationMiddleware.js +60 -0
  27. package/node_modules/@smithy/core/dist-es/submodules/schema/middleware/schemaSerializationMiddleware.js +16 -0
  28. package/node_modules/@smithy/core/dist-es/submodules/schema/schemas/ErrorSchema.js +17 -0
  29. package/node_modules/@smithy/core/dist-es/submodules/schema/schemas/ListSchema.js +15 -0
  30. package/node_modules/@smithy/core/dist-es/submodules/schema/schemas/MapSchema.js +16 -0
  31. package/node_modules/@smithy/core/dist-es/submodules/schema/schemas/NormalizedSchema.js +291 -0
  32. package/node_modules/@smithy/core/dist-es/submodules/schema/schemas/OperationSchema.js +16 -0
  33. package/node_modules/@smithy/core/dist-es/submodules/schema/schemas/Schema.js +6 -0
  34. package/node_modules/@smithy/core/dist-es/submodules/schema/schemas/SimpleSchema.js +15 -0
  35. package/node_modules/@smithy/core/dist-es/submodules/schema/schemas/StructureSchema.js +22 -0
  36. package/node_modules/@smithy/core/dist-es/submodules/schema/schemas/sentinels.js +16 -0
  37. package/node_modules/@smithy/core/dist-es/submodules/serde/copyDocumentWithTransform.js +53 -0
  38. package/node_modules/@smithy/core/dist-es/submodules/serde/index.js +4 -3
  39. package/node_modules/@smithy/core/dist-types/submodules/cbor/CborCodec.d.ts +29 -0
  40. package/node_modules/@smithy/core/dist-types/submodules/cbor/SmithyRpcV2CborProtocol.d.ts +22 -0
  41. package/node_modules/@smithy/core/dist-types/submodules/cbor/index.d.ts +3 -1
  42. package/node_modules/@smithy/core/dist-types/submodules/protocols/HttpBindingProtocol.d.ts +15 -0
  43. package/node_modules/@smithy/core/dist-types/submodules/protocols/HttpProtocol.d.ts +29 -0
  44. package/node_modules/@smithy/core/dist-types/submodules/protocols/RpcProtocol.d.ts +11 -0
  45. package/node_modules/@smithy/core/dist-types/submodules/protocols/index.d.ts +7 -0
  46. package/node_modules/@smithy/core/dist-types/submodules/protocols/serde/FromStringShapeDeserializer.d.ts +14 -0
  47. package/node_modules/@smithy/core/dist-types/submodules/protocols/serde/HttpInterceptingShapeDeserializer.d.ts +18 -0
  48. package/node_modules/@smithy/core/dist-types/submodules/protocols/serde/HttpInterceptingShapeSerializer.d.ts +20 -0
  49. package/node_modules/@smithy/core/dist-types/submodules/protocols/serde/ToStringShapeSerializer.d.ts +15 -0
  50. package/node_modules/@smithy/core/dist-types/submodules/protocols/serde/determineTimestampFormat.d.ts +9 -0
  51. package/node_modules/@smithy/core/dist-types/submodules/schema/TypeRegistry.d.ts +55 -0
  52. package/node_modules/@smithy/core/dist-types/submodules/schema/deref.d.ts +6 -0
  53. package/node_modules/@smithy/core/dist-types/submodules/schema/index.d.ts +12 -0
  54. package/node_modules/@smithy/core/dist-types/submodules/schema/middleware/getSchemaSerdePlugin.d.ts +14 -0
  55. package/node_modules/@smithy/core/dist-types/submodules/schema/middleware/schema-middleware-types.d.ts +8 -0
  56. package/node_modules/@smithy/core/dist-types/submodules/schema/middleware/schemaDeserializationMiddleware.d.ts +9 -0
  57. package/node_modules/@smithy/core/dist-types/submodules/schema/middleware/schemaSerializationMiddleware.d.ts +6 -0
  58. package/node_modules/@smithy/core/dist-types/submodules/schema/schemas/ErrorSchema.d.ts +38 -0
  59. package/node_modules/@smithy/core/dist-types/submodules/schema/schemas/ListSchema.d.ts +20 -0
  60. package/node_modules/@smithy/core/dist-types/submodules/schema/schemas/MapSchema.d.ts +25 -0
  61. package/node_modules/@smithy/core/dist-types/submodules/schema/schemas/NormalizedSchema.d.ts +122 -0
  62. package/node_modules/@smithy/core/dist-types/submodules/schema/schemas/OperationSchema.d.ts +20 -0
  63. package/node_modules/@smithy/core/dist-types/submodules/schema/schemas/Schema.d.ts +11 -0
  64. package/node_modules/@smithy/core/dist-types/submodules/schema/schemas/SimpleSchema.d.ts +20 -0
  65. package/node_modules/@smithy/core/dist-types/submodules/schema/schemas/StructureSchema.d.ts +21 -0
  66. package/node_modules/@smithy/core/dist-types/submodules/schema/schemas/sentinels.d.ts +21 -0
  67. package/node_modules/@smithy/core/dist-types/submodules/serde/copyDocumentWithTransform.d.ts +5 -0
  68. package/node_modules/@smithy/core/dist-types/submodules/serde/index.d.ts +4 -3
  69. package/node_modules/@smithy/core/dist-types/ts3.4/submodules/cbor/CborCodec.d.ts +29 -0
  70. package/node_modules/@smithy/core/dist-types/ts3.4/submodules/cbor/SmithyRpcV2CborProtocol.d.ts +22 -0
  71. package/node_modules/@smithy/core/dist-types/ts3.4/submodules/cbor/index.d.ts +3 -1
  72. package/node_modules/@smithy/core/dist-types/ts3.4/submodules/protocols/HttpBindingProtocol.d.ts +15 -0
  73. package/node_modules/@smithy/core/dist-types/ts3.4/submodules/protocols/HttpProtocol.d.ts +29 -0
  74. package/node_modules/@smithy/core/dist-types/ts3.4/submodules/protocols/RpcProtocol.d.ts +11 -0
  75. package/node_modules/@smithy/core/dist-types/ts3.4/submodules/protocols/index.d.ts +7 -0
  76. package/node_modules/@smithy/core/dist-types/ts3.4/submodules/protocols/serde/FromStringShapeDeserializer.d.ts +14 -0
  77. package/node_modules/@smithy/core/dist-types/ts3.4/submodules/protocols/serde/HttpInterceptingShapeDeserializer.d.ts +18 -0
  78. package/node_modules/@smithy/core/dist-types/ts3.4/submodules/protocols/serde/HttpInterceptingShapeSerializer.d.ts +20 -0
  79. package/node_modules/@smithy/core/dist-types/ts3.4/submodules/protocols/serde/ToStringShapeSerializer.d.ts +15 -0
  80. package/node_modules/@smithy/core/dist-types/ts3.4/submodules/protocols/serde/determineTimestampFormat.d.ts +9 -0
  81. package/node_modules/@smithy/core/dist-types/ts3.4/submodules/schema/TypeRegistry.d.ts +55 -0
  82. package/node_modules/@smithy/core/dist-types/ts3.4/submodules/schema/deref.d.ts +6 -0
  83. package/node_modules/@smithy/core/dist-types/ts3.4/submodules/schema/index.d.ts +12 -0
  84. package/node_modules/@smithy/core/dist-types/ts3.4/submodules/schema/middleware/getSchemaSerdePlugin.d.ts +14 -0
  85. package/node_modules/@smithy/core/dist-types/ts3.4/submodules/schema/middleware/schema-middleware-types.d.ts +11 -0
  86. package/node_modules/@smithy/core/dist-types/ts3.4/submodules/schema/middleware/schemaDeserializationMiddleware.d.ts +9 -0
  87. package/node_modules/@smithy/core/dist-types/ts3.4/submodules/schema/middleware/schemaSerializationMiddleware.d.ts +6 -0
  88. package/node_modules/@smithy/core/dist-types/ts3.4/submodules/schema/schemas/ErrorSchema.d.ts +38 -0
  89. package/node_modules/@smithy/core/dist-types/ts3.4/submodules/schema/schemas/ListSchema.d.ts +20 -0
  90. package/node_modules/@smithy/core/dist-types/ts3.4/submodules/schema/schemas/MapSchema.d.ts +25 -0
  91. package/node_modules/@smithy/core/dist-types/ts3.4/submodules/schema/schemas/NormalizedSchema.d.ts +125 -0
  92. package/node_modules/@smithy/core/dist-types/ts3.4/submodules/schema/schemas/OperationSchema.d.ts +20 -0
  93. package/node_modules/@smithy/core/dist-types/ts3.4/submodules/schema/schemas/Schema.d.ts +11 -0
  94. package/node_modules/@smithy/core/dist-types/ts3.4/submodules/schema/schemas/SimpleSchema.d.ts +20 -0
  95. package/node_modules/@smithy/core/dist-types/ts3.4/submodules/schema/schemas/StructureSchema.d.ts +24 -0
  96. package/node_modules/@smithy/core/dist-types/ts3.4/submodules/schema/schemas/sentinels.d.ts +21 -0
  97. package/node_modules/@smithy/core/dist-types/ts3.4/submodules/serde/copyDocumentWithTransform.d.ts +5 -0
  98. package/node_modules/@smithy/core/dist-types/ts3.4/submodules/serde/index.d.ts +4 -3
  99. package/node_modules/@smithy/core/package.json +17 -7
  100. package/node_modules/@smithy/core/schema.d.ts +7 -0
  101. package/node_modules/@smithy/core/schema.js +6 -0
  102. package/node_modules/@smithy/credential-provider-imds/package.json +5 -5
  103. package/node_modules/@smithy/fetch-http-handler/package.json +5 -5
  104. package/node_modules/@smithy/hash-node/package.json +2 -2
  105. package/node_modules/@smithy/invalid-dependency/package.json +2 -2
  106. package/node_modules/@smithy/middleware-content-length/package.json +3 -3
  107. package/node_modules/@smithy/middleware-endpoint/package.json +8 -8
  108. package/node_modules/@smithy/middleware-retry/package.json +8 -8
  109. package/node_modules/@smithy/middleware-serde/dist-types/deserializerMiddleware.d.ts +1 -0
  110. package/node_modules/@smithy/middleware-serde/dist-types/serdePlugin.d.ts +7 -1
  111. package/node_modules/@smithy/middleware-serde/dist-types/serializerMiddleware.d.ts +1 -0
  112. package/node_modules/@smithy/middleware-serde/dist-types/ts3.4/deserializerMiddleware.d.ts +1 -0
  113. package/node_modules/@smithy/middleware-serde/dist-types/ts3.4/serdePlugin.d.ts +7 -1
  114. package/node_modules/@smithy/middleware-serde/dist-types/ts3.4/serializerMiddleware.d.ts +1 -0
  115. package/node_modules/@smithy/middleware-serde/package.json +3 -3
  116. package/node_modules/@smithy/middleware-stack/package.json +2 -2
  117. package/node_modules/@smithy/node-config-provider/package.json +4 -4
  118. package/node_modules/@smithy/node-http-handler/package.json +5 -5
  119. package/node_modules/@smithy/property-provider/package.json +2 -2
  120. package/node_modules/@smithy/protocol-http/package.json +2 -2
  121. package/node_modules/@smithy/querystring-builder/package.json +2 -2
  122. package/node_modules/@smithy/querystring-parser/package.json +2 -2
  123. package/node_modules/@smithy/service-error-classification/package.json +2 -2
  124. package/node_modules/@smithy/shared-ini-file-loader/package.json +2 -2
  125. package/node_modules/@smithy/signature-v4/package.json +4 -4
  126. package/node_modules/@smithy/smithy-client/dist-cjs/index.js +10 -0
  127. package/node_modules/@smithy/smithy-client/dist-es/command.js +6 -0
  128. package/node_modules/@smithy/smithy-client/dist-types/command.d.ts +7 -1
  129. package/node_modules/@smithy/smithy-client/dist-types/ts3.4/command.d.ts +7 -1
  130. package/node_modules/@smithy/smithy-client/package.json +7 -7
  131. package/node_modules/@smithy/types/dist-types/command.d.ts +5 -2
  132. package/node_modules/@smithy/types/dist-types/schema/schema.d.ts +2 -4
  133. package/node_modules/@smithy/types/dist-types/ts3.4/command.d.ts +5 -2
  134. package/node_modules/@smithy/types/dist-types/ts3.4/schema/schema.d.ts +2 -4
  135. package/node_modules/@smithy/types/package.json +1 -1
  136. package/node_modules/@smithy/url-parser/package.json +3 -3
  137. package/node_modules/@smithy/util-defaults-mode-browser/package.json +4 -4
  138. package/node_modules/@smithy/util-defaults-mode-node/package.json +7 -7
  139. package/node_modules/@smithy/util-endpoints/package.json +3 -3
  140. package/node_modules/@smithy/util-middleware/package.json +2 -2
  141. package/node_modules/@smithy/util-retry/package.json +3 -3
  142. package/node_modules/@smithy/util-stream/package.json +4 -4
  143. package/node_modules/@smithy/util-waiter/package.json +3 -3
  144. package/package.json +5 -5
@@ -21,6 +21,7 @@ var serde_exports = {};
21
21
  __export(serde_exports, {
22
22
  LazyJsonString: () => LazyJsonString,
23
23
  NumericValue: () => NumericValue,
24
+ copyDocumentWithTransform: () => copyDocumentWithTransform,
24
25
  dateToUtcString: () => dateToUtcString,
25
26
  expectBoolean: () => expectBoolean,
26
27
  expectByte: () => expectByte,
@@ -59,6 +60,59 @@ __export(serde_exports, {
59
60
  });
60
61
  module.exports = __toCommonJS(serde_exports);
61
62
 
63
+ // src/submodules/serde/copyDocumentWithTransform.ts
64
+ var import_schema = require("@smithy/core/schema");
65
+ var copyDocumentWithTransform = (source, schemaRef, transform = (_) => _) => {
66
+ const ns = import_schema.NormalizedSchema.of(schemaRef);
67
+ switch (typeof source) {
68
+ case "undefined":
69
+ case "boolean":
70
+ case "number":
71
+ case "string":
72
+ case "bigint":
73
+ case "symbol":
74
+ return transform(source, ns);
75
+ case "function":
76
+ case "object":
77
+ if (source === null) {
78
+ return transform(null, ns);
79
+ }
80
+ if (Array.isArray(source)) {
81
+ const newArray = new Array(source.length);
82
+ let i = 0;
83
+ for (const item of source) {
84
+ newArray[i++] = copyDocumentWithTransform(item, ns.getValueSchema(), transform);
85
+ }
86
+ return transform(newArray, ns);
87
+ }
88
+ if ("byteLength" in source) {
89
+ const newBytes = new Uint8Array(source.byteLength);
90
+ newBytes.set(source, 0);
91
+ return transform(newBytes, ns);
92
+ }
93
+ if (source instanceof Date) {
94
+ return transform(source, ns);
95
+ }
96
+ const newObject = {};
97
+ if (ns.isMapSchema()) {
98
+ for (const key of Object.keys(source)) {
99
+ newObject[key] = copyDocumentWithTransform(source[key], ns.getValueSchema(), transform);
100
+ }
101
+ } else if (ns.isStructSchema()) {
102
+ for (const [key, memberSchema] of ns.structIterator()) {
103
+ newObject[key] = copyDocumentWithTransform(source[key], memberSchema, transform);
104
+ }
105
+ } else if (ns.isDocumentSchema()) {
106
+ for (const key of Object.keys(source)) {
107
+ newObject[key] = copyDocumentWithTransform(source[key], ns.getValueSchema(), transform);
108
+ }
109
+ }
110
+ return transform(newObject, ns);
111
+ default:
112
+ return transform(source, ns);
113
+ }
114
+ };
115
+
62
116
  // src/submodules/serde/parse-utils.ts
63
117
  var parseBoolean = (value) => {
64
118
  switch (value) {
@@ -512,6 +566,31 @@ var stripLeadingZeroes = (value) => {
512
566
  return value.slice(idx);
513
567
  };
514
568
 
569
+ // src/submodules/serde/lazy-json.ts
570
+ var LazyJsonString = function LazyJsonString2(val) {
571
+ const str = Object.assign(new String(val), {
572
+ deserializeJSON() {
573
+ return JSON.parse(String(val));
574
+ },
575
+ toString() {
576
+ return String(val);
577
+ },
578
+ toJSON() {
579
+ return String(val);
580
+ }
581
+ });
582
+ return str;
583
+ };
584
+ LazyJsonString.from = (object) => {
585
+ if (object && typeof object === "object" && (object instanceof LazyJsonString || "deserializeJSON" in object)) {
586
+ return object;
587
+ } else if (typeof object === "string" || Object.getPrototypeOf(object) === String.prototype) {
588
+ return LazyJsonString(String(object));
589
+ }
590
+ return LazyJsonString(JSON.stringify(object));
591
+ };
592
+ LazyJsonString.fromObject = LazyJsonString.from;
593
+
515
594
  // src/submodules/serde/quote-header.ts
516
595
  function quoteHeader(part) {
517
596
  if (part.includes(",") || part.includes('"')) {
@@ -520,6 +599,34 @@ function quoteHeader(part) {
520
599
  return part;
521
600
  }
522
601
 
602
+ // src/submodules/serde/split-every.ts
603
+ function splitEvery(value, delimiter, numDelimiters) {
604
+ if (numDelimiters <= 0 || !Number.isInteger(numDelimiters)) {
605
+ throw new Error("Invalid number of delimiters (" + numDelimiters + ") for splitEvery.");
606
+ }
607
+ const segments = value.split(delimiter);
608
+ if (numDelimiters === 1) {
609
+ return segments;
610
+ }
611
+ const compoundSegments = [];
612
+ let currentSegment = "";
613
+ for (let i = 0; i < segments.length; i++) {
614
+ if (currentSegment === "") {
615
+ currentSegment = segments[i];
616
+ } else {
617
+ currentSegment += delimiter + segments[i];
618
+ }
619
+ if ((i + 1) % numDelimiters === 0) {
620
+ compoundSegments.push(currentSegment);
621
+ currentSegment = "";
622
+ }
623
+ }
624
+ if (currentSegment !== "") {
625
+ compoundSegments.push(currentSegment);
626
+ }
627
+ return compoundSegments;
628
+ }
629
+
523
630
  // src/submodules/serde/split-header.ts
524
631
  var splitHeader = (value) => {
525
632
  const z = value.length;
@@ -569,63 +676,11 @@ var NumericValue = class {
569
676
  function nv(string) {
570
677
  return new NumericValue(string, "bigDecimal");
571
678
  }
572
-
573
- // src/submodules/serde/lazy-json.ts
574
- var LazyJsonString = function LazyJsonString2(val) {
575
- const str = Object.assign(new String(val), {
576
- deserializeJSON() {
577
- return JSON.parse(String(val));
578
- },
579
- toString() {
580
- return String(val);
581
- },
582
- toJSON() {
583
- return String(val);
584
- }
585
- });
586
- return str;
587
- };
588
- LazyJsonString.from = (object) => {
589
- if (object && typeof object === "object" && (object instanceof LazyJsonString || "deserializeJSON" in object)) {
590
- return object;
591
- } else if (typeof object === "string" || Object.getPrototypeOf(object) === String.prototype) {
592
- return LazyJsonString(String(object));
593
- }
594
- return LazyJsonString(JSON.stringify(object));
595
- };
596
- LazyJsonString.fromObject = LazyJsonString.from;
597
-
598
- // src/submodules/serde/split-every.ts
599
- function splitEvery(value, delimiter, numDelimiters) {
600
- if (numDelimiters <= 0 || !Number.isInteger(numDelimiters)) {
601
- throw new Error("Invalid number of delimiters (" + numDelimiters + ") for splitEvery.");
602
- }
603
- const segments = value.split(delimiter);
604
- if (numDelimiters === 1) {
605
- return segments;
606
- }
607
- const compoundSegments = [];
608
- let currentSegment = "";
609
- for (let i = 0; i < segments.length; i++) {
610
- if (currentSegment === "") {
611
- currentSegment = segments[i];
612
- } else {
613
- currentSegment += delimiter + segments[i];
614
- }
615
- if ((i + 1) % numDelimiters === 0) {
616
- compoundSegments.push(currentSegment);
617
- currentSegment = "";
618
- }
619
- }
620
- if (currentSegment !== "") {
621
- compoundSegments.push(currentSegment);
622
- }
623
- return compoundSegments;
624
- }
625
679
  // Annotate the CommonJS export names for ESM import in node:
626
680
  0 && (module.exports = {
627
681
  LazyJsonString,
628
682
  NumericValue,
683
+ copyDocumentWithTransform,
629
684
  dateToUtcString,
630
685
  expectBoolean,
631
686
  expectByte,
@@ -0,0 +1,136 @@
1
+ import { NormalizedSchema } from "@smithy/core/schema";
2
+ import { copyDocumentWithTransform, parseEpochTimestamp } from "@smithy/core/serde";
3
+ import { cbor } from "./cbor";
4
+ import { dateToTag } from "./parseCborBody";
5
+ export class CborCodec {
6
+ createSerializer() {
7
+ const serializer = new CborShapeSerializer();
8
+ serializer.setSerdeContext(this.serdeContext);
9
+ return serializer;
10
+ }
11
+ createDeserializer() {
12
+ const deserializer = new CborShapeDeserializer();
13
+ deserializer.setSerdeContext(this.serdeContext);
14
+ return deserializer;
15
+ }
16
+ setSerdeContext(serdeContext) {
17
+ this.serdeContext = serdeContext;
18
+ }
19
+ }
20
+ export class CborShapeSerializer {
21
+ setSerdeContext(serdeContext) {
22
+ this.serdeContext = serdeContext;
23
+ }
24
+ write(schema, value) {
25
+ this.value = copyDocumentWithTransform(value, schema, (_, schemaRef) => {
26
+ if (_ instanceof Date) {
27
+ return dateToTag(_);
28
+ }
29
+ if (_ instanceof Uint8Array) {
30
+ return _;
31
+ }
32
+ const ns = NormalizedSchema.of(schemaRef);
33
+ const sparse = !!ns.getMergedTraits().sparse;
34
+ if (ns.isListSchema() && Array.isArray(_)) {
35
+ if (!sparse) {
36
+ return _.filter((item) => item != null);
37
+ }
38
+ }
39
+ else if (_ && typeof _ === "object") {
40
+ const members = ns.getMemberSchemas();
41
+ const isStruct = ns.isStructSchema();
42
+ if (!sparse || isStruct) {
43
+ for (const [k, v] of Object.entries(_)) {
44
+ const filteredOutByNonSparse = !sparse && v == null;
45
+ const filteredOutByUnrecognizedMember = isStruct && !(k in members);
46
+ if (filteredOutByNonSparse || filteredOutByUnrecognizedMember) {
47
+ delete _[k];
48
+ }
49
+ }
50
+ return _;
51
+ }
52
+ }
53
+ return _;
54
+ });
55
+ }
56
+ flush() {
57
+ const buffer = cbor.serialize(this.value);
58
+ this.value = undefined;
59
+ return buffer;
60
+ }
61
+ }
62
+ export class CborShapeDeserializer {
63
+ setSerdeContext(serdeContext) {
64
+ this.serdeContext = serdeContext;
65
+ }
66
+ read(schema, bytes) {
67
+ const data = cbor.deserialize(bytes);
68
+ return this.readValue(schema, data);
69
+ }
70
+ readValue(_schema, value) {
71
+ const ns = NormalizedSchema.of(_schema);
72
+ const schema = ns.getSchema();
73
+ if (typeof schema === "number") {
74
+ if (ns.isTimestampSchema()) {
75
+ return parseEpochTimestamp(value);
76
+ }
77
+ if (ns.isBlobSchema()) {
78
+ return value;
79
+ }
80
+ }
81
+ if (typeof value === "undefined" ||
82
+ typeof value === "boolean" ||
83
+ typeof value === "number" ||
84
+ typeof value === "string" ||
85
+ typeof value === "bigint" ||
86
+ typeof value === "symbol") {
87
+ return value;
88
+ }
89
+ else if (typeof value === "function" || typeof value === "object") {
90
+ if (value === null) {
91
+ return null;
92
+ }
93
+ if ("byteLength" in value) {
94
+ return value;
95
+ }
96
+ if (value instanceof Date) {
97
+ return value;
98
+ }
99
+ if (ns.isDocumentSchema()) {
100
+ return value;
101
+ }
102
+ if (ns.isListSchema()) {
103
+ const newArray = [];
104
+ const memberSchema = ns.getValueSchema();
105
+ const sparse = ns.isListSchema() && !!ns.getMergedTraits().sparse;
106
+ for (const item of value) {
107
+ newArray.push(this.readValue(memberSchema, item));
108
+ if (!sparse && newArray[newArray.length - 1] == null) {
109
+ newArray.pop();
110
+ }
111
+ }
112
+ return newArray;
113
+ }
114
+ const newObject = {};
115
+ if (ns.isMapSchema()) {
116
+ const sparse = ns.getMergedTraits().sparse;
117
+ const targetSchema = ns.getValueSchema();
118
+ for (const key of Object.keys(value)) {
119
+ newObject[key] = this.readValue(targetSchema, value[key]);
120
+ if (newObject[key] == null && !sparse) {
121
+ delete newObject[key];
122
+ }
123
+ }
124
+ }
125
+ else if (ns.isStructSchema()) {
126
+ for (const [key, memberSchema] of ns.structIterator()) {
127
+ newObject[key] = this.readValue(memberSchema, value[key]);
128
+ }
129
+ }
130
+ return newObject;
131
+ }
132
+ else {
133
+ return value;
134
+ }
135
+ }
136
+ }
@@ -0,0 +1,74 @@
1
+ import { RpcProtocol } from "@smithy/core/protocols";
2
+ import { deref, TypeRegistry } from "@smithy/core/schema";
3
+ import { getSmithyContext } from "@smithy/util-middleware";
4
+ import { CborCodec } from "./CborCodec";
5
+ import { loadSmithyRpcV2CborErrorCode } from "./parseCborBody";
6
+ export class SmithyRpcV2CborProtocol extends RpcProtocol {
7
+ constructor({ defaultNamespace }) {
8
+ super({ defaultNamespace });
9
+ this.codec = new CborCodec();
10
+ this.serializer = this.codec.createSerializer();
11
+ this.deserializer = this.codec.createDeserializer();
12
+ }
13
+ getShapeId() {
14
+ return "smithy.protocols#rpcv2Cbor";
15
+ }
16
+ getPayloadCodec() {
17
+ return this.codec;
18
+ }
19
+ async serializeRequest(operationSchema, input, context) {
20
+ const request = await super.serializeRequest(operationSchema, input, context);
21
+ Object.assign(request.headers, {
22
+ "content-type": "application/cbor",
23
+ "smithy-protocol": "rpc-v2-cbor",
24
+ accept: "application/cbor",
25
+ });
26
+ if (deref(operationSchema.input) === "unit") {
27
+ delete request.body;
28
+ delete request.headers["content-type"];
29
+ }
30
+ else {
31
+ if (!request.body) {
32
+ this.serializer.write(15, {});
33
+ request.body = this.serializer.flush();
34
+ }
35
+ try {
36
+ request.headers["content-length"] = String(request.body.byteLength);
37
+ }
38
+ catch (e) { }
39
+ }
40
+ const { service, operation } = getSmithyContext(context);
41
+ const path = `/service/${service}/operation/${operation}`;
42
+ if (request.path.endsWith("/")) {
43
+ request.path += path.slice(1);
44
+ }
45
+ else {
46
+ request.path += path;
47
+ }
48
+ return request;
49
+ }
50
+ async deserializeResponse(operationSchema, context, response) {
51
+ return super.deserializeResponse(operationSchema, context, response);
52
+ }
53
+ async handleError(operationSchema, context, response, dataObject, metadata) {
54
+ const error = loadSmithyRpcV2CborErrorCode(response, dataObject) ?? "Unknown";
55
+ let namespace = this.options.defaultNamespace;
56
+ if (error.includes("#")) {
57
+ [namespace] = error.split("#");
58
+ }
59
+ const registry = TypeRegistry.for(namespace);
60
+ const errorSchema = registry.getSchema(error);
61
+ if (!errorSchema) {
62
+ throw new Error("schema not found for " + error);
63
+ }
64
+ const message = dataObject.message ?? dataObject.Message ?? "Unknown";
65
+ const exception = new errorSchema.ctor(message);
66
+ Object.assign(exception, {
67
+ $metadata: metadata,
68
+ $response: response,
69
+ message,
70
+ ...dataObject,
71
+ });
72
+ throw exception;
73
+ }
74
+ }
@@ -1,3 +1,5 @@
1
1
  export { cbor } from "./cbor";
2
+ export { tag, tagSymbol } from "./cbor-types";
2
3
  export * from "./parseCborBody";
3
- export { tagSymbol, tag } from "./cbor-types";
4
+ export * from "./SmithyRpcV2CborProtocol";
5
+ export * from "./CborCodec";
@@ -0,0 +1,183 @@
1
+ import { NormalizedSchema, SCHEMA } from "@smithy/core/schema";
2
+ import { HttpRequest } from "@smithy/protocol-http";
3
+ import { collectBody } from "./collect-stream-body";
4
+ import { extendedEncodeURIComponent } from "./extended-encode-uri-component";
5
+ import { HttpProtocol } from "./HttpProtocol";
6
+ export class HttpBindingProtocol extends HttpProtocol {
7
+ async serializeRequest(operationSchema, input, context) {
8
+ const serializer = this.serializer;
9
+ const query = {};
10
+ const headers = {};
11
+ const endpoint = await context.endpoint();
12
+ const ns = NormalizedSchema.of(operationSchema?.input);
13
+ const schema = ns.getSchema();
14
+ let hasNonHttpBindingMember = false;
15
+ let payload;
16
+ const request = new HttpRequest({
17
+ protocol: "",
18
+ hostname: "",
19
+ port: undefined,
20
+ path: "",
21
+ fragment: undefined,
22
+ query: query,
23
+ headers: headers,
24
+ body: undefined,
25
+ });
26
+ if (endpoint) {
27
+ this.updateServiceEndpoint(request, endpoint);
28
+ this.setHostPrefix(request, operationSchema, input);
29
+ const opTraits = NormalizedSchema.translateTraits(operationSchema.traits);
30
+ if (opTraits.http) {
31
+ request.method = opTraits.http[0];
32
+ const [path, search] = opTraits.http[1].split("?");
33
+ if (request.path == "/") {
34
+ request.path = path;
35
+ }
36
+ else {
37
+ request.path += path;
38
+ }
39
+ const traitSearchParams = new URLSearchParams(search ?? "");
40
+ Object.assign(query, Object.fromEntries(traitSearchParams));
41
+ }
42
+ }
43
+ const _input = {
44
+ ...input,
45
+ };
46
+ for (const memberName of Object.keys(_input)) {
47
+ const memberNs = ns.getMemberSchema(memberName);
48
+ if (memberNs === undefined) {
49
+ continue;
50
+ }
51
+ const memberTraits = memberNs.getMergedTraits();
52
+ const inputMember = _input[memberName];
53
+ if (memberTraits.httpPayload) {
54
+ const isStreaming = memberNs.isStreaming();
55
+ if (isStreaming) {
56
+ const isEventStream = memberNs.isStructSchema();
57
+ if (isEventStream) {
58
+ throw new Error("serialization of event streams is not yet implemented");
59
+ }
60
+ else {
61
+ payload = inputMember;
62
+ }
63
+ }
64
+ else {
65
+ serializer.write(memberNs, inputMember);
66
+ payload = serializer.flush();
67
+ }
68
+ }
69
+ else if (memberTraits.httpLabel) {
70
+ serializer.write(memberNs, inputMember);
71
+ const replacement = serializer.flush();
72
+ if (request.path.includes(`{${memberName}+}`)) {
73
+ request.path = request.path.replace(`{${memberName}+}`, replacement.split("/").map(extendedEncodeURIComponent).join("/"));
74
+ }
75
+ else if (request.path.includes(`{${memberName}}`)) {
76
+ request.path = request.path.replace(`{${memberName}}`, extendedEncodeURIComponent(replacement));
77
+ }
78
+ delete _input[memberName];
79
+ }
80
+ else if (memberTraits.httpHeader) {
81
+ serializer.write(memberNs, inputMember);
82
+ headers[memberTraits.httpHeader.toLowerCase()] = String(serializer.flush());
83
+ delete _input[memberName];
84
+ }
85
+ else if (typeof memberTraits.httpPrefixHeaders === "string") {
86
+ for (const [key, val] of Object.entries(inputMember)) {
87
+ const amalgam = memberTraits.httpPrefixHeaders + key;
88
+ serializer.write([memberNs.getValueSchema(), { httpHeader: amalgam }], val);
89
+ headers[amalgam.toLowerCase()] = serializer.flush();
90
+ }
91
+ delete _input[memberName];
92
+ }
93
+ else if (memberTraits.httpQuery || memberTraits.httpQueryParams) {
94
+ this.serializeQuery(memberNs, inputMember, query);
95
+ delete _input[memberName];
96
+ }
97
+ else {
98
+ hasNonHttpBindingMember = true;
99
+ }
100
+ }
101
+ if (hasNonHttpBindingMember && input) {
102
+ serializer.write(schema, _input);
103
+ payload = serializer.flush();
104
+ }
105
+ request.headers = headers;
106
+ request.query = query;
107
+ request.body = payload;
108
+ return request;
109
+ }
110
+ serializeQuery(ns, data, query) {
111
+ const serializer = this.serializer;
112
+ const traits = ns.getMergedTraits();
113
+ if (traits.httpQueryParams) {
114
+ for (const [key, val] of Object.entries(data)) {
115
+ if (!(key in query)) {
116
+ this.serializeQuery(NormalizedSchema.of([
117
+ ns.getValueSchema(),
118
+ {
119
+ ...traits,
120
+ httpQuery: key,
121
+ httpQueryParams: undefined,
122
+ },
123
+ ]), val, query);
124
+ }
125
+ }
126
+ return;
127
+ }
128
+ if (ns.isListSchema()) {
129
+ const sparse = !!ns.getMergedTraits().sparse;
130
+ const buffer = [];
131
+ for (const item of data) {
132
+ serializer.write([ns.getValueSchema(), traits], item);
133
+ const serializable = serializer.flush();
134
+ if (sparse || serializable !== undefined) {
135
+ buffer.push(serializable);
136
+ }
137
+ }
138
+ query[traits.httpQuery] = buffer;
139
+ }
140
+ else {
141
+ serializer.write([ns, traits], data);
142
+ query[traits.httpQuery] = serializer.flush();
143
+ }
144
+ }
145
+ async deserializeResponse(operationSchema, context, response) {
146
+ const deserializer = this.deserializer;
147
+ const ns = NormalizedSchema.of(operationSchema.output);
148
+ const dataObject = {};
149
+ if (response.statusCode >= 300) {
150
+ const bytes = await collectBody(response.body, context);
151
+ if (bytes.byteLength > 0) {
152
+ Object.assign(dataObject, await deserializer.read(SCHEMA.DOCUMENT, bytes));
153
+ }
154
+ await this.handleError(operationSchema, context, response, dataObject, this.deserializeMetadata(response));
155
+ throw new Error("@smithy/core/protocols - HTTP Protocol error handler failed to throw.");
156
+ }
157
+ for (const header in response.headers) {
158
+ const value = response.headers[header];
159
+ delete response.headers[header];
160
+ response.headers[header.toLowerCase()] = value;
161
+ }
162
+ const headerBindings = new Set(Object.values(ns.getMemberSchemas())
163
+ .map((schema) => {
164
+ return schema.getMergedTraits().httpHeader;
165
+ })
166
+ .filter(Boolean));
167
+ const nonHttpBindingMembers = await this.deserializeHttpMessage(ns, context, response, headerBindings, dataObject);
168
+ if (nonHttpBindingMembers.length) {
169
+ const bytes = await collectBody(response.body, context);
170
+ if (bytes.byteLength > 0) {
171
+ const dataFromBody = await deserializer.read(ns, bytes);
172
+ for (const member of nonHttpBindingMembers) {
173
+ dataObject[member] = dataFromBody[member];
174
+ }
175
+ }
176
+ }
177
+ const output = {
178
+ $metadata: this.deserializeMetadata(response),
179
+ ...dataObject,
180
+ };
181
+ return output;
182
+ }
183
+ }