@superblocksteam/sdk-api 2.0.165-next.0 → 2.0.166-next.0

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 (125) hide show
  1. package/README.md +1 -2
  2. package/dist/errors.d.ts +36 -3
  3. package/dist/errors.d.ts.map +1 -1
  4. package/dist/errors.js +244 -8
  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/integrations/base/decode-worker-binary-response.d.ts.map +1 -1
  11. package/dist/integrations/base/decode-worker-binary-response.js +2 -5
  12. package/dist/integrations/base/decode-worker-binary-response.js.map +1 -1
  13. package/dist/integrations/base/index.d.ts +2 -1
  14. package/dist/integrations/base/index.d.ts.map +1 -1
  15. package/dist/integrations/base/index.js +1 -0
  16. package/dist/integrations/base/index.js.map +1 -1
  17. package/dist/integrations/base/request-body.d.ts +29 -0
  18. package/dist/integrations/base/request-body.d.ts.map +1 -0
  19. package/dist/integrations/base/request-body.js +238 -0
  20. package/dist/integrations/base/request-body.js.map +1 -0
  21. package/dist/integrations/base/request-body.test.d.ts +2 -0
  22. package/dist/integrations/base/request-body.test.d.ts.map +1 -0
  23. package/dist/integrations/base/request-body.test.js +466 -0
  24. package/dist/integrations/base/request-body.test.js.map +1 -0
  25. package/dist/integrations/base/rest-api-client-base.d.ts.map +1 -1
  26. package/dist/integrations/base/rest-api-client-base.js +15 -14
  27. package/dist/integrations/base/rest-api-client-base.js.map +1 -1
  28. package/dist/integrations/base/rest-api-integration-client.d.ts +2 -2
  29. package/dist/integrations/base/rest-api-integration-client.d.ts.map +1 -1
  30. package/dist/integrations/base/rest-api-integration-client.js +5 -6
  31. package/dist/integrations/base/rest-api-integration-client.js.map +1 -1
  32. package/dist/integrations/base/types.d.ts +55 -11
  33. package/dist/integrations/base/types.d.ts.map +1 -1
  34. package/dist/integrations/base/types.js +7 -0
  35. package/dist/integrations/base/types.js.map +1 -1
  36. package/dist/integrations/cosmosdb/client.d.ts.map +1 -1
  37. package/dist/integrations/cosmosdb/client.js +2 -5
  38. package/dist/integrations/cosmosdb/client.js.map +1 -1
  39. package/dist/integrations/documentation-resolver.test.js +106 -1
  40. package/dist/integrations/documentation-resolver.test.js.map +1 -1
  41. package/dist/integrations/dynamodb/client.d.ts.map +1 -1
  42. package/dist/integrations/dynamodb/client.js +2 -5
  43. package/dist/integrations/dynamodb/client.js.map +1 -1
  44. package/dist/integrations/gcs/client.d.ts.map +1 -1
  45. package/dist/integrations/gcs/client.js +2 -5
  46. package/dist/integrations/gcs/client.js.map +1 -1
  47. package/dist/integrations/gsheets/client.d.ts.map +1 -1
  48. package/dist/integrations/gsheets/client.js +2 -5
  49. package/dist/integrations/gsheets/client.js.map +1 -1
  50. package/dist/integrations/mongodb/client.d.ts.map +1 -1
  51. package/dist/integrations/mongodb/client.js +2 -5
  52. package/dist/integrations/mongodb/client.js.map +1 -1
  53. package/dist/integrations/restapiintegration/client.body-types.test.d.ts +2 -0
  54. package/dist/integrations/restapiintegration/client.body-types.test.d.ts.map +1 -0
  55. package/dist/integrations/restapiintegration/client.body-types.test.js +227 -0
  56. package/dist/integrations/restapiintegration/client.body-types.test.js.map +1 -0
  57. package/dist/integrations/restapiintegration/client.test.js +56 -30
  58. package/dist/integrations/restapiintegration/client.test.js.map +1 -1
  59. package/dist/integrations/s3/client.d.ts.map +1 -1
  60. package/dist/integrations/s3/client.js +2 -5
  61. package/dist/integrations/s3/client.js.map +1 -1
  62. package/dist/integrations/salesforce/client.d.ts.map +1 -1
  63. package/dist/integrations/salesforce/client.js +2 -5
  64. package/dist/integrations/salesforce/client.js.map +1 -1
  65. package/dist/integrations/slack/client.d.ts.map +1 -1
  66. package/dist/integrations/slack/client.js +4 -13
  67. package/dist/integrations/slack/client.js.map +1 -1
  68. package/dist/integrations/slack/client.test.js +20 -0
  69. package/dist/integrations/slack/client.test.js.map +1 -1
  70. package/dist/integrations/utils.d.ts +8 -3
  71. package/dist/integrations/utils.d.ts.map +1 -1
  72. package/dist/integrations/utils.js +42 -1
  73. package/dist/integrations/utils.js.map +1 -1
  74. package/package.json +2 -2
  75. package/src/errors.test.ts +257 -0
  76. package/src/errors.ts +304 -10
  77. package/src/integrations/base/decode-worker-binary-response.ts +5 -7
  78. package/src/integrations/base/index.ts +3 -0
  79. package/src/integrations/base/request-body.test.ts +565 -0
  80. package/src/integrations/base/request-body.ts +392 -0
  81. package/src/integrations/base/rest-api-client-base.ts +24 -19
  82. package/src/integrations/base/rest-api-integration-client.ts +14 -10
  83. package/src/integrations/base/types.ts +66 -11
  84. package/src/integrations/box/README.md +4 -60
  85. package/src/integrations/cosmosdb/client.ts +8 -7
  86. package/src/integrations/documentation-resolver.test.ts +130 -1
  87. package/src/integrations/dropbox/README.md +1 -71
  88. package/src/integrations/dropbox/docs.manifest.json +10 -1
  89. package/src/integrations/dropbox/overlays/upload-unsupported.md +3 -0
  90. package/src/integrations/dropbox/overlays/upload.md +89 -0
  91. package/src/integrations/dynamodb/client.ts +8 -7
  92. package/src/integrations/elasticsearch/README.md +0 -80
  93. package/src/integrations/elasticsearch/docs.manifest.json +10 -1
  94. package/src/integrations/elasticsearch/overlays/bulk-unsupported.md +3 -0
  95. package/src/integrations/elasticsearch/overlays/bulk.md +80 -0
  96. package/src/integrations/gcs/client.ts +8 -7
  97. package/src/integrations/googledrive/README.md +10 -36
  98. package/src/integrations/gsheets/client.ts +8 -7
  99. package/src/integrations/jira/README.md +0 -26
  100. package/src/integrations/jira/docs.manifest.json +10 -1
  101. package/src/integrations/jira/overlays/attachments-unsupported.md +3 -0
  102. package/src/integrations/jira/overlays/attachments.md +30 -0
  103. package/src/integrations/lakebase/README.md +1 -3
  104. package/src/integrations/mongodb/client.ts +8 -7
  105. package/src/integrations/postgres/README.md +1 -3
  106. package/src/integrations/restapiintegration/client.body-types.test.ts +323 -0
  107. package/src/integrations/restapiintegration/client.test.ts +68 -32
  108. package/src/integrations/restapiintegration/docs.manifest.json +8 -0
  109. package/src/integrations/restapiintegration/overlays/request-body-types-unsupported.md +7 -0
  110. package/src/integrations/restapiintegration/overlays/request-body-types.md +115 -0
  111. package/src/integrations/restapiintegration/overlays/response-types-binary.md +4 -8
  112. package/src/integrations/s3/client.ts +8 -7
  113. package/src/integrations/salesforce/client.ts +9 -7
  114. package/src/integrations/slack/client.test.ts +30 -0
  115. package/src/integrations/slack/client.ts +13 -19
  116. package/src/integrations/snowflakepostgres/README.md +1 -3
  117. package/src/integrations/stabilityai/README.md +0 -87
  118. package/src/integrations/stabilityai/docs.manifest.json +10 -1
  119. package/src/integrations/stabilityai/overlays/image-uploads-unsupported.md +3 -0
  120. package/src/integrations/stabilityai/overlays/image-uploads.md +120 -0
  121. package/src/integrations/stripe/README.md +0 -201
  122. package/src/integrations/stripe/docs.manifest.json +10 -1
  123. package/src/integrations/stripe/overlays/request-bodies-unsupported.md +3 -0
  124. package/src/integrations/stripe/overlays/request-bodies.md +204 -0
  125. package/src/integrations/utils.ts +51 -1
