@supabase/functions-js 1.1.3 → 1.2.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.
@@ -0,0 +1,4 @@
1
+ declare type Fetch = typeof fetch;
2
+ export declare const resolveFetch: (customFetch?: typeof fetch | undefined) => Fetch;
3
+ export {};
4
+ //# sourceMappingURL=helper.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"helper.d.ts","sourceRoot":"","sources":["../../src/helper.ts"],"names":[],"mappings":"AAEA,aAAK,KAAK,GAAG,OAAO,KAAK,CAAA;AAEzB,eAAO,MAAM,YAAY,8CAA0B,KAUlD,CAAA"}
@@ -0,0 +1,22 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.resolveFetch = void 0;
7
+ const cross_fetch_1 = __importDefault(require("cross-fetch"));
8
+ const resolveFetch = (customFetch) => {
9
+ let _fetch;
10
+ if (customFetch) {
11
+ _fetch = customFetch;
12
+ }
13
+ else if (typeof fetch === 'undefined') {
14
+ _fetch = cross_fetch_1.default;
15
+ }
16
+ else {
17
+ _fetch = fetch;
18
+ }
19
+ return (...args) => _fetch(...args);
20
+ };
21
+ exports.resolveFetch = resolveFetch;
22
+ //# sourceMappingURL=helper.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"helper.js","sourceRoot":"","sources":["../../src/helper.ts"],"names":[],"mappings":";;;;;;AAAA,8DAAoC;AAI7B,MAAM,YAAY,GAAG,CAAC,WAAmB,EAAS,EAAE;IACzD,IAAI,MAAa,CAAA;IACjB,IAAI,WAAW,EAAE;QACf,MAAM,GAAG,WAAW,CAAA;KACrB;SAAM,IAAI,OAAO,KAAK,KAAK,WAAW,EAAE;QACvC,MAAM,GAAG,qBAA8B,CAAA;KACxC;SAAM;QACL,MAAM,GAAG,KAAK,CAAA;KACf;IACD,OAAO,CAAC,GAAG,IAAI,EAAE,EAAE,CAAC,MAAM,CAAC,GAAG,IAAI,CAAC,CAAA;AACrC,CAAC,CAAA;AAVY,QAAA,YAAY,gBAUxB"}
@@ -19,7 +19,7 @@ export declare class FunctionsClient {
19
19
  * @param invokeOptions - object with the following properties
20
20
  * `headers`: object representing the headers to send with the request
21
21
  * `body`: the body of the request
22
- * `responseType`: how the response should be parsed
22
+ * `responseType`: how the response should be parsed. The default is `json`
23
23
  */
24
24
  invoke(functionName: string, invokeOptions?: FunctionInvokeOptions): Promise<{
25
25
  data: string | null;
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,KAAK,EAAE,qBAAqB,EAAgB,MAAM,SAAS,CAAA;AAEpE,qBAAa,eAAe;IAC1B,SAAS,CAAC,GAAG,EAAE,MAAM,CAAA;IACrB,SAAS,CAAC,OAAO,EAAE;QAAE,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAAA;KAAE,CAAA;IAC5C,SAAS,CAAC,KAAK,EAAE,KAAK,CAAA;gBAEV,GAAG,EAAE,MAAM,EAAE,OAAO,EAAE;QAAE,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAAA;KAAE,EAAE,WAAW,CAAC,EAAE,KAAK;IAahF;;;OAGG;IACH,OAAO,CAAC,KAAK,EAAE,MAAM;IAIrB;;;;;;;OAOG;IACG,MAAM,CACV,YAAY,EAAE,MAAM,EACpB,aAAa,CAAC,EAAE,qBAAqB,GACpC,OAAO,CAAC;QAAE,IAAI,EAAE,MAAM,GAAG,IAAI,CAAC;QAAC,KAAK,EAAE,KAAK,GAAG,IAAI,CAAA;KAAE,CAAC;CAyBzD"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,KAAK,EAAE,qBAAqB,EAAE,MAAM,SAAS,CAAA;AAEtD,qBAAa,eAAe;IAC1B,SAAS,CAAC,GAAG,EAAE,MAAM,CAAA;IACrB,SAAS,CAAC,OAAO,EAAE;QAAE,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAAA;KAAE,CAAA;IAC5C,SAAS,CAAC,KAAK,EAAE,KAAK,CAAA;gBAEV,GAAG,EAAE,MAAM,EAAE,OAAO,EAAE;QAAE,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAAA;KAAE,EAAE,WAAW,CAAC,EAAE,KAAK;IAOhF;;;OAGG;IACH,OAAO,CAAC,KAAK,EAAE,MAAM;IAIrB;;;;;;;OAOG;IACG,MAAM,CACV,YAAY,EAAE,MAAM,EACpB,aAAa,CAAC,EAAE,qBAAqB,GACpC,OAAO,CAAC;QAAE,IAAI,EAAE,MAAM,GAAG,IAAI,CAAC;QAAC,KAAK,EAAE,KAAK,GAAG,IAAI,CAAA;KAAE,CAAC;CA+BzD"}
@@ -8,25 +8,14 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, ge
8
8
  step((generator = generator.apply(thisArg, _arguments || [])).next());
9
9
  });
