@amigo-ai/platform-sdk 0.5.10 → 0.6.1

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.
@@ -15,17 +15,25 @@ export function buildLastResponse(response) {
15
15
  };
16
16
  }
17
17
  /**
18
- * Extracts the data payload from an openapi-fetch response,
19
- * throwing ParseError if the response is empty or unexpected.
18
+ * Extracts the data payload from an openapi-fetch response.
19
+ * Empty-body success responses return undefined; other empty responses throw.
20
20
  */
21
- export function extractData(result) {
21
+ export function extractData(result, options = {}) {
22
22
  if (result.data !== undefined) {
23
23
  return attachResponseMetadata(result.data, result.response);
24
24
  }
25
- throw new ParseError('Unexpected empty response from API', result.error !== undefined ? JSON.stringify(result.error) : undefined);
25
+ if (isEmptyBodySuccess(result.response) || options.allowEmptyBody) {
26
+ return undefined;
27
+ }
28
+ // Degenerate openapi-fetch results with both data and error keep the SDK's
29
+ // original data-first behavior; without data, errors stay fatal.
30
+ if (result.error !== undefined) {
31
+ throw new ParseError('Unexpected error response from API', JSON.stringify(result.error));
32
+ }
33
+ throw new ParseError('Unexpected empty response from API', result.response ? `status=${result.response.status}` : undefined);
26
34
  }
27
- export function withResponse(result) {
28
- const data = extractData(result);
35
+ export function withResponse(result, options = {}) {
36
+ const data = extractData(result, options);
29
37
  const lastResponse = buildLastResponse(result.response);
30
38
  return {
31
39
  data,
@@ -65,6 +73,9 @@ function attachResponseMetadata(data, response) {
65
73
  defineHiddenMetadata(target, 'lastResponse', lastResponse);
66
74
  return target;
67
75
  }
76
+ function isEmptyBodySuccess(response) {
77
+ return response?.status === 204 || response?.status === 205;
78
+ }
68
79
  function defineHiddenMetadata(target, key, value) {
69
80
  try {
70
81
  Object.defineProperty(target, key, {
@@ -1 +1 @@
1
- {"version":3,"file":"utils.js","sourceRoot":"","sources":["../../src/core/utils.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"utils.js","sourceRoot":"","sources":["../../src/core/utils.ts"],"names":[],"mappings":"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"}
package/dist/index.cjs CHANGED
@@ -478,17 +478,23 @@ function buildLastResponse(response) {
478
478
  rateLimit: parseRateLimitHeaders(response.headers)
479
479
  };
480
480
  }
481
- function extractData(result) {
481
+ function extractData(result, options = {}) {
482
482
  if (result.data !== void 0) {
483
483
  return attachResponseMetadata(result.data, result.response);
484
484
  }
485
+ if (isEmptyBodySuccess(result.response) || options.allowEmptyBody) {
486
+ return void 0;
487
+ }
488
+ if (result.error !== void 0) {
489
+ throw new ParseError("Unexpected error response from API", JSON.stringify(result.error));
490
+ }
485
491
  throw new ParseError(
486
492
  "Unexpected empty response from API",
487
- result.error !== void 0 ? JSON.stringify(result.error) : void 0
493
+ result.response ? `status=${result.response.status}` : void 0
488
494
  );
489
495
  }
490
- function withResponse(result) {
491
- const data = extractData(result);
496
+ function withResponse(result, options = {}) {
497
+ const data = extractData(result, options);
492
498
  const lastResponse = buildLastResponse(result.response);
493
499
  return {
494
500
  data,
@@ -518,6 +524,9 @@ function attachResponseMetadata(data, response) {
518
524
  defineHiddenMetadata(target, "lastResponse", lastResponse);
519
525
  return target;
520
526
  }
527
+ function isEmptyBodySuccess(response) {
528
+ return response?.status === 204 || response?.status === 205;
529
+ }
521
530
  function defineHiddenMetadata(target, key, value) {
522
531
  try {
523
532
  Object.defineProperty(target, key, {
@@ -3162,10 +3171,14 @@ var AmigoClient = class _AmigoClient {
3162
3171
  return withResponse(await this.resolveApiRequest(path, "DELETE", init));
3163
3172
  }
3164
3173
  async HEAD(path, ...[init]) {
3165
- return withResponse(await this.resolveApiRequest(path, "HEAD", init));
3174
+ return withResponse(await this.resolveApiRequest(path, "HEAD", init), {
3175
+ allowEmptyBody: true
3176
+ });
3166
3177
  }
3167
3178
  async OPTIONS(path, ...[init]) {
3168
- return withResponse(await this.resolveApiRequest(path, "OPTIONS", init));
3179
+ return withResponse(await this.resolveApiRequest(path, "OPTIONS", init), {
3180
+ allowEmptyBody: true
3181
+ });
3169
3182
  }
3170
3183
  static fromPlatformClient(client, workspaceId2, baseUrl) {
3171
3184
  const instance = Object.create(_AmigoClient.prototype);