@@ -1 +1 @@
1
- {"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../../../src/integrations/slack/client.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,KAAK,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAG7B,OAAO,EAAE,iBAAiB,EAAE,MAAM,iCAAiC,CAAC;AACpE,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,kBAAkB,CAAC;AAC1D,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,gBAAgB,CAAC;AACpD,OAAO,EAGL,KAAK,qBAAqB,EAC1B,KAAK,WAAW,EAChB,KAAK,aAAa,EACnB,MAAM,YAAY,CAAC;AAEpB;;;;;;GAMG;AACH,qBAAa,eAAgB,SAAQ,iBAAkB,YAAW,WAAW;IACrE,UAAU,CAAC,KAAK,EAAE,eAAe,SAAS,CAAC,CAAC,YAAY,EAC5D,OAAO,EAAE,iBAAiB,CAAC,KAAK,CAAC,EACjC,MAAM,EAAE,qBAAqB,CAAC,KAAK,EAAE,eAAe,CAAC,EACrD,QAAQ,CAAC,EAAE,aAAa,GACvB,OAAO,CAAC,aAAa,CAAC,CAAC,CAAC,MAAM,CAAC,eAAe,CAAC,CAAC,CAAC;CAoErD"}
1
+ {"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../../../src/integrations/slack/client.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,KAAK,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAG7B,OAAO,EAAE,iBAAiB,EAAE,MAAM,iCAAiC,CAAC;AACpE,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,kBAAkB,CAAC;AAC1D,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,gBAAgB,CAAC;AACpD,OAAO,EAGL,KAAK,qBAAqB,EAC1B,KAAK,WAAW,EAChB,KAAK,aAAa,EACnB,MAAM,YAAY,CAAC;AAEpB;;;;;;GAMG;AACH,qBAAa,eAAgB,SAAQ,iBAAkB,YAAW,WAAW;IACrE,UAAU,CAAC,KAAK,EAAE,eAAe,SAAS,CAAC,CAAC,YAAY,EAC5D,OAAO,EAAE,iBAAiB,CAAC,KAAK,CAAC,EACjC,MAAM,EAAE,qBAAqB,CAAC,KAAK,EAAE,eAAe,CAAC,EACrD,QAAQ,CAAC,EAAE,aAAa,GACvB,OAAO,CAAC,aAAa,CAAC,CAAC,CAAC,MAAM,CAAC,eAAe,CAAC,CAAC,CAAC;CA8DrD"}
@@ -5,7 +5,7 @@
5
5
  * then provides a Slack-specific apiRequest() that returns a