10
10
  };
11
- var __importDefault = (this && this.__importDefault) || function (mod) {
12
- return (mod && mod.__esModule) ? mod : { "default": mod };
13
- };
14
11
  Object.defineProperty(exports, "__esModule", { value: true });
15
12
  exports.FunctionsClient = void 0;
16
- const cross_fetch_1 = __importDefault(require("cross-fetch"));
13
+ const helper_1 = require("./helper");
17
14
  class FunctionsClient {
18
15
  constructor(url, headers, customFetch) {
19
16
  this.url = url;
20
17
  this.headers = headers;
21
- if (customFetch) {
22
- this.fetch = customFetch;
23
- }
24
- else if (typeof fetch !== 'undefined') {
25
- this.fetch = fetch;
26
- }
27
- else {
28
- this.fetch = cross_fetch_1.default;
29
- }
18
+ this.fetch = (0, helper_1.resolveFetch)(fetch);
30
19
  }
31
20
  /**
32
21
  * Updates the authorization header
@@ -41,7 +30,7 @@ class FunctionsClient {
41
30
  * @param invokeOptions - object with the following properties
42
31
  * `headers`: object representing the headers to send with the request
43
32
  * `body`: the body of the request
44
- * `responseType`: how the response should be parsed
33
+ * `responseType`: how the response should be parsed. The default is `json`
45
34
  */
46
35
  invoke(functionName, invokeOptions) {
47
36
  return __awaiter(this, void 0, void 0, function* () {
@@ -66,6 +55,10 @@ class FunctionsClient {
66
55
  else {
67
56
  data = yield response.text();
68
57
  }
58
+ const isRelayError = response.headers.get('x-relay-error');
59
+ if (isRelayError && isRelayError === 'true') {
60
+ return { data: null, error: data };
61
+ }
69
62
  return { data, error: null };
70
63
  }
71
64
  catch (error) {
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;AAAA,8DAAoC;AAGpC,MAAa,eAAe;IAK1B,YAAY,GAAW,EAAE,OAAkC,EAAE,WAAmB;QAC9E,IAAI,CAAC,GAAG,GAAG,GAAG,CAAA;QACd,IAAI,CAAC,OAAO,GAAG,OAAO,CAAA;QAEtB,IAAI,WAAW,EAAE;YACf,IAAI,CAAC,KAAK,GAAG,WAAW,CAAA;SACzB;aAAM,IAAI,OAAO,KAAK,KAAK,WAAW,EAAE;YACvC,IAAI,CAAC,KAAK,GAAG,KAAK,CAAA;SACnB;aAAM;YACL,IAAI,CAAC,KAAK,GAAG,qBAAU,CAAA;SACxB;IACH,CAAC;IAED;;;OAGG;IACH,OAAO,CAAC,KAAa;QACnB,IAAI,CAAC,OAAO,CAAC,aAAa,GAAG,UAAU,KAAK,EAAE,CAAA;IAChD,CAAC;IAED;;;;;;;OAOG;IACG,MAAM,CACV,YAAoB,EACpB,aAAqC;;YAErC,IAAI;gBACF,MAAM,EAAE,OAAO,EAAE,IAAI,EAAE,GAAG,aAAa,aAAb,aAAa,cAAb,aAAa,GAAI,EAAE,CAAA;gBAC7C,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,KAAK,CAAC,GAAG,IAAI,CAAC,GAAG,IAAI,YAAY,EAAE,EAAE;oBAC/D,MAAM,EAAE,MAAM;oBACd,OAAO,EAAE,MAAM,CAAC,MAAM,CAAC,EAAE,EAAE,IAAI,CAAC,OAAO,EAAE,OAAO,CAAC;oBACjD,IAAI;iBACL,CAAC,CAAA;gBAEF,IAAI,IAAI,CAAA;gBACR,MAAM,EAAE,YAAY,EAAE,GAAG,aAAa,aAAb,aAAa,cAAb,aAAa,GAAI,EAAE,CAAA;gBAC5C,IAAI,CAAC,YAAY,IAAI,YAAY,KAAK,MAAM,EAAE;oBAC5C,IAAI,GAAG,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAA;iBAC7B;qBAAM,IAAI,YAAY,KAAK,aAAa,EAAE;oBACzC,IAAI,GAAG,MAAM,QAAQ,CAAC,WAAW,EAAE,CAAA;iBACpC;qBAAM,IAAI,YAAY,KAAK,MAAM,EAAE;oBAClC,IAAI,GAAG,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAA;iBAC7B;qBAAM;oBACL,IAAI,GAAG,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAA;iBAC7B;gBACD,OAAO,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,CAAA;aAC7B;YAAC,OAAO,KAAU,EAAE;gBACnB,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,CAAA;aAC7B;QACH,CAAC;KAAA;CACF;AA9DD,0CA8DC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,qCAAuC;AAGvC,MAAa,eAAe;IAK1B,YAAY,GAAW,EAAE,OAAkC,EAAE,WAAmB;QAC9E,IAAI,CAAC,GAAG,GAAG,GAAG,CAAA;QACd,IAAI,CAAC,OAAO,GAAG,OAAO,CAAA;QAEtB,IAAI,CAAC,KAAK,GAAG,IAAA,qBAAY,EAAC,KAAK,CAAC,CAAA;IAClC,CAAC;IAED;;;OAGG;IACH,OAAO,CAAC,KAAa;QACnB,IAAI,CAAC,OAAO,CAAC,aAAa,GAAG,UAAU,KAAK,EAAE,CAAA;IAChD,CAAC;IAED;;;;;;;OAOG;IACG,MAAM,CACV,YAAoB,EACpB,aAAqC;;YAErC,IAAI;gBACF,MAAM,EAAE,OAAO,EAAE,IAAI,EAAE,GAAG,aAAa,aAAb,aAAa,cAAb,aAAa,GAAI,EAAE,CAAA;gBAC7C,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,KAAK,CAAC,GAAG,IAAI,CAAC,GAAG,IAAI,YAAY,EAAE,EAAE;oBAC/D,MAAM,EAAE,MAAM;oBACd,OAAO,EAAE,MAAM,CAAC,MAAM,CAAC,EAAE,EAAE,IAAI,CAAC,OAAO,EAAE,OAAO,CAAC;oBACjD,IAAI;iBACL,CAAC,CAAA;gBAEF,IAAI,IAAI,CAAA;gBACR,MAAM,EAAE,YAAY,EAAE,GAAG,aAAa,aAAb,aAAa,cAAb,aAAa,GAAI,EAAE,CAAA;gBAC5C,IAAI,CAAC,YAAY,IAAI,YAAY,KAAK,MAAM,EAAE;oBAC5C,IAAI,GAAG,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAA;iBAC7B;qBAAM,IAAI,YAAY,KAAK,aAAa,EAAE;oBACzC,IAAI,GAAG,MAAM,QAAQ,CAAC,WAAW,EAAE,CAAA;iBACpC;qBAAM,IAAI,YAAY,KAAK,MAAM,EAAE;oBAClC,IAAI,GAAG,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAA;iBAC7B;qBAAM;oBACL,IAAI,GAAG,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAA;iBAC7B;gBAED,MAAM,YAAY,GAAG,QAAQ,CAAC,OAAO,CAAC,GAAG,CAAC,eAAe,CAAC,CAAA;gBAC1D,IAAI,YAAY,IAAI,YAAY,KAAK,MAAM,EAAE;oBAC3C,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,CAAA;iBACnC;gBAED,OAAO,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,CAAA;aAC7B;YAAC,OAAO,KAAU,EAAE;gBACnB,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,CAAA;aAC7B;QACH,CAAC;KAAA;CACF;AA9DD,0CA8DC"}
@@ -0,0 +1,4 @@
1
+ declare type Fetch = typeof fetch;
2
+ export declare const resolveFetch: (customFetch?: typeof fetch | undefined) => Fetch;
3
+ export {};
4
+ //# sourceMappingURL=helper.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"helper.d.ts","sourceRoot":"","sources":["../../src/helper.ts"],"names":[],"mappings":"AAEA,aAAK,KAAK,GAAG,OAAO,KAAK,CAAA;AAEzB,eAAO,MAAM,YAAY,8CAA0B,KAUlD,CAAA"}
@@ -0,0 +1,15 @@
1
+ import crossFetch from 'cross-fetch';
2
+ export const resolveFetch = (customFetch) => {
3
+ let _fetch;
4
+ if (customFetch) {
5
+ _fetch = customFetch;
6
+ }
7
+ else if (typeof fetch === 'undefined') {
8
+ _fetch = crossFetch;
9
+ }
10
+ else {
11
+ _fetch = fetch;
12
+ }
13
+ return (...args) => _fetch(...args);
14
+ };
15
+ //# sourceMappingURL=helper.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"helper.js","sourceRoot":"","sources":["../../src/helper.ts"],"names":[],"mappings":"AAAA,OAAO,UAAU,MAAM,aAAa,CAAA;AAIpC,MAAM,CAAC,MAAM,YAAY,GAAG,CAAC,WAAmB,EAAS,EAAE;IACzD,IAAI,MAAa,CAAA;IACjB,IAAI,WAAW,EAAE;QACf,MAAM,GAAG,WAAW,CAAA;KACrB;SAAM,IAAI,OAAO,KAAK,KAAK,WAAW,EAAE;QACvC,MAAM,GAAG,UAA8B,CAAA;KACxC;SAAM;QACL,MAAM,GAAG,KAAK,CAAA;KACf;IACD,OAAO,CAAC,GAAG,IAAI,EAAE,EAAE,CAAC,MAAM,CAAC,GAAG,IAAI,CAAC,CAAA;AACrC,CAAC,CAAA"}
@@ -19,7 +19,7 @@ export declare class FunctionsClient {
19
19
  * @param invokeOptions - object with the following properties
20
20
  * `headers`: object representing the headers to send with the request
21
21
  * `body`: the body of the request
22
- * `responseType`: how the response should be parsed
22
+ * `responseType`: how the response should be parsed. The default is `json`
23
23
  */
24
24
  invoke(functionName: string, invokeOptions?: FunctionInvokeOptions): Promise<{
25
25
  data: string | null;
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,KAAK,EAAE,qBAAqB,EAAgB,MAAM,SAAS,CAAA;AAEpE,qBAAa,eAAe;IAC1B,SAAS,CAAC,GAAG,EAAE,MAAM,CAAA;IACrB,SAAS,CAAC,OAAO,EAAE;QAAE,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAAA;KAAE,CAAA;IAC5C,SAAS,CAAC,KAAK,EAAE,KAAK,CAAA;gBAEV,GAAG,EAAE,MAAM,EAAE,OAAO,EAAE;QAAE,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAAA;KAAE,EAAE,WAAW,CAAC,EAAE,KAAK;IAahF;;;OAGG;IACH,OAAO,CAAC,KAAK,EAAE,MAAM;IAIrB;;;;;;;OAOG;IACG,MAAM,CACV,YAAY,EAAE,MAAM,EACpB,aAAa,CAAC,EAAE,qBAAqB,GACpC,OAAO,CAAC;QAAE,IAAI,EAAE,MAAM,GAAG,IAAI,CAAC;QAAC,KAAK,EAAE,KAAK,GAAG,IAAI,CAAA;KAAE,CAAC;CAyBzD"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,KAAK,EAAE,qBAAqB,EAAE,MAAM,SAAS,CAAA;AAEtD,qBAAa,eAAe;IAC1B,SAAS,CAAC,GAAG,EAAE,MAAM,CAAA;IACrB,SAAS,CAAC,OAAO,EAAE;QAAE,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAAA;KAAE,CAAA;IAC5C,SAAS,CAAC,KAAK,EAAE,KAAK,CAAA;gBAEV,GAAG,EAAE,MAAM,EAAE,OAAO,EAAE;QAAE,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAAA;KAAE,EAAE,WAAW,CAAC,EAAE,KAAK;IAOhF;;;OAGG;IACH,OAAO,CAAC,KAAK,EAAE,MAAM;IAIrB;;;;;;;OAOG;IACG,MAAM,CACV,YAAY,EAAE,MAAM,EACpB,aAAa,CAAC,EAAE,qBAAqB,GACpC,OAAO,CAAC;QAAE,IAAI,EAAE,MAAM,GAAG,IAAI,CAAC;QAAC,KAAK,EAAE,KAAK,GAAG,IAAI,CAAA;KAAE,CAAC;CA+BzD"}
@@ -7,20 +7,12 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, ge
7
7
  step((generator = generator.apply(thisArg, _arguments || [])).next());
8
8
  });
9
9
  };
10
- import crossFetch from 'cross-fetch';
10
+ import { resolveFetch } from './helper';
11
11
  export class FunctionsClient {
12
12
  constructor(url, headers, customFetch) {
13
13
  this.url = url;
14
14
  this.headers = headers;
15
- if (customFetch) {
16
- this.fetch = customFetch;
17
- }
18
- else if (typeof fetch !== 'undefined') {
19
- this.fetch = fetch;
20
- }
21
- else {
22
- this.fetch = crossFetch;
23
- }
15
+ this.fetch = resolveFetch(fetch);
24
16
  }
25
17
  /**
26
18
  * Updates the authorization header
@@ -35,7 +27,7 @@ export class FunctionsClient {
35
27
  * @param invokeOptions - object with the following properties
36
28
  * `headers`: object representing the headers to send with the request
37
29
  * `body`: the body of the request
38
- * `responseType`: how the response should be parsed
30
+ * `responseType`: how the response should be parsed. The default is `json`
39
31
  */
40
32
  invoke(functionName, invokeOptions) {
41
33
  return __awaiter(this, void 0, void 0, function* () {
@@ -60,6 +52,10 @@ export class FunctionsClient {
60
52
  else {
61
53
  data = yield response.text();
62
54
  }
55
+ const isRelayError = response.headers.get('x-relay-error');
56
+ if (isRelayError && isRelayError === 'true') {
57
+ return { data: null, error: data };
58
+ }
63
59
  return { data, error: null };
64
60
  }
65
61
  catch (error) {
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":";;;;;;;;;AAAA,OAAO,UAAU,MAAM,aAAa,CAAA;AAGpC,MAAM,OAAO,eAAe;IAK1B,YAAY,GAAW,EAAE,OAAkC,EAAE,WAAmB;QAC9E,IAAI,CAAC,GAAG,GAAG,GAAG,CAAA;QACd,IAAI,CAAC,OAAO,GAAG,OAAO,CAAA;QAEtB,IAAI,WAAW,EAAE;YACf,IAAI,CAAC,KAAK,GAAG,WAAW,CAAA;SACzB;aAAM,IAAI,OAAO,KAAK,KAAK,WAAW,EAAE;YACvC,IAAI,CAAC,KAAK,GAAG,KAAK,CAAA;SACnB;aAAM;YACL,IAAI,CAAC,KAAK,GAAG,UAAU,CAAA;SACxB;IACH,CAAC;IAED;;;OAGG;IACH,OAAO,CAAC,KAAa;QACnB,IAAI,CAAC,OAAO,CAAC,aAAa,GAAG,UAAU,KAAK,EAAE,CAAA;IAChD,CAAC;IAED;;;;;;;OAOG;IACG,MAAM,CACV,YAAoB,EACpB,aAAqC;;YAErC,IAAI;gBACF,MAAM,EAAE,OAAO,EAAE,IAAI,EAAE,GAAG,aAAa,aAAb,aAAa,cAAb,aAAa,GAAI,EAAE,CAAA;gBAC7C,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,KAAK,CAAC,GAAG,IAAI,CAAC,GAAG,IAAI,YAAY,EAAE,EAAE;oBAC/D,MAAM,EAAE,MAAM;oBACd,OAAO,EAAE,MAAM,CAAC,MAAM,CAAC,EAAE,EAAE,IAAI,CAAC,OAAO,EAAE,OAAO,CAAC;oBACjD,IAAI;iBACL,CAAC,CAAA;gBAEF,IAAI,IAAI,CAAA;gBACR,MAAM,EAAE,YAAY,EAAE,GAAG,aAAa,aAAb,aAAa,cAAb,aAAa,GAAI,EAAE,CAAA;gBAC5C,IAAI,CAAC,YAAY,IAAI,YAAY,KAAK,MAAM,EAAE;oBAC5C,IAAI,GAAG,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAA;iBAC7B;qBAAM,IAAI,YAAY,KAAK,aAAa,EAAE;oBACzC,IAAI,GAAG,MAAM,QAAQ,CAAC,WAAW,EAAE,CAAA;iBACpC;qBAAM,IAAI,YAAY,KAAK,MAAM,EAAE;oBAClC,IAAI,GAAG,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAA;iBAC7B;qBAAM;oBACL,IAAI,GAAG,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAA;iBAC7B;gBACD,OAAO,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,CAAA;aAC7B;YAAC,OAAO,KAAU,EAAE;gBACnB,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,CAAA;aAC7B;QACH,CAAC;KAAA;CACF"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":";;;;;;;;;AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,UAAU,CAAA;AAGvC,MAAM,OAAO,eAAe;IAK1B,YAAY,GAAW,EAAE,OAAkC,EAAE,WAAmB;QAC9E,IAAI,CAAC,GAAG,GAAG,GAAG,CAAA;QACd,IAAI,CAAC,OAAO,GAAG,OAAO,CAAA;QAEtB,IAAI,CAAC,KAAK,GAAG,YAAY,CAAC,KAAK,CAAC,CAAA;IAClC,CAAC;IAED;;;OAGG;IACH,OAAO,CAAC,KAAa;QACnB,IAAI,CAAC,OAAO,CAAC,aAAa,GAAG,UAAU,KAAK,EAAE,CAAA;IAChD,CAAC;IAED;;;;;;;OAOG;IACG,MAAM,CACV,YAAoB,EACpB,aAAqC;;YAErC,IAAI;gBACF,MAAM,EAAE,OAAO,EAAE,IAAI,EAAE,GAAG,aAAa,aAAb,aAAa,cAAb,aAAa,GAAI,EAAE,CAAA;gBAC7C,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,KAAK,CAAC,GAAG,IAAI,CAAC,GAAG,IAAI,YAAY,EAAE,EAAE;oBAC/D,MAAM,EAAE,MAAM;oBACd,OAAO,EAAE,MAAM,CAAC,MAAM,CAAC,EAAE,EAAE,IAAI,CAAC,OAAO,EAAE,OAAO,CAAC;oBACjD,IAAI;iBACL,CAAC,CAAA;gBAEF,IAAI,IAAI,CAAA;gBACR,MAAM,EAAE,YAAY,EAAE,GAAG,aAAa,aAAb,aAAa,cAAb,aAAa,GAAI,EAAE,CAAA;gBAC5C,IAAI,CAAC,YAAY,IAAI,YAAY,KAAK,MAAM,EAAE;oBAC5C,IAAI,GAAG,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAA;iBAC7B;qBAAM,IAAI,YAAY,KAAK,aAAa,EAAE;oBACzC,IAAI,GAAG,MAAM,QAAQ,CAAC,WAAW,EAAE,CAAA;iBACpC;qBAAM,IAAI,YAAY,KAAK,MAAM,EAAE;oBAClC,IAAI,GAAG,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAA;iBAC7B;qBAAM;oBACL,IAAI,GAAG,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAA;iBAC7B;gBAED,MAAM,YAAY,GAAG,QAAQ,CAAC,OAAO,CAAC,GAAG,CAAC,eAAe,CAAC,CAAA;gBAC1D,IAAI,YAAY,IAAI,YAAY,KAAK,MAAM,EAAE;oBAC3C,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,CAAA;iBACnC;gBAED,OAAO,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,CAAA;aAC7B;YAAC,OAAO,KAAU,EAAE;gBACnB,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,CAAA;aAC7B;QACH,CAAC;KAAA;CACF"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@supabase/functions-js",
3
- "version": "1.1.3",
3
+ "version": "1.2.1",
4
4
  "description": "JS Client library to interact with Supabase Functions.",
5
5
  "main": "dist/main/index.js",
6
6
  "module": "dist/module/index.js",
package/src/helper.ts ADDED
@@ -0,0 +1,15 @@
1
+ import crossFetch from 'cross-fetch'
2
+
3
+ type Fetch = typeof fetch
4
+
5
+ export const resolveFetch = (customFetch?: Fetch): Fetch => {
6
+ let _fetch: Fetch
7
+ if (customFetch) {
8
+ _fetch = customFetch
9
+ } else if (typeof fetch === 'undefined') {
10
+ _fetch = crossFetch as unknown as Fetch
11
+ } else {
12
+ _fetch = fetch
13
+ }
14
+ return (...args) => _fetch(...args)
15
+ }
package/src/index.ts CHANGED
@@ -1,5 +1,5 @@
1
- import crossFetch from 'cross-fetch'
2
- import { Fetch, FunctionInvokeOptions, ResponseType } from './types'
1
+ import { resolveFetch } from './helper'
2
+ import { Fetch, FunctionInvokeOptions } from './types'
3
3
 
4
4
  export class FunctionsClient {
5
5
  protected url: string
@@ -10,13 +10,7 @@ export class FunctionsClient {
10
10
  this.url = url
11
11
  this.headers = headers
12
12
 
13
- if (customFetch) {
14
- this.fetch = customFetch
15
- } else if (typeof fetch !== 'undefined') {
16
- this.fetch = fetch
17
- } else {
18
- this.fetch = crossFetch
19
- }
13
+ this.fetch = resolveFetch(fetch)
20
14
  }
21
15
 
22
16
  /**
@@ -33,7 +27,7 @@ export class FunctionsClient {
33
27
  * @param invokeOptions - object with the following properties
34
28
  * `headers`: object representing the headers to send with the request
35
29
  * `body`: the body of the request
36
- * `responseType`: how the response should be parsed
30
+ * `responseType`: how the response should be parsed. The default is `json`
37
31
  */
38
32
  async invoke(
39
33
  functionName: string,
@@ -58,6 +52,12 @@ export class FunctionsClient {
58
52
  } else {
59
53
  data = await response.text()
60
54
  }
55
+
56
+ const isRelayError = response.headers.get('x-relay-error')
57
+ if (isRelayError && isRelayError === 'true') {
58
+ return { data: null, error: data }
59
+ }
60
+
61
61
  return { data, error: null }
62
62
  } catch (error: any) {
63
63
  return { data: null, error }