@superblocksteam/sdk-api 0.0.12-body-types → 0.0.13

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 (152) hide show
  1. package/README.md +23 -0
  2. package/dist/errors.d.ts +36 -3
  3. package/dist/errors.d.ts.map +1 -1
  4. package/dist/errors.js +231 -38
  5. package/dist/errors.js.map +1 -1
  6. package/dist/errors.test.d.ts +2 -0
  7. package/dist/errors.test.d.ts.map +1 -0
  8. package/dist/errors.test.js +189 -0
  9. package/dist/errors.test.js.map +1 -0
  10. package/dist/index.d.ts +1 -1
  11. package/dist/index.d.ts.map +1 -1
  12. package/dist/index.js.map +1 -1
  13. package/dist/integrations/anthropic/types.d.ts +1 -1
  14. package/dist/integrations/base/decode-worker-binary-response.d.ts.map +1 -1
  15. package/dist/integrations/base/decode-worker-binary-response.js +2 -5
  16. package/dist/integrations/base/decode-worker-binary-response.js.map +1 -1
  17. package/dist/integrations/base/index.d.ts +1 -1
  18. package/dist/integrations/base/index.d.ts.map +1 -1
  19. package/dist/integrations/base/request-body.d.ts +18 -10
  20. package/dist/integrations/base/request-body.d.ts.map +1 -1
  21. package/dist/integrations/base/request-body.js +131 -215
  22. package/dist/integrations/base/request-body.js.map +1 -1
  23. package/dist/integrations/base/request-body.test.js +306 -164
  24. package/dist/integrations/base/request-body.test.js.map +1 -1
  25. package/dist/integrations/base/rest-api-client-base.d.ts.map +1 -1
  26. package/dist/integrations/base/rest-api-client-base.js +13 -26
  27. package/dist/integrations/base/rest-api-client-base.js.map +1 -1
  28. package/dist/integrations/base/rest-api-integration-client.d.ts.map +1 -1
  29. package/dist/integrations/base/rest-api-integration-client.js +2 -5
  30. package/dist/integrations/base/rest-api-integration-client.js.map +1 -1
  31. package/dist/integrations/base/types.d.ts +0 -8
  32. package/dist/integrations/base/types.d.ts.map +1 -1
  33. package/dist/integrations/cosmosdb/client.d.ts.map +1 -1
  34. package/dist/integrations/cosmosdb/client.js +2 -5
  35. package/dist/integrations/cosmosdb/client.js.map +1 -1
  36. package/dist/integrations/documentation-resolver.test.js +88 -2
  37. package/dist/integrations/documentation-resolver.test.js.map +1 -1
  38. package/dist/integrations/documentation.test.js +10 -0
  39. package/dist/integrations/documentation.test.js.map +1 -1
  40. package/dist/integrations/dynamodb/client.d.ts +6 -2
  41. package/dist/integrations/dynamodb/client.d.ts.map +1 -1
  42. package/dist/integrations/dynamodb/client.js +85 -15
  43. package/dist/integrations/dynamodb/client.js.map +1 -1
  44. package/dist/integrations/dynamodb/client.test.d.ts +8 -0
  45. package/dist/integrations/dynamodb/client.test.d.ts.map +1 -0
  46. package/dist/integrations/dynamodb/client.test.js +198 -0
  47. package/dist/integrations/dynamodb/client.test.js.map +1 -0
  48. package/dist/integrations/dynamodb/index.d.ts +1 -1
  49. package/dist/integrations/dynamodb/index.d.ts.map +1 -1
  50. package/dist/integrations/dynamodb/index.js.map +1 -1
  51. package/dist/integrations/dynamodb/types.d.ts +27 -1
  52. package/dist/integrations/dynamodb/types.d.ts.map +1 -1
  53. package/dist/integrations/gcs/client.d.ts.map +1 -1
  54. package/dist/integrations/gcs/client.js +2 -5
  55. package/dist/integrations/gcs/client.js.map +1 -1
  56. package/dist/integrations/gsheets/client.d.ts.map +1 -1
  57. package/dist/integrations/gsheets/client.js +2 -5
  58. package/dist/integrations/gsheets/client.js.map +1 -1
  59. package/dist/integrations/index.d.ts +1 -1
  60. package/dist/integrations/index.d.ts.map +1 -1
  61. package/dist/integrations/index.js.map +1 -1
  62. package/dist/integrations/mongodb/client.d.ts.map +1 -1
  63. package/dist/integrations/mongodb/client.js +2 -5
  64. package/dist/integrations/mongodb/client.js.map +1 -1
  65. package/dist/integrations/restapiintegration/client.body-types.test.js +107 -25
  66. package/dist/integrations/restapiintegration/client.body-types.test.js.map +1 -1
  67. package/dist/integrations/restapiintegration/client.test.js +16 -0
  68. package/dist/integrations/restapiintegration/client.test.js.map +1 -1
  69. package/dist/integrations/s3/client.d.ts.map +1 -1
  70. package/dist/integrations/s3/client.js +2 -5
  71. package/dist/integrations/s3/client.js.map +1 -1
  72. package/dist/integrations/salesforce/client.d.ts.map +1 -1
  73. package/dist/integrations/salesforce/client.js +2 -5
  74. package/dist/integrations/salesforce/client.js.map +1 -1
  75. package/dist/integrations/slack/client.d.ts.map +1 -1
  76. package/dist/integrations/slack/client.js +4 -13
  77. package/dist/integrations/slack/client.js.map +1 -1
  78. package/dist/integrations/slack/client.test.js +2 -5
  79. package/dist/integrations/slack/client.test.js.map +1 -1
  80. package/dist/integrations/utils.d.ts +8 -3
  81. package/dist/integrations/utils.d.ts.map +1 -1
  82. package/dist/integrations/utils.js +42 -1
  83. package/dist/integrations/utils.js.map +1 -1
  84. package/dist/runtime/context.d.ts +6 -0
  85. package/dist/runtime/context.d.ts.map +1 -1
  86. package/dist/runtime/context.js +2 -1
  87. package/dist/runtime/context.js.map +1 -1
  88. package/dist/runtime/executor.d.ts +6 -0
  89. package/dist/runtime/executor.d.ts.map +1 -1
  90. package/dist/runtime/executor.js +1 -0
  91. package/dist/runtime/executor.js.map +1 -1
  92. package/dist/types.d.ts +10 -0
  93. package/dist/types.d.ts.map +1 -1
  94. package/package.json +3 -3
  95. package/src/errors.test.ts +257 -0
  96. package/src/errors.ts +289 -46
  97. package/src/index.ts +1 -0
  98. package/src/integrations/anthropic/README.md +12 -59
  99. package/src/integrations/anthropic/types.ts +1 -1
  100. package/src/integrations/base/decode-worker-binary-response.ts +5 -7
  101. package/src/integrations/base/index.ts +0 -5
  102. package/src/integrations/base/request-body.test.ts +358 -195
  103. package/src/integrations/base/request-body.ts +170 -326
  104. package/src/integrations/base/rest-api-client-base.ts +22 -31
  105. package/src/integrations/base/rest-api-integration-client.ts +8 -7
  106. package/src/integrations/base/types.ts +0 -18
  107. package/src/integrations/box/README.md +4 -60
  108. package/src/integrations/cosmosdb/client.ts +8 -7
  109. package/src/integrations/documentation-resolver.test.ts +108 -2
  110. package/src/integrations/documentation.test.ts +12 -0
  111. package/src/integrations/dropbox/README.md +1 -71
  112. package/src/integrations/dropbox/docs.manifest.json +10 -1
  113. package/src/integrations/dropbox/overlays/upload-unsupported.md +3 -0
  114. package/src/integrations/dropbox/overlays/upload.md +89 -0
  115. package/src/integrations/dynamodb/README.md +33 -12
  116. package/src/integrations/dynamodb/client.test.ts +254 -0
  117. package/src/integrations/dynamodb/client.ts +129 -23
  118. package/src/integrations/dynamodb/index.ts +5 -1
  119. package/src/integrations/dynamodb/types.ts +33 -1
  120. package/src/integrations/elasticsearch/README.md +0 -80
  121. package/src/integrations/elasticsearch/docs.manifest.json +10 -1
  122. package/src/integrations/elasticsearch/overlays/bulk-unsupported.md +3 -0
  123. package/src/integrations/elasticsearch/overlays/bulk.md +80 -0
  124. package/src/integrations/gcs/client.ts +8 -7
  125. package/src/integrations/googledrive/README.md +10 -36
  126. package/src/integrations/gsheets/client.ts +8 -7
  127. package/src/integrations/index.ts +1 -0
  128. package/src/integrations/jira/README.md +0 -26
  129. package/src/integrations/jira/docs.manifest.json +10 -1
  130. package/src/integrations/jira/overlays/attachments-unsupported.md +3 -0
  131. package/src/integrations/jira/overlays/attachments.md +30 -0
  132. package/src/integrations/mongodb/client.ts +8 -7
  133. package/src/integrations/restapiintegration/client.body-types.test.ts +135 -26
  134. package/src/integrations/restapiintegration/client.test.ts +23 -0
  135. package/src/integrations/restapiintegration/docs.manifest.json +2 -2
  136. package/src/integrations/restapiintegration/overlays/request-body-types.md +26 -17
  137. package/src/integrations/s3/client.ts +8 -7
  138. package/src/integrations/salesforce/client.ts +9 -7
  139. package/src/integrations/slack/client.test.ts +2 -5
  140. package/src/integrations/slack/client.ts +13 -19
  141. package/src/integrations/stabilityai/README.md +0 -87
  142. package/src/integrations/stabilityai/docs.manifest.json +10 -1
  143. package/src/integrations/stabilityai/overlays/image-uploads-unsupported.md +3 -0
  144. package/src/integrations/stabilityai/overlays/image-uploads.md +120 -0
  145. package/src/integrations/stripe/README.md +0 -201
  146. package/src/integrations/stripe/docs.manifest.json +10 -1
  147. package/src/integrations/stripe/overlays/request-bodies-unsupported.md +3 -0
  148. package/src/integrations/stripe/overlays/request-bodies.md +204 -0
  149. package/src/integrations/utils.ts +51 -1
  150. package/src/runtime/context.ts +9 -0
  151. package/src/runtime/executor.ts +8 -0
  152. package/src/types.ts +11 -0