6
6
  * SlackResponse<T> discriminated union instead of throwing on ok:false.
7
7
  */
8
- import { RestApiValidationError } from "../../errors.js";
8
+ import { restApiValidationErrorFromZodError } from "../../errors.js";
9
9
  import { RestApiClientBase } from "../base/rest-api-client-base.js";
10
10
  import { SlackErrorSchema, SlackSuccessEnvelopeSchema, } from "./types.js";
11
11
  /**
@@ -31,18 +31,12 @@ export class SlackClientImpl extends RestApiClientBase {
31
31
  result !== null &&
32
32
  "ok" in result &&
33
33
  result.ok === false) {
34
- throw new RestApiValidationError(`Slack returned ok: false but the response did not match the expected error shape: ${errorResult.error.message}`, {
35
- zodError: errorResult.error,
36
- data: result,
37
- });
34
+ throw restApiValidationErrorFromZodError("Slack returned ok: false but the response did not match the expected error shape", errorResult.error, result);
38
35
  }
39
36
  // Success responses must carry the Slack envelope discriminant.
40
37
  const successEnvelopeResult = SlackSuccessEnvelopeSchema.safeParse(result);
41
38
  if (!successEnvelopeResult.success) {
42
- throw new RestApiValidationError(`Slack success response is missing the expected ok: true envelope: ${successEnvelopeResult.error.message}`, {
43
- zodError: successEnvelopeResult.error,
44
- data: result,
45
- });
39
+ throw restApiValidationErrorFromZodError("Slack success response is missing the expected ok: true envelope", successEnvelopeResult.error, result);
46
40
  }
47
41
  // Validate caller-provided payload shape (without the `ok` field).
48
42
  // This keeps strict payload schemas compatible with Slack's envelope.
@@ -52,10 +46,7 @@ export class SlackClientImpl extends RestApiClientBase {
52
46
  delete payloadCandidate.ok;
53
47
  const payloadResult = schema.response.safeParse(payloadCandidate);
54
48
  if (!payloadResult.success) {
55
- throw new RestApiValidationError(`Response validation failed: ${payloadResult.error.message}`, {
56
- zodError: payloadResult.error,
57
- data: result,
58
- });
49
+ throw restApiValidationErrorFromZodError("Response validation failed", payloadResult.error, result);
59
50
  }
60
51
  // Defense against `.passthrough()` schemas: strip any leaked `ok` from
61
52
  // the parsed payload before re-injecting the literal discriminant.
@@ -1 +1 @@
1
- {"version":3,"file":"client.js","sourceRoot":"","sources":["../../../src/integrations/slack/client.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAIH,OAAO,EAAE,sBAAsB,EAAE,MAAM,iBAAiB,CAAC;AACzD,OAAO,EAAE,iBAAiB,EAAE,MAAM,iCAAiC,CAAC;AAGpE,OAAO,EACL,gBAAgB,EAChB,0BAA0B,GAI3B,MAAM,YAAY,CAAC;AAEpB;;;;;;GAMG;AACH,MAAM,OAAO,eAAgB,SAAQ,iBAAiB;IACpD,KAAK,CAAC,UAAU,CACd,OAAiC,EACjC,MAAqD,EACrD,QAAwB;QAExB,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,iBAAiB,CAAC,OAAO,EAAE,MAAM,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC;QAE5E,qEAAqE;QACrE,0EAA0E;QAC1E,MAAM,WAAW,GAAG,gBAAgB,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC;QACvD,IAAI,WAAW,CAAC,OAAO,EAAE,CAAC;YACxB,OAAO,WAAW,CAAC,IAAI,CAAC;QAC1B,CAAC;QAED,6EAA6E;QAC7E,wEAAwE;QACxE,8DAA8D;QAC9D,IACE,OAAO,MAAM,KAAK,QAAQ;YAC1B,MAAM,KAAK,IAAI;YACf,IAAI,IAAI,MAAM;YACb,MAAkC,CAAC,EAAE,KAAK,KAAK,EAChD,CAAC;YACD,MAAM,IAAI,sBAAsB,CAC9B,qFAAqF,WAAW,CAAC,KAAK,CAAC,OAAO,EAAE,EAChH;gBACE,QAAQ,EAAE,WAAW,CAAC,KAAK;gBAC3B,IAAI,EAAE,MAAM;aACb,CACF,CAAC;QACJ,CAAC;QAED,gEAAgE;QAChE,MAAM,qBAAqB,GAAG,0BAA0B,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC;QAC3E,IAAI,CAAC,qBAAqB,CAAC,OAAO,EAAE,CAAC;YACnC,MAAM,IAAI,sBAAsB,CAC9B,qEAAqE,qBAAqB,CAAC,KAAK,CAAC,OAAO,EAAE,EAC1G;gBACE,QAAQ,EAAE,qBAAqB,CAAC,KAAK;gBACrC,IAAI,EAAE,MAAM;aACb,CACF,CAAC;QACJ,CAAC;QAED,mEAAmE;QACnE,sEAAsE;QACtE,MAAM,gBAAgB,GAA4B;YAChD,GAAI,MAAkC;SACvC,CAAC;QACF,OAAO,gBAAgB,CAAC,EAAE,CAAC;QAE3B,MAAM,aAAa,GAAG,MAAM,CAAC,QAAQ,CAAC,SAAS,CAAC,gBAAgB,CAAC,CAAC;QAClE,IAAI,CAAC,aAAa,CAAC,OAAO,EAAE,CAAC;YAC3B,MAAM,IAAI,sBAAsB,CAC9B,+BAA+B,aAAa,CAAC,KAAK,CAAC,OAAO,EAAE,EAC5D;gBACE,QAAQ,EAAE,aAAa,CAAC,KAAK;gBAC7B,IAAI,EAAE,MAAM;aACb,CACF,CAAC;QACJ,CAAC;QAED,uEAAuE;QACvE,mEAAmE;QACnE,MAAM,gBAAgB,GAA4B,EAAE,GAAG,aAAa,CAAC,IAAI,EAAE,CAAC;QAC5E,OAAO,gBAAgB,CAAC,EAAE,CAAC;QAE3B,OAAO;YACL,GAAG,gBAAgB;YACnB,EAAE,EAAE,IAAa;SACmC,CAAC;IACzD,CAAC;CACF"}
1
+ {"version":3,"file":"client.js","sourceRoot":"","sources":["../../../src/integrations/slack/client.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAIH,OAAO,EAAE,kCAAkC,EAAE,MAAM,iBAAiB,CAAC;AACrE,OAAO,EAAE,iBAAiB,EAAE,MAAM,iCAAiC,CAAC;AAGpE,OAAO,EACL,gBAAgB,EAChB,0BAA0B,GAI3B,MAAM,YAAY,CAAC;AAEpB;;;;;;GAMG;AACH,MAAM,OAAO,eAAgB,SAAQ,iBAAiB;IACpD,KAAK,CAAC,UAAU,CACd,OAAiC,EACjC,MAAqD,EACrD,QAAwB;QAExB,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,iBAAiB,CAAC,OAAO,EAAE,MAAM,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC;QAE5E,qEAAqE;QACrE,0EAA0E;QAC1E,MAAM,WAAW,GAAG,gBAAgB,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC;QACvD,IAAI,WAAW,CAAC,OAAO,EAAE,CAAC;YACxB,OAAO,WAAW,CAAC,IAAI,CAAC;QAC1B,CAAC;QAED,6EAA6E;QAC7E,wEAAwE;QACxE,8DAA8D;QAC9D,IACE,OAAO,MAAM,KAAK,QAAQ;YAC1B,MAAM,KAAK,IAAI;YACf,IAAI,IAAI,MAAM;YACb,MAAkC,CAAC,EAAE,KAAK,KAAK,EAChD,CAAC;YACD,MAAM,kCAAkC,CACtC,kFAAkF,EAClF,WAAW,CAAC,KAAK,EACjB,MAAM,CACP,CAAC;QACJ,CAAC;QAED,gEAAgE;QAChE,MAAM,qBAAqB,GAAG,0BAA0B,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC;QAC3E,IAAI,CAAC,qBAAqB,CAAC,OAAO,EAAE,CAAC;YACnC,MAAM,kCAAkC,CACtC,kEAAkE,EAClE,qBAAqB,CAAC,KAAK,EAC3B,MAAM,CACP,CAAC;QACJ,CAAC;QAED,mEAAmE;QACnE,sEAAsE;QACtE,MAAM,gBAAgB,GAA4B;YAChD,GAAI,MAAkC;SACvC,CAAC;QACF,OAAO,gBAAgB,CAAC,EAAE,CAAC;QAE3B,MAAM,aAAa,GAAG,MAAM,CAAC,QAAQ,CAAC,SAAS,CAAC,gBAAgB,CAAC,CAAC;QAClE,IAAI,CAAC,aAAa,CAAC,OAAO,EAAE,CAAC;YAC3B,MAAM,kCAAkC,CACtC,4BAA4B,EAC5B,aAAa,CAAC,KAAK,EACnB,MAAM,CACP,CAAC;QACJ,CAAC;QAED,uEAAuE;QACvE,mEAAmE;QACnE,MAAM,gBAAgB,GAA4B,EAAE,GAAG,aAAa,CAAC,IAAI,EAAE,CAAC;QAC5E,OAAO,gBAAgB,CAAC,EAAE,CAAC;QAE3B,OAAO;YACL,GAAG,gBAAgB;YACnB,EAAE,EAAE,IAAa;SACmC,CAAC;IACzD,CAAC;CACF"}
@@ -209,6 +209,26 @@ describe("SlackClientImpl", () => {
209
209
  expect(request.headers).toEqual([{ key: "X-Custom", value: "value" }]);
210
210
  expect(request.params).toEqual([{ key: "unfurl_links", value: "false" }]);
211
211
  });
212
+ it("sends formUrlencoded bodies through the shared request builder", async () => {
213
+ const { client, executeQuery } = createClient({
214
+ ok: true,
215
+ channel: "C123",
216
+ ts: "1234567890.123456",
217
+ });
218
+ await client.apiRequest({
219
+ method: "POST",
220
+ path: "/chat.postMessage",
221
+ body: { channel: "#alerts", text: "hello" },
222
+ bodyType: "formUrlencoded",
223
+ }, { response: PostMessageSchema });
224
+ expect(executeQuery).toHaveBeenCalledWith(expect.objectContaining({
225
+ body: expect.any(String),
226
+ bodyType: "rawBody",
227
+ headers: [
228
+ { key: "Content-Type", value: "application/x-www-form-urlencoded" },
229
+ ],
230
+ }), undefined, undefined);
231
+ });
212
232
  it("passes trace metadata to executeQuery", async () => {
213
233
  const { client, executeQuery } = createClient({
214
234
  ok: true,
@@ -1 +1 @@
1
- {"version":3,"file":"client.test.js","sourceRoot":"","sources":["../../../src/integrations/slack/client.test.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"client.test.js","sourceRoot":"","sources":["../../../src/integrations/slack/client.test.ts"],"names":[],"mappings":"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"}
@@ -1,6 +1,4 @@
1
- /**
2
- * Integration utility functions.
3
- */
1
+ import { RestApiValidationError } from "../errors.js";
4
2
  /**
5
3
  * Produces a safe, human-readable description of a value's type
6
4
  * without exposing potentially sensitive data.
@@ -9,4 +7,11 @@
9
7
  * @returns A type description string (e.g. "null", "object with keys [id, name]", "string")
10
8
  */
11
9
  export declare function describeType(value: unknown): string;
10
+ /**
11
+ * Describes a caller-supplied option value for an error message with bounded
12
+ * length. Strings are quoted and truncated; everything else is described by type
13
+ * so arbitrary payloads never land in the message.
14
+ */
15
+ export declare function describeOptionValue(value: unknown): string;
16
+ export declare function validationError(message: string, path: (string | number)[]): RestApiValidationError;
12
17
  //# sourceMappingURL=utils.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../src/integrations/utils.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH;;;;;;GAMG;AACH,wBAAgB,YAAY,CAAC,KAAK,EAAE,OAAO,GAAG,MAAM,CAanD"}
1
+ {"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../src/integrations/utils.ts"],"names":[],"mappings":"AAEA,OAAO,EAAgB,sBAAsB,EAAE,MAAM,cAAc,CAAC;AAkBpE;;;;;;GAMG;AACH,wBAAgB,YAAY,CAAC,KAAK,EAAE,OAAO,GAAG,MAAM,CAcnD;AAED;;;;GAIG;AACH,wBAAgB,mBAAmB,CAAC,KAAK,EAAE,OAAO,GAAG,MAAM,CAM1D;AAMD,wBAAgB,eAAe,CAC7B,OAAO,EAAE,MAAM,EACf,IAAI,EAAE,CAAC,MAAM,GAAG,MAAM,CAAC,EAAE,GACxB,sBAAsB,CAWxB"}
@@ -1,6 +1,18 @@
1
+ import { z } from "zod";
2
+ import { isBinaryData, RestApiValidationError } from "../errors.js";
3
+ const MAX_OPTION_VALUE_CHARS = 64;
1
4
  /**
2
5
  * Integration utility functions.
3
6
  */