@@ -1 +1 @@
1
- {"version":3,"file":"request-body.js","sourceRoot":"","sources":["../../../src/integrations/base/request-body.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"request-body.js","sourceRoot":"","sources":["../../../src/integrations/base/request-body.ts"],"names":[],"mappings":"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"}
@@ -1,75 +1,41 @@
1
- import { describe, expect, expectTypeOf, it } from "vitest";
2
- import { RestApiBodyDataType } from "@superblocksteam/shared";
3
- import { REDACTED_BINARY_RESPONSE_DATA, RestApiValidationError, } from "../../errors.js";
4
- import { encodeRequestBody, MAX_BINARY_BODY_BYTES } from "./request-body.js";
5
- import { REST_API_BODY_TYPES } from "./types.js";
1
+ import { describe, expect, it, vi } from "vitest";
2
+ import { RestApiValidationError } from "../../errors.js";
3
+ import { encodeRequestBody } from "./request-body.js";
6
4
  const PNG_BYTES = [137, 80, 78, 71];
7
5
  const PNG_BASE64 = Buffer.from(PNG_BYTES).toString("base64");
8
- const AGENT_REQUEST_CAP_BYTES = 28 * 1024 * 1024;
9
6
  function arrayBufferFrom(bytes) {
10
7
  const buffer = new ArrayBuffer(bytes.length);
11
8
  new Uint8Array(buffer).set(bytes);
12
9
  return buffer;
13
10
  }
14
- function getRestApiValidationError(fn) {
15
- try {
16
- fn();
17
- }
18
- catch (error) {
19
- if (error instanceof RestApiValidationError)
20
- return error;
21
- throw error;
22
- }
23
- throw new Error("Expected RestApiValidationError");
24
- }
25
- function expectBinaryDataRedacted(data) {
26
- if (data !== REDACTED_BINARY_RESPONSE_DATA) {
27
- throw new Error("Expected binary validation data to be redacted");
28
- }
29
- }
30
11
  describe("encodeRequestBody", () => {
31
- it("keeps the public body type contract SDK-owned", () => {
32
- expect(REST_API_BODY_TYPES).toEqual([
33
- "json",
34
- "raw",
35
- "formUrlencoded",
36
- "multipartForm",
37
- "binary",
38
- ]);
39
- expectTypeOf().toEqualTypeOf();
40
- expect(Object.values(RestApiBodyDataType).sort()).toEqual([
41
- "fileForm",
42
- "formData",
43
- "jsonBody",
44
- "rawBody",
45
- ]);
46
- expect(Object.values(RestApiBodyDataType)).not.toContain("binaryBody");
47
- expect(Object.values(RestApiBodyDataType)).not.toContain("formDataBase64");
48
- });
49
12
  it("preserves default and explicit JSON wire behavior", () => {
50
- expect(encodeRequestBody({ body: undefined })).toEqual({
51
- injectedHeaders: [],
52
- });
13
+ expect(encodeRequestBody({ body: undefined })).toEqual({ wire: {} });
53
14
  expect(encodeRequestBody({ body: undefined, bodyType: "json" })).toEqual({
54
- injectedHeaders: [],
15
+ wire: {},
55
16
  });
56
17
  expect(encodeRequestBody({ body: { amount: 42 } })).toEqual({
57
- body: JSON.stringify({ amount: 42 }),
58
- bodyType: "jsonBody",
59
- injectedHeaders: [],
18
+ wire: { body: JSON.stringify({ amount: 42 }), bodyType: "jsonBody" },
60
19
  });
61
20
  expect(encodeRequestBody({ body: { amount: 42 }, bodyType: "json" })).toEqual({
62
- body: JSON.stringify({ amount: 42 }),
63
- bodyType: "jsonBody",
64
- injectedHeaders: [],
21
+ wire: { body: JSON.stringify({ amount: 42 }), bodyType: "jsonBody" },
22
+ });
23
+ expect(encodeRequestBody({ body: "plain text" })).toEqual({
24
+ wire: { body: '"plain text"', bodyType: "jsonBody" },
25
+ });
26
+ expect(encodeRequestBody({ body: null })).toEqual({
27
+ wire: { body: "null", bodyType: "jsonBody" },
65
28
  });
66
29
  });
67
30
  it("rejects invalid JSON and bodyType inputs", () => {
68
31
  expect(() => encodeRequestBody({ body: Uint8Array.from(PNG_BYTES) })).toThrow(/bodyType: "binary"/);
69
32
  const circular = {};
70
33
  circular.self = circular;
71
- for (const body of [circular, 1n, () => undefined]) {
34
+ expect(() => encodeRequestBody({ body: circular })).toThrow(/the body contains a circular reference/);
35
+ expect(() => encodeRequestBody({ body: 1n })).toThrow(/not JSON-serializable/);
36
+ for (const body of [() => undefined, Symbol("token")]) {
72
37
  expect(() => encodeRequestBody({ body })).toThrow(RestApiValidationError);
38
+ expect(() => encodeRequestBody({ body })).toThrow(/cannot serialize a/);
73
39
  }
74
40
  for (const bodyType of [
75
41
  "jsonBody",
@@ -81,12 +47,189 @@ describe("encodeRequestBody", () => {
81
47
  ]) {
82
48
  expect(() => encodeRequestBody({ body: {}, bodyType })).toThrow(new RegExp(`Unsupported bodyType ${JSON.stringify(bodyType)}`));
83
49
  }
50
+ // Only an omitted bodyType defaults to "json"; an explicit null is an
51
+ // invalid value like any other, not a synonym for omission.
52
+ expect(() => encodeRequestBody({ body: {}, bodyType: null })).toThrow(/Unsupported bodyType null/);
53
+ });
54
+ it("classifies a circular body under both V8's and QuickJS's JSON.stringify wording", () => {
55
+ // Node/V8 throws "Converting circular structure to JSON"; the QuickJS
56
+ // sandbox sdk-api actually runs in throws "circular reference"
57
+ // (workers/javascript/packages/quickjs-emscripten vendored quickjs.c).
58
+ // Both must classify as the same bounded message.
59
+ for (const message of [
60
+ "Converting circular structure to JSON",
61
+ "circular reference",
62
+ ]) {
63
+ const stringifySpy = vi
64
+ .spyOn(JSON, "stringify")
65
+ .mockImplementationOnce(() => {
66
+ throw new TypeError(message);
67
+ });
68
+ expect(() => encodeRequestBody({ body: {} })).toThrow(/the body contains a circular reference/);
69
+ stringifySpy.mockRestore();
70
+ }
71
+ });
72
+ it("rejects binary nested inside a JSON body (APPS-2739)", () => {
73
+ expect(() => encodeRequestBody({
74
+ body: { attributes: "{}", file: Uint8Array.from(PNG_BYTES) },
75
+ })).toThrow(/contains binary data at "file"; send file parts with bodyType: "multipartForm"/);
76
+ expect(() => encodeRequestBody({
77
+ body: {
78
+ attachments: [{ name: "a" }, { bytes: arrayBufferFrom(PNG_BYTES) }],
79
+ },
80
+ })).toThrow(/contains binary data at "attachments\.1\.bytes"/);
81
+ });
82
+ it("rejects binary nested inside a Map or Set value in a JSON body", () => {
83
+ expect(() => encodeRequestBody({
84
+ body: { file: new Map([["bytes", Uint8Array.from(PNG_BYTES)]]) },
85
+ })).toThrow(/contains binary data/);
86
+ expect(() => encodeRequestBody({
87
+ body: { file: new Set([Uint8Array.from(PNG_BYTES)]) },
88
+ })).toThrow(/contains binary data/);
89
+ });
90
+ it("fails closed instead of silently serializing binary past the scan depth cap", () => {
91
+ let body = Uint8Array.from(PNG_BYTES);
92
+ for (let depth = 0; depth < 105; depth++) {
93
+ body = { child: body };
94
+ }
95
+ expect(() => encodeRequestBody({ body })).toThrow(/contains binary data/);
96
+ });
97
+ it("bounds the message when a nested getter throws during JSON serialization", () => {
98
+ const throwingGetter = {
99
+ get secret() {
100
+ throw new Error("getter boom");
101
+ },
102
+ };
103
+ expect(() => encodeRequestBody({ body: throwingGetter })).toThrow(/not JSON-serializable: a nested value's toJSON, toString, or getter threw/);
104
+ let message = "";
105
+ try {
106
+ encodeRequestBody({ body: throwingGetter });
107
+ }
108
+ catch (error) {
109
+ message = error instanceof Error ? error.message : "";
110
+ }
111
+ expect(message).not.toContain("getter boom");
112
+ });
113
+ it("keeps caller keys in validation messages bounded and escaped", () => {
114
+ const longKey = "k".repeat(500);
115
+ const surrogateKey = "bad\uD800key";
116
+ const cases = [
117
+ {
118
+ body: { [longKey]: { nested: true } },
119
+ bodyType: "formUrlencoded",
120
+ expected: /is nested/,
121
+ },
122
+ {
123
+ body: { [surrogateKey]: "v" },
124
+ bodyType: "formUrlencoded",
125
+ expected: /lone surrogate/,
126
+ },
127
+ {
128
+ body: { [longKey]: Uint8Array.from(PNG_BYTES) },
129
+ bodyType: "multipartForm",
130
+ expected: /wrapped as/,
131
+ },
132
+ {
133
+ body: { [surrogateKey]: { value: "x", filename: "f", [longKey]: 1 } },
134
+ bodyType: "multipartForm",
135
+ expected: /unexpected key/,
136
+ },
137
+ ];
138
+ for (const { body, bodyType, expected } of cases) {
139
+ let message = "";
140
+ try {
141
+ encodeRequestBody({ body, bodyType });
142
+ }
143
+ catch (error) {
144
+ expect(error).toBeInstanceOf(RestApiValidationError);
145
+ message = error instanceof Error ? error.message : "";
146
+ }
147
+ expect(message).toMatch(expected);
148
+ expect(message).not.toContain("k".repeat(65));
149
+ expect(message).not.toContain("\uD800");
150
+ expect(message.length).toBeLessThan(400);
151
+ }
152
+ });
153
+ it("keeps unsupported bodyType messages bounded and free of caller data", () => {
154
+ expect(() => encodeRequestBody({ body: {}, bodyType: "x".repeat(500) })).toThrow(`"${"x".repeat(64)}..."`);
155
+ for (const bodyType of [
156
+ new Uint8Array(50_000),
157
+ { secret: "s".repeat(1000) },
158
+ ]) {
159
+ let caught;
160
+ try {
161
+ encodeRequestBody({ body: {}, bodyType });
162
+ }
163
+ catch (error) {
164
+ caught = error;
165
+ }
166
+ if (!(caught instanceof RestApiValidationError))
167
+ throw caught;
168
+ const message = caught.message;
169
+ expect(message).toMatch(/^Unsupported bodyType (binary data \(50000 bytes\)|object with keys \[secret\])/);
170
+ expect(message).not.toContain("s".repeat(10));
171
+ expect(message.length).toBeLessThan(200);
172
+ // The mismatch branch must not bypass the module's bounded-error
173
+ // convention: details.data stays undefined and details.zodError
174
+ // carries only the already-bounded message, never the raw caller value.
175
+ expect(caught.details.data).toBeUndefined();
176
+ const detailMessage = caught.details.zodError.issues[0].message;
177
+ expect(detailMessage).toBe(message);
178
+ expect(JSON.stringify(caught.details)).not.toContain("s".repeat(10));
179
+ }
180
+ });
181
+ it("bounds caller keys embedded in the zod issue path, not just the message", () => {
182
+ const longKey = "k".repeat(500);
183
+ let caught;
184
+ try {
185
+ encodeRequestBody({
186
+ body: { [longKey]: { nested: true } },
187
+ bodyType: "formUrlencoded",
188
+ });
189
+ }
190
+ catch (error) {
191
+ caught = error;
192
+ }
193
+ if (!(caught instanceof RestApiValidationError))
194
+ throw caught;
195
+ const path = caught.details.zodError.issues[0].path;
196
+ expect(JSON.stringify(path)).not.toContain("k".repeat(65));
197
+ expect(path).toEqual(["body", `${"k".repeat(64)}...`]);
198
+ });
199
+ it("bounds long keys inside describeOptionValue's object description", () => {
200
+ const longKey = "k".repeat(10_000);
201
+ let message = "";
202
+ try {
203
+ encodeRequestBody({ body: {}, bodyType: { [longKey]: 1 } });
204
+ }
205
+ catch (error) {
206
+ expect(error).toBeInstanceOf(RestApiValidationError);
207
+ message = error instanceof Error ? error.message : "";
208
+ }
209
+ expect(message).toMatch(/^Unsupported bodyType object with keys/);
210
+ expect(message).not.toContain("k".repeat(65));
211
+ expect(message.length).toBeLessThan(200);
212
+ });
213
+ it("bounds the unexpected-keys list in multipart file-part errors", () => {
214
+ const extraKeys = Object.fromEntries(Array.from({ length: 50 }, (_, i) => [`extra${i}`, i]));
215
+ let message = "";
216
+ try {
217
+ encodeRequestBody({
218
+ body: { file: { value: "hello", filename: "f.txt", ...extraKeys } },
219
+ bodyType: "multipartForm",
220
+ });
221
+ }
222
+ catch (error) {
223
+ expect(error).toBeInstanceOf(RestApiValidationError);
224
+ message = error instanceof Error ? error.message : "";
225
+ }
226
+ expect(message).toMatch(/unexpected keys/);
227
+ expect(message).toContain(", ...");
228
+ expect(message.length).toBeLessThan(400);
84
229
  });
85
230
  it("passes raw non-empty string bodies through unchanged", () => {
86
231
  expect(encodeRequestBody({ body: "<note>hello</note>", bodyType: "raw" })).toEqual({
87
- body: "<note>hello</note>",
88
- bodyType: "rawBody",
89
- injectedHeaders: [],
232
+ wire: { body: "<note>hello</note>", bodyType: "rawBody" },
90
233
  });
91
234
  expect(() => encodeRequestBody({ body: "", bodyType: "raw" })).toThrow(RestApiValidationError);
92
235
  expect(() => encodeRequestBody({ body: { value: "hello" }, bodyType: "raw" })).toThrow(RestApiValidationError);
@@ -104,22 +247,47 @@ describe("encodeRequestBody", () => {
104
247
  },
105
248
  bodyType: "formUrlencoded",
106
249
  })).toEqual({
107
- body: "amount=2000&currency=usd&enabled=true&metadata%5Border_id%5D=6735&tag=vip&tag=repeat",
108
- bodyType: "rawBody",
109
- injectedHeaders: [
110
- { key: "Content-Type", value: "application/x-www-form-urlencoded" },
111
- ],
250
+ wire: {
251
+ body: "amount=2000&currency=usd&enabled=true&metadata%5Border_id%5D=6735&tag=vip&tag=repeat",
252
+ bodyType: "rawBody",
253
+ },
254
+ contentType: "application/x-www-form-urlencoded",
112
255
  });
113
256
  expect(encodeRequestBody({
114
257
  body: { amount: 2000 },
115
258
  bodyType: "formUrlencoded",
116
259
  headers: { "content-type": "application/custom-form" },
117
260
  })).toEqual({
118
- body: "amount=2000",
119
- bodyType: "rawBody",
120
- injectedHeaders: [],
261
+ wire: { body: "amount=2000", bodyType: "rawBody" },
121
262
  });
122
263
  });
264
+ it("drops undefined items from form-urlencoded array values, matching multipart semantics", () => {
265
+ expect(encodeRequestBody({
266
+ body: { tags: ["a", undefined, "b"] },
267
+ bodyType: "formUrlencoded",
268
+ }).wire.body).toBe("tags=a&tags=b");
269
+ // An array of only undefined items leaves no pairs, same as an empty array.
270
+ expect(() => encodeRequestBody({
271
+ body: { tags: [undefined, undefined] },
272
+ bodyType: "formUrlencoded",
273
+ })).toThrow(/must encode at least one field/);
274
+ });
275
+ it("percent-encodes form-urlencoded keys and values with + for spaces", () => {
276
+ expect(encodeRequestBody({
277
+ body: {
278
+ "odd key": "a+b=c&d",
279
+ scope: "read:orders write:orders",
280
+ unicode: "caf\u00e9 \u{1F600}",
281
+ },
282
+ bodyType: "formUrlencoded",
283
+ }).wire.body).toBe("odd+key=a%2Bb%3Dc%26d&scope=read%3Aorders+write%3Aorders&unicode=caf%C3%A9+%F0%9F%98%80");
284
+ });
285
+ it("percent-encodes characters encodeURIComponent leaves literal but URLSearchParams escapes", () => {
286
+ expect(encodeRequestBody({
287
+ body: { "a!b'c(d)e~f*g": "h!i'j(k)l~m*n" },
288
+ bodyType: "formUrlencoded",
289
+ }).wire.body).toBe("a%21b%27c%28d%29e%7Ef*g=h%21i%27j%28k%29l%7Em*n");
290
+ });
123
291
  it("rejects invalid form-urlencoded bodies", () => {
124
292
  const invalidBodies = [
125
293
  undefined,
@@ -128,6 +296,8 @@ describe("encodeRequestBody", () => {
128
296
  { amount: Number.NaN },
129
297
  { metadata: { orderId: "6735" } },
130
298
  { empty: [] },
299
+ { message: "truncated mid-emoji \uD83D" },
300
+ { "\uDC00": "lone low surrogate key" },
131
301
  ];
132
302
  for (const body of invalidBodies) {
133
303
  expect(() => encodeRequestBody({ body, bodyType: "formUrlencoded" })).toThrow(RestApiValidationError);
@@ -136,6 +306,10 @@ describe("encodeRequestBody", () => {
136
306
  body: { metadata: { orderId: "6735" } },
137
307
  bodyType: "formUrlencoded",
138
308
  })).toThrow(/metadata\[order_id\]/);
309
+ expect(() => encodeRequestBody({
310
+ body: { message: "truncated mid-emoji \uD83D" },
311
+ bodyType: "formUrlencoded",
312
+ })).toThrow(/field "message" contains a lone surrogate/);
139
313
  });
140
314
  it.each([
141
315
  ["Uint8Array", Uint8Array.from(PNG_BYTES)],
@@ -145,11 +319,8 @@ describe("encodeRequestBody", () => {
145
319
  ["Buffer", Buffer.from(PNG_BYTES)],
146
320
  ])("base64-encodes exact bytes from %s", (_name, body) => {
147
321
  expect(encodeRequestBody({ body, bodyType: "binary" })).toEqual({
148
- body: PNG_BASE64,
149
- bodyType: "binaryBody",
150
- injectedHeaders: [
151
- { key: "Content-Type", value: "application/octet-stream" },
152
- ],
322
+ wire: { body: PNG_BASE64, bodyType: "binaryBody" },
323
+ contentType: "application/octet-stream",
153
324
  });
154
325
  });
155
326
  it("rejects invalid binary bodies and preserves caller Content-Type", () => {
@@ -158,66 +329,28 @@ describe("encodeRequestBody", () => {
158
329
  bodyType: "binary",
159
330
  headers: { "CONTENT-TYPE": "image/png" },
160
331
  })).toEqual({
161
- body: PNG_BASE64,
162
- bodyType: "binaryBody",
163
- injectedHeaders: [],
332
+ wire: { body: PNG_BASE64, bodyType: "binaryBody" },
164
333
  });
165
- for (const body of [
166
- new ArrayBuffer(0),
167
- "not bytes",
168
- new Uint8Array(MAX_BINARY_BODY_BYTES + 1),
169
- ]) {
334
+ for (const body of [new ArrayBuffer(0), "not bytes"]) {
170
335
  expect(() => encodeRequestBody({ body, bodyType: "binary" })).toThrow(RestApiValidationError);
171
336
  }
172
337
  });
173
- it("keeps the binary request cap below the serialized agent request cap", () => {
174
- expect(Math.ceil(MAX_BINARY_BODY_BYTES / 3) * 4).toBeLessThan(AGENT_REQUEST_CAP_BYTES);
175
- });
176
- it("redacts binary validation data for invalid request bodies", () => {
177
- const binaryError = getRestApiValidationError(() => encodeRequestBody({
178
- body: new ArrayBuffer(MAX_BINARY_BODY_BYTES + 1),
179
- bodyType: "binary",
180
- }));
181
- expectBinaryDataRedacted(binaryError.details.data);
182
- const multipartError = getRestApiValidationError(() => encodeRequestBody({
183
- body: {
184
- file: {
185
- value: new Uint8Array(MAX_BINARY_BODY_BYTES + 1),
186
- filename: "too-large.bin",
187
- },
188
- },
189
- bodyType: "multipartForm",
190
- }));
191
- expectBinaryDataRedacted(multipartError.details.data);
192
- const invalidPartError = getRestApiValidationError(() => encodeRequestBody({
193
- body: {
194
- file: {
195
- contentType: "application/octet-stream",
196
- filename: "too-large.bin",
197
- value: Uint8Array.from(PNG_BYTES),
198
- },
199
- },
200
- bodyType: "multipartForm",
201
- }));
202
- expect(invalidPartError.details.data).toEqual({
203
- contentType: "application/octet-stream",
204
- filename: "too-large.bin",
205
- value: REDACTED_BINARY_RESPONSE_DATA,
206
- });
207
- });
208
- it("encodes multipart primitive, string-file, and mixed binary file parts", () => {
209
- expect(encodeRequestBody({
338
+ it("encodes multipart parts as formDataBase64 with base64 file parts", () => {
339
+ const primitives = encodeRequestBody({
210
340
  body: { active: true, amount: 42, note: "hello" },
211
341
  bodyType: "multipartForm",
212
- })).toEqual({
213
- bodyType: "formData",
214
- formData: [
215
- { key: "active", value: "true" },
216
- { key: "amount", value: "42" },
217
- { key: "note", value: "hello" },
218
- ],
219
- injectedHeaders: [],
220
342
  });
343
+ expect(primitives).toEqual({
344
+ wire: {
345
+ bodyType: "formDataBase64",
346
+ formData: [
347
+ { key: "active", value: "true" },
348
+ { key: "amount", value: "42" },
349
+ { key: "note", value: "hello" },
350
+ ],
351
+ },
352
+ });
353
+ expect(primitives.wire).not.toHaveProperty("body");
221
354
  expect(encodeRequestBody({
222
355
  body: {
223
356
  empty: { value: "", filename: "empty.txt" },
@@ -229,12 +362,17 @@ describe("encodeRequestBody", () => {
229
362
  },
230
363
  bodyType: "multipartForm",
231
364
  })).toEqual({
232
- bodyType: "formData",
233
- formData: [
234
- { key: "empty", value: "", file: { filename: "empty.txt" } },
235
- { key: "file", value: "hello", file: { filename: "hello.txt" } },
236
- ],
237
- injectedHeaders: [],
365
+ wire: {
366
+ bodyType: "formDataBase64",
367
+ formData: [
368
+ { key: "empty", value: "", file: { filename: "empty.txt" } },
369
+ {
370
+ key: "file",
371
+ value: Buffer.from("hello", "utf8").toString("base64"),
372
+ file: { filename: "hello.txt" },
373
+ },
374
+ ],
375
+ },
238
376
  });
239
377
  expect(encodeRequestBody({
240
378
  body: {
@@ -244,18 +382,47 @@ describe("encodeRequestBody", () => {
244
382
  },
245
383
  bodyType: "multipartForm",
246
384
  })).toEqual({
247
- bodyType: "formDataBase64",
248
- formData: [
249
- { key: "image", value: PNG_BASE64, file: { filename: "b.png" } },
250
- { key: "note", value: "mixed" },
251
- {
252
- key: "textFile",
253
- value: Buffer.from("cafe \u00e9", "utf8").toString("base64"),
254
- file: { filename: "note.txt" },
255
- },
256
- ],
257
- injectedHeaders: [],
385
+ wire: {
386
+ bodyType: "formDataBase64",
387
+ formData: [
388
+ { key: "image", value: PNG_BASE64, file: { filename: "b.png" } },
389
+ { key: "note", value: "mixed" },
390
+ {
391
+ key: "textFile",
392
+ value: Buffer.from("cafe \u00e9", "utf8").toString("base64"),
393
+ file: { filename: "note.txt" },
394
+ },
395
+ ],
396
+ },
397
+ });
398
+ });
399
+ it("repeats the key for multipart array values", () => {
400
+ expect(encodeRequestBody({
401
+ body: {
402
+ files: [
403
+ { value: Uint8Array.from(PNG_BYTES), filename: "a.png" },
404
+ undefined,
405
+ { value: "hello", filename: "b.txt" },
406
+ ],
407
+ tags: ["x", 2],
408
+ },
409
+ bodyType: "multipartForm",
410
+ })).toEqual({
411
+ wire: {
412
+ bodyType: "formDataBase64",
413
+ formData: [
414
+ { key: "files", value: PNG_BASE64, file: { filename: "a.png" } },
415
+ {
416
+ key: "files",
417
+ value: Buffer.from("hello", "utf8").toString("base64"),
418
+ file: { filename: "b.txt" },
419
+ },
420
+ { key: "tags", value: "x" },
421
+ { key: "tags", value: "2" },
422
+ ],
423
+ },
258
424
  });
425
+ expect(() => encodeRequestBody({ body: { files: [] }, bodyType: "multipartForm" })).toThrow(/at least one field/);
259
426
  });
260
427
  it("rejects malformed multipart bodies", () => {
261
428
  expect(() => encodeRequestBody({
@@ -266,6 +433,7 @@ describe("encodeRequestBody", () => {
266
433
  const invalidBodies = [
267
434
  {},
268
435
  { "": "missing" },
436
+ { n: Number.NaN },
269
437
  { file: Uint8Array.from(PNG_BYTES) },
270
438
  {
271
439
  file: {
@@ -275,12 +443,6 @@ describe("encodeRequestBody", () => {
275
443
  },
276
444
  },
277
445
  { file: { value: "hello", filename: "" } },
278
- {
279
- file: {
280
- value: new Uint8Array(MAX_BINARY_BODY_BYTES + 1),
281
- filename: "too-large.bin",
282
- },
283
- },
284
446
  ];
285
447
  for (const body of invalidBodies) {
286
448
  expect(() => encodeRequestBody({ body, bodyType: "multipartForm" })).toThrow(RestApiValidationError);
@@ -298,27 +460,7 @@ describe("encodeRequestBody", () => {
298
460
  },
299
461
  },
300
462
  bodyType: "multipartForm",
301
- })).toThrow(/unexpected key: contentType/);
302
- });
303
- it("rejects multipart bodies whose total file-part bytes exceed the request budget", () => {
304
- const partBytes = Math.floor(MAX_BINARY_BODY_BYTES / 2) + 1;
305
- const first = "a".repeat(partBytes);
306
- const second = "b".repeat(partBytes);
307
- expect(() => encodeRequestBody({
308
- body: {
309
- first: { value: first, filename: "first.txt" },
310
- second: { value: second, filename: "second.txt" },
311
- },
312
- bodyType: "multipartForm",
313
- })).toThrow(/20 MiB/);
314
- });
315
- it("rejects raw and multipart field bodies that exceed the request budget", () => {
316
- const tooLarge = "x".repeat(MAX_BINARY_BODY_BYTES + 1);
317
- expect(() => encodeRequestBody({ body: tooLarge, bodyType: "raw" })).toThrow(/request bodies must be 20 MiB or smaller/);
318
- expect(() => encodeRequestBody({
319
- body: { csv: tooLarge },
320
- bodyType: "multipartForm",
321
- })).toThrow(/request bodies must be 20 MiB or smaller/);
463
+ })).toThrow(/unexpected key: "contentType"/);
322
464
  });
323
465
  });
324
466
  //# sourceMappingURL=request-body.test.js.map