7
+ /**
8
+ * Truncates a string to at most `max` characters, appending "..." when it
9
+ * was cut. The single place that defines how caller-supplied strings are
10
+ * bounded for display (`describeType`, `describeOptionValue`) and for the
11
+ * Zod issue `path` (`boundedPathSegment`).
12
+ */
13
+ function truncate(value, max = MAX_OPTION_VALUE_CHARS) {
14
+ return value.length > max ? `${value.slice(0, max)}...` : value;
15
+ }
4
16
  /**
5
17
  * Produces a safe, human-readable description of a value's type
6
18
  * without exposing potentially sensitive data.
@@ -20,8 +32,37 @@ export function describeType(value) {
20
32
  const keys = Object.keys(value);
21
33
  if (keys.length === 0)
22
34
  return "empty object";
23
- return `object with keys [${keys.slice(0, 5).join(", ")}${keys.length > 5 ? ", ..." : ""}]`;
35
+ const shown = keys.slice(0, 5).map((k) => truncate(k));
36
+ return `object with keys [${shown.join(", ")}${keys.length > 5 ? ", ..." : ""}]`;
24
37
  }
25
38
  return t;
26
39
  }
40
+ /**
41
+ * Describes a caller-supplied option value for an error message with bounded
42
+ * length. Strings are quoted and truncated; everything else is described by type
43
+ * so arbitrary payloads never land in the message.
44
+ */
45
+ export function describeOptionValue(value) {
46
+ if (isBinaryData(value)) {
47
+ return `binary data (${value.byteLength} bytes)`;
48
+ }
49
+ if (typeof value !== "string")
50
+ return describeType(value);
51
+ return JSON.stringify(truncate(value));
52
+ }
53
+ function boundedPathSegment(segment) {
54
+ return typeof segment === "string" ? truncate(segment) : segment;
55
+ }
56
+ export function validationError(message, path) {
57
+ return new RestApiValidationError(message, {
58
+ data: undefined,
59
+ zodError: new z.ZodError([
60
+ {
61
+ code: z.ZodIssueCode.custom,
62
+ message,
63
+ path: path.map(boundedPathSegment),
64
+ },
65
+ ]),
66
+ });
67
+ }
27
68
  //# sourceMappingURL=utils.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"utils.js","sourceRoot":"","sources":["../../src/integrations/utils.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH;;;;;;GAMG;AACH,MAAM,UAAU,YAAY,CAAC,KAAc;IACzC,IAAI,KAAK,KAAK,IAAI;QAAE,OAAO,MAAM,CAAC;IAClC,IAAI,KAAK,KAAK,SAAS;QAAE,OAAO,WAAW,CAAC;IAC5C,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC;QAAE,OAAO,iBAAiB,KAAK,CAAC,MAAM,GAAG,CAAC;IAElE,MAAM,CAAC,GAAG,OAAO,KAAK,CAAC;IACvB,IAAI,CAAC,KAAK,QAAQ,EAAE,CAAC;QACnB,MAAM,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC,KAAgC,CAAC,CAAC;QAC3D,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC;YAAE,OAAO,cAAc,CAAC;QAC7C,OAAO,qBAAqB,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,GAAG,CAAC;IAC9F,CAAC;IAED,OAAO,CAAC,CAAC;AACX,CAAC"}
1
+ {"version":3,"file":"utils.js","sourceRoot":"","sources":["../../src/integrations/utils.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,OAAO,EAAE,YAAY,EAAE,sBAAsB,EAAE,MAAM,cAAc,CAAC;AAEpE,MAAM,sBAAsB,GAAG,EAAE,CAAC;AAElC;;GAEG;AAEH;;;;;GAKG;AACH,SAAS,QAAQ,CAAC,KAAa,EAAE,GAAG,GAAG,sBAAsB;IAC3D,OAAO,KAAK,CAAC,MAAM,GAAG,GAAG,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC;AAClE,CAAC;AAED;;;;;;GAMG;AACH,MAAM,UAAU,YAAY,CAAC,KAAc;IACzC,IAAI,KAAK,KAAK,IAAI;QAAE,OAAO,MAAM,CAAC;IAClC,IAAI,KAAK,KAAK,SAAS;QAAE,OAAO,WAAW,CAAC;IAC5C,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC;QAAE,OAAO,iBAAiB,KAAK,CAAC,MAAM,GAAG,CAAC;IAElE,MAAM,CAAC,GAAG,OAAO,KAAK,CAAC;IACvB,IAAI,CAAC,KAAK,QAAQ,EAAE,CAAC;QACnB,MAAM,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC,KAAgC,CAAC,CAAC;QAC3D,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC;YAAE,OAAO,cAAc,CAAC;QAC7C,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;QACvD,OAAO,qBAAqB,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,GAAG,CAAC;IACnF,CAAC;IAED,OAAO,CAAC,CAAC;AACX,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,mBAAmB,CAAC,KAAc;IAChD,IAAI,YAAY,CAAC,KAAK,CAAC,EAAE,CAAC;QACxB,OAAO,gBAAgB,KAAK,CAAC,UAAU,SAAS,CAAC;IACnD,CAAC;IACD,IAAI,OAAO,KAAK,KAAK,QAAQ;QAAE,OAAO,YAAY,CAAC,KAAK,CAAC,CAAC;IAC1D,OAAO,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC;AACzC,CAAC;AAED,SAAS,kBAAkB,CAAC,OAAwB;IAClD,OAAO,OAAO,OAAO,KAAK,QAAQ,CAAC,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC;AACnE,CAAC;AAED,MAAM,UAAU,eAAe,CAC7B,OAAe,EACf,IAAyB;IAEzB,OAAO,IAAI,sBAAsB,CAAC,OAAO,EAAE;QACzC,IAAI,EAAE,SAAS;QACf,QAAQ,EAAE,IAAI,CAAC,CAAC,QAAQ,CAAC;YACvB;gBACE,IAAI,EAAE,CAAC,CAAC,YAAY,CAAC,MAAM;gBAC3B,OAAO;gBACP,IAAI,EAAE,IAAI,CAAC,GAAG,CAAC,kBAAkB,CAAC;aACnC;SACF,CAAC;KACH,CAAC,CAAC;AACL,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@superblocksteam/sdk-api",
3
- "version": "2.0.165-next.0",
3
+ "version": "2.0.166-next.0",
4
4
  "description": "Superblocks SDK for TypeScript-based API definitions",
5
5
  "license": "Superblocks Community Software License",
6
6
  "files": [
@@ -22,7 +22,7 @@
22
22
  "devDependencies": {
23
23
  "@bufbuild/protobuf": "1.3.0",
24
24
  "@eslint/js": "^9.39.1",
25
- "@superblocksteam/shared": "0.9614.3",
25
+ "@superblocksteam/shared": "0.9615.0",
26
26
  "@types/node": "^20",
27
27
  "dotenv": "^16.4.5",
28
28
  "eslint": "^9.39.1",
@@ -0,0 +1,257 @@
1
+ import { describe, expect, it } from "vitest";
2
+ import { z } from "zod";
3
+
4
+ import {
5
+ REDACTED_BINARY_RESPONSE_DATA,
6
+ RestApiValidationError,
7
+ redactBinaryFromZodError,
8
+ } from "./errors.js";
9
+
10
+ function validationErrorFor(data: unknown): RestApiValidationError {
11
+ return new RestApiValidationError("validation failed", {
12
+ data,
13
+ zodError: new z.ZodError([]),
14
+ });
15
+ }
16
+
17
+ describe("RestApiValidationError", () => {
18
+ it("keeps non-binary data and redacts only the binary leaf", () => {
19
+ expect(validationErrorFor({ amount: 1 }).details.data).toEqual({
20
+ amount: 1,
21
+ });
22
+ const bytes = Uint8Array.from([1, 2, 3]);
23
+ expect(validationErrorFor(bytes).details.data).toBe(
24
+ REDACTED_BINARY_RESPONSE_DATA,
25
+ );
26
+ expect(validationErrorFor({ file: bytes }).details.data).toEqual({
27
+ file: REDACTED_BINARY_RESPONSE_DATA,
28
+ });
29
+ expect(validationErrorFor([bytes.buffer]).details.data).toEqual([
30
+ REDACTED_BINARY_RESPONSE_DATA,
31
+ ]);
32
+ expect(
33
+ validationErrorFor({ type: "Buffer", data: [1, 2, 3] }).details.data,
34
+ ).toBe(REDACTED_BINARY_RESPONSE_DATA);
35
+ expect(
36
+ validationErrorFor({
37
+ attachment: { value: new DataView(bytes.buffer), filename: "a.png" },
38
+ note: "hello",
39
+ }).details.data,
40
+ ).toEqual({
41
+ attachment: { value: REDACTED_BINARY_RESPONSE_DATA, filename: "a.png" },
42
+ note: "hello",
43
+ });
44
+ });
45
+
46
+ it("redacts binary nested inside Map and Set values and keys, keeping siblings", () => {
47
+ const bytes = Uint8Array.from([1, 2, 3]);
48
+ expect(validationErrorFor(new Map([["file", bytes]])).details.data).toEqual(
49
+ new Map([["file", REDACTED_BINARY_RESPONSE_DATA]]),
50
+ );
51
+ expect(validationErrorFor(new Map([[bytes, "file"]])).details.data).toEqual(
52
+ new Map([[REDACTED_BINARY_RESPONSE_DATA, "file"]]),
53
+ );
54
+ expect(validationErrorFor(new Set([bytes])).details.data).toEqual(
55
+ new Set([REDACTED_BINARY_RESPONSE_DATA]),
56
+ );
57
+ expect(
58
+ validationErrorFor({
59
+ attachments: new Set([{ value: bytes, filename: "a.png" }]),
60
+ }).details.data,
61
+ ).toEqual({
62
+ attachments: new Set([
63
+ { value: REDACTED_BINARY_RESPONSE_DATA, filename: "a.png" },
64
+ ]),
65
+ });
66
+ });
67
+
68
+ it("keeps circular non-binary data", () => {
69
+ const circular: Record<string, unknown> = { amount: 1 };
70
+ circular.self = circular;
71
+ expect(validationErrorFor(circular).details.data).toBe(circular);
72
+ });
73
+
74
+ it("redacts binary reached through a second, non-cyclic reference to the same object", () => {
75
+ const bytes = Uint8Array.from([1, 2, 3]);
76
+ const part = { value: bytes, filename: "a.png" };
77
+ const data = { first: part, second: part };
78
+ const result = validationErrorFor(data).details.data as {
79
+ first: unknown;
80
+ second: unknown;
81
+ };
82
+ expect(result.first).toEqual({
83
+ value: REDACTED_BINARY_RESPONSE_DATA,
84
+ filename: "a.png",
85
+ });
86
+ expect(result.second).toEqual({
87
+ value: REDACTED_BINARY_RESPONSE_DATA,
88
+ filename: "a.png",
89
+ });
90
+ expect(result.second).toBe(result.first);
91
+ });
92
+
93
+ it("redacts binary reachable through a self-cycle's back-edge", () => {
94
+ const bytes = Uint8Array.from([1, 2, 3]);
95
+ const data: Record<string, unknown> = { bytes };
96
+ data.self = data;
97
+ const result = validationErrorFor(data).details.data as {
98
+ bytes: unknown;
99
+ self: { bytes: unknown; self: unknown };
100
+ };
101
+ expect(result.bytes).toBe(REDACTED_BINARY_RESPONSE_DATA);
102
+ expect(result.self).toBe(result);
103
+ expect(result.self.bytes).toBe(REDACTED_BINARY_RESPONSE_DATA);
104
+ });
105
+
106
+ it("redacts binary reachable through a mutual two-object cycle's back-edge", () => {
107
+ const bytes = Uint8Array.from([1, 2, 3]);
108
+ const a: Record<string, unknown> = {};
109
+ const b: Record<string, unknown> = { bytes, a };
110
+ a.b = b;
111
+ const result = validationErrorFor(a).details.data as {
112
+ b: { bytes: unknown; a: { b: unknown } };
113
+ };
114
+ expect(result.b.bytes).toBe(REDACTED_BINARY_RESPONSE_DATA);
115
+ expect(result.b.a).toBe(result);
116
+ expect(result.b.a.b).toBe(result.b);
117
+ });
118
+
119
+ it("fails closed when the binary walk cannot finish", () => {
120
+ const throwingGetter = {
121
+ get secret(): string {
122
+ throw new Error("getter boom");
123
+ },
124
+ };
125
+ expect(validationErrorFor(throwingGetter).details.data).toBe(
126
+ REDACTED_BINARY_RESPONSE_DATA,
127
+ );
128
+ });
129
+
130
+ it("fails closed when nesting exceeds the binary scan depth cap", () => {
131
+ let deep: Record<string, unknown> = { leaf: true };
132
+ for (let i = 0; i < 200; i++) {
133
+ deep = { child: deep };
134
+ }
135
+ expect(validationErrorFor(deep).details.data).toBe(
136
+ REDACTED_BINARY_RESPONSE_DATA,
137
+ );
138
+ });
139
+ });
140
+
141
+ describe("redactBinaryFromZodError", () => {
142
+ it("redacts binary `received` values from invalid_literal issues", () => {
143
+ const bytes = Uint8Array.from([137, 80, 78, 71]);
144
+ const { error } = z.object({ v: z.literal("none") }).safeParse({
145
+ v: bytes,
146
+ }) as { success: false; error: z.ZodError };
147
+ const sanitized = redactBinaryFromZodError(error);
148
+
149
+ expect(error.message).toContain("137");
150
+ expect(sanitized.message).not.toContain("137");
151
+ expect(sanitized.issues[0]).toMatchObject({
152
+ code: "invalid_literal",
153
+ received: REDACTED_BINARY_RESPONSE_DATA,
154
+ });
155
+ });
156
+
157
+ it("redacts binary nested inside invalid_union branch errors", () => {
158
+ const bytes = Uint8Array.from([137, 80, 78, 71]);
159
+ const schema = z.union([z.literal("none"), z.literal("all")]);
160
+ const { error } = schema.safeParse(bytes) as {
161
+ success: false;
162
+ error: z.ZodError;
163
+ };
164
+ const sanitized = redactBinaryFromZodError(error);
165
+
166
+ expect(sanitized.message).not.toContain("137");
167
+ });
168
+
169
+ it("leaves non-binary issues untouched", () => {
170
+ const { error } = z
171
+ .object({ v: z.literal("none") })
172
+ .safeParse({ v: "other" }) as { success: false; error: z.ZodError };
173
+ const sanitized = redactBinaryFromZodError(error);
174
+
175
+ expect(sanitized.issues).toEqual(error.issues);
176
+ });
177
+
178
+ it("fails closed when the invalid_literal received value cannot be walked", () => {
179
+ const throwingGetter = {
180
+ get secret(): string {
181
+ throw new Error("getter boom");
182
+ },
183
+ };
184
+ const { error } = z.object({ v: z.literal("none") }).safeParse({
185
+ v: throwingGetter,
186
+ }) as { success: false; error: z.ZodError };
187
+
188
+ const sanitized = redactBinaryFromZodError(error);
189
+
190
+ expect(sanitized.issues[0]).toMatchObject({
191
+ code: "invalid_literal",
192
+ received: REDACTED_BINARY_RESPONSE_DATA,
193
+ });
194
+ });
195
+
196
+ it("redacts binary carried in a custom issue's params", () => {
197
+ const bytes = Uint8Array.from([137, 80, 78, 71]);
198
+ const schema = z.string().superRefine((_value, ctx) => {
199
+ ctx.addIssue({
200
+ code: z.ZodIssueCode.custom,
201
+ message: "rejected",
202
+ params: { offendingBytes: bytes },
203
+ });
204
+ });
205
+ const { error } = schema.safeParse("anything") as {
206
+ success: false;
207
+ error: z.ZodError;
208
+ };
209
+
210
+ const sanitized = redactBinaryFromZodError(error);
211
+
212
+ expect(sanitized.issues[0]).toMatchObject({
213
+ code: "custom",
214
+ params: REDACTED_BINARY_RESPONSE_DATA,
215
+ });
216
+ });
217
+
218
+ it("leaves non-binary custom issue params untouched", () => {
219
+ const schema = z.string().superRefine((_value, ctx) => {
220
+ ctx.addIssue({
221
+ code: z.ZodIssueCode.custom,
222
+ message: "rejected",
223
+ params: { reason: "too short" },
224
+ });
225
+ });
226
+ const { error } = schema.safeParse("anything") as {
227
+ success: false;
228
+ error: z.ZodError;
229
+ };
230
+
231
+ const sanitized = redactBinaryFromZodError(error);
232
+
233
+ expect(sanitized.issues[0]).toMatchObject({
234
+ code: "custom",
235
+ params: { reason: "too short" },
236
+ });
237
+ });
238
+ });
239
+
240
+ describe("RestApiValidationError zodError redaction", () => {
241
+ it("scrubs binary from details.zodError even when the caller does not pre-sanitize it", () => {
242
+ const bytes = Uint8Array.from([137, 80, 78, 71]);
243
+ const { error } = z.object({ v: z.literal("none") }).safeParse({
244
+ v: bytes,
245
+ }) as { success: false; error: z.ZodError };
246
+
247
+ const validationError = new RestApiValidationError("validation failed", {
248
+ data: bytes,
249
+ zodError: error,
250
+ });
251
+
252
+ expect(validationError.details.data).toBe(REDACTED_BINARY_RESPONSE_DATA);
253
+ expect(
254
+ JSON.stringify(validationError.details.zodError.issues),
255
+ ).not.toContain("137");
256
+ });
257
+ });