@supabase/postgrest-js 0.38.0 → 1.0.0-next.3

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 (132) hide show
  1. package/dist/main/PostgrestBuilder.d.ts +24 -0
  2. package/dist/main/PostgrestBuilder.d.ts.map +1 -0
  3. package/dist/main/{lib/types.js → PostgrestBuilder.js} +30 -43
  4. package/dist/main/PostgrestBuilder.js.map +1 -0
  5. package/dist/main/PostgrestClient.d.ts +19 -20
  6. package/dist/main/PostgrestClient.d.ts.map +1 -1
  7. package/dist/main/PostgrestClient.js +37 -14
  8. package/dist/main/PostgrestClient.js.map +1 -1
  9. package/dist/main/{lib/PostgrestFilterBuilder.d.ts → PostgrestFilterBuilder.d.ts} +47 -90
  10. package/dist/main/PostgrestFilterBuilder.d.ts.map +1 -0
  11. package/dist/main/PostgrestFilterBuilder.js +162 -0
  12. package/dist/main/PostgrestFilterBuilder.js.map +1 -0
  13. package/dist/main/PostgrestQueryBuilder.d.ts +69 -0
  14. package/dist/main/PostgrestQueryBuilder.d.ts.map +1 -0
  15. package/dist/main/{lib/PostgrestQueryBuilder.js → PostgrestQueryBuilder.js} +81 -44
  16. package/dist/main/PostgrestQueryBuilder.js.map +1 -0
  17. package/dist/{module/lib → main}/PostgrestTransformBuilder.d.ts +14 -7
  18. package/dist/main/PostgrestTransformBuilder.d.ts.map +1 -0
  19. package/dist/main/{lib/PostgrestTransformBuilder.js → PostgrestTransformBuilder.js} +14 -15
  20. package/dist/main/PostgrestTransformBuilder.js.map +1 -0
  21. package/dist/main/{lib/constants.d.ts → constants.d.ts} +0 -0
  22. package/dist/main/constants.d.ts.map +1 -0
  23. package/dist/main/{lib/constants.js → constants.js} +0 -0
  24. package/dist/main/constants.js.map +1 -0
  25. package/dist/main/index.d.ts +6 -5
  26. package/dist/main/index.d.ts.map +1 -1
  27. package/dist/main/index.js +11 -9
  28. package/dist/main/index.js.map +1 -1
  29. package/dist/main/select-query-parser.d.ts +151 -0
  30. package/dist/main/select-query-parser.d.ts.map +1 -0
  31. package/dist/main/select-query-parser.js +4 -0
  32. package/dist/main/select-query-parser.js.map +1 -0
  33. package/dist/main/types.d.ts +54 -0
  34. package/dist/main/types.d.ts.map +1 -0
  35. package/dist/main/types.js +3 -0
  36. package/dist/main/types.js.map +1 -0
  37. package/dist/main/version.d.ts +2 -0
  38. package/dist/main/version.d.ts.map +1 -0
  39. package/dist/main/{lib/version.js → version.js} +1 -2
  40. package/dist/main/version.js.map +1 -0
  41. package/dist/module/PostgrestBuilder.d.ts +24 -0
  42. package/dist/module/PostgrestBuilder.d.ts.map +1 -0
  43. package/dist/module/{lib/types.js → PostgrestBuilder.js} +27 -23
  44. package/dist/module/PostgrestBuilder.js.map +1 -0
  45. package/dist/module/PostgrestClient.d.ts +19 -20
  46. package/dist/module/PostgrestClient.d.ts.map +1 -1
  47. package/dist/module/PostgrestClient.js +37 -14
  48. package/dist/module/PostgrestClient.js.map +1 -1
  49. package/dist/module/{lib/PostgrestFilterBuilder.d.ts → PostgrestFilterBuilder.d.ts} +47 -90
  50. package/dist/module/PostgrestFilterBuilder.d.ts.map +1 -0
  51. package/dist/module/PostgrestFilterBuilder.js +156 -0
  52. package/dist/module/PostgrestFilterBuilder.js.map +1 -0
  53. package/dist/module/PostgrestQueryBuilder.d.ts +69 -0
  54. package/dist/module/PostgrestQueryBuilder.d.ts.map +1 -0
  55. package/dist/module/PostgrestQueryBuilder.js +169 -0
  56. package/dist/module/PostgrestQueryBuilder.js.map +1 -0
  57. package/dist/{main/lib → module}/PostgrestTransformBuilder.d.ts +14 -7
  58. package/dist/module/PostgrestTransformBuilder.d.ts.map +1 -0
  59. package/dist/module/{lib/PostgrestTransformBuilder.js → PostgrestTransformBuilder.js} +10 -14
  60. package/dist/module/PostgrestTransformBuilder.js.map +1 -0
  61. package/dist/module/{lib/constants.d.ts → constants.d.ts} +0 -0
  62. package/dist/module/constants.d.ts.map +1 -0
  63. package/dist/module/{lib/constants.js → constants.js} +0 -0
  64. package/dist/module/constants.js.map +1 -0
  65. package/dist/module/index.d.ts +6 -5
  66. package/dist/module/index.d.ts.map +1 -1
  67. package/dist/module/index.js +5 -5
  68. package/dist/module/index.js.map +1 -1
  69. package/dist/module/select-query-parser.d.ts +151 -0
  70. package/dist/module/select-query-parser.d.ts.map +1 -0
  71. package/dist/module/select-query-parser.js +3 -0
  72. package/dist/module/select-query-parser.js.map +1 -0
  73. package/dist/module/types.d.ts +54 -0
  74. package/dist/module/types.d.ts.map +1 -0
  75. package/dist/module/types.js +2 -0
  76. package/dist/module/types.js.map +1 -0
  77. package/dist/module/version.d.ts +2 -0
  78. package/dist/module/version.d.ts.map +1 -0
  79. package/dist/module/version.js +2 -0
  80. package/dist/module/version.js.map +1 -0
  81. package/package.json +18 -19
  82. package/dist/main/lib/PostgrestFilterBuilder.d.ts.map +0 -1
  83. package/dist/main/lib/PostgrestFilterBuilder.js +0 -396
  84. package/dist/main/lib/PostgrestFilterBuilder.js.map +0 -1
  85. package/dist/main/lib/PostgrestQueryBuilder.d.ts +0 -80
  86. package/dist/main/lib/PostgrestQueryBuilder.d.ts.map +0 -1
  87. package/dist/main/lib/PostgrestQueryBuilder.js.map +0 -1
  88. package/dist/main/lib/PostgrestRpcBuilder.d.ts +0 -20
  89. package/dist/main/lib/PostgrestRpcBuilder.d.ts.map +0 -1
  90. package/dist/main/lib/PostgrestRpcBuilder.js +0 -41
  91. package/dist/main/lib/PostgrestRpcBuilder.js.map +0 -1
  92. package/dist/main/lib/PostgrestTransformBuilder.d.ts.map +0 -1
  93. package/dist/main/lib/PostgrestTransformBuilder.js.map +0 -1
  94. package/dist/main/lib/constants.d.ts.map +0 -1
  95. package/dist/main/lib/constants.js.map +0 -1
  96. package/dist/main/lib/types.d.ts +0 -65
  97. package/dist/main/lib/types.d.ts.map +0 -1
  98. package/dist/main/lib/types.js.map +0 -1
  99. package/dist/main/lib/version.d.ts +0 -2
  100. package/dist/main/lib/version.d.ts.map +0 -1
  101. package/dist/main/lib/version.js.map +0 -1
  102. package/dist/module/lib/PostgrestFilterBuilder.d.ts.map +0 -1
  103. package/dist/module/lib/PostgrestFilterBuilder.js +0 -390
  104. package/dist/module/lib/PostgrestFilterBuilder.js.map +0 -1
  105. package/dist/module/lib/PostgrestQueryBuilder.d.ts +0 -80
  106. package/dist/module/lib/PostgrestQueryBuilder.d.ts.map +0 -1
  107. package/dist/module/lib/PostgrestQueryBuilder.js +0 -132
  108. package/dist/module/lib/PostgrestQueryBuilder.js.map +0 -1
  109. package/dist/module/lib/PostgrestRpcBuilder.d.ts +0 -20
  110. package/dist/module/lib/PostgrestRpcBuilder.d.ts.map +0 -1
  111. package/dist/module/lib/PostgrestRpcBuilder.js +0 -35
  112. package/dist/module/lib/PostgrestRpcBuilder.js.map +0 -1
  113. package/dist/module/lib/PostgrestTransformBuilder.d.ts.map +0 -1
  114. package/dist/module/lib/PostgrestTransformBuilder.js.map +0 -1
  115. package/dist/module/lib/constants.d.ts.map +0 -1
  116. package/dist/module/lib/constants.js.map +0 -1
  117. package/dist/module/lib/types.d.ts +0 -65
  118. package/dist/module/lib/types.d.ts.map +0 -1
  119. package/dist/module/lib/types.js.map +0 -1
  120. package/dist/module/lib/version.d.ts +0 -2
  121. package/dist/module/lib/version.d.ts.map +0 -1
  122. package/dist/module/lib/version.js +0 -3
  123. package/dist/module/lib/version.js.map +0 -1
  124. package/src/PostgrestClient.ts +0 -94
  125. package/src/index.ts +0 -21
  126. package/src/lib/PostgrestFilterBuilder.ts +0 -469
  127. package/src/lib/PostgrestQueryBuilder.ts +0 -230
  128. package/src/lib/PostgrestRpcBuilder.ts +0 -58
  129. package/src/lib/PostgrestTransformBuilder.ts +0 -175
  130. package/src/lib/constants.ts +0 -2
  131. package/src/lib/types.ts +0 -191
  132. package/src/lib/version.ts +0 -2
@@ -0,0 +1,24 @@
1
+ import type { Fetch, PostgrestResponse } from './types';
2
+ export default abstract class PostgrestBuilder<Result> implements PromiseLike<PostgrestResponse<Result>> {
3
+ protected method: 'GET' | 'HEAD' | 'POST' | 'PATCH' | 'DELETE';
4
+ protected url: URL;
5
+ protected headers: Record<string, string>;
6
+ protected schema?: string;
7
+ protected body?: unknown;
8
+ protected shouldThrowOnError: boolean;
9
+ protected signal?: AbortSignal;
10
+ protected fetch: Fetch;
11
+ protected allowEmpty: boolean;
12
+ constructor(builder: PostgrestBuilder<Result>);
13
+ /**
14
+ * If there's an error with the query, throwOnError will reject the promise by
15
+ * throwing the error instead of returning it as part of a successful response.
16
+ *
17
+ * {@link https://github.com/supabase/supabase-js/issues/92}
18
+ *
19
+ * @deprecated Use `throwOnError` in the `PostgrestClient` constructor instead.
20
+ */
21
+ throwOnError(throwOnError?: boolean): this;
22
+ then<TResult1 = PostgrestResponse<Result>, TResult2 = never>(onfulfilled?: ((value: PostgrestResponse<Result>) => TResult1 | PromiseLike<TResult1>) | undefined | null, onrejected?: ((reason: any) => TResult2 | PromiseLike<TResult2>) | undefined | null): PromiseLike<TResult1 | TResult2>;
23
+ }
24
+ //# sourceMappingURL=PostgrestBuilder.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"PostgrestBuilder.d.ts","sourceRoot":"","sources":["../../src/PostgrestBuilder.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,KAAK,EAAE,iBAAiB,EAAE,MAAM,SAAS,CAAA;AAEvD,MAAM,CAAC,OAAO,CAAC,QAAQ,OAAO,gBAAgB,CAAC,MAAM,CACnD,YAAW,WAAW,CAAC,iBAAiB,CAAC,MAAM,CAAC,CAAC;IAEjD,SAAS,CAAC,MAAM,EAAE,KAAK,GAAG,MAAM,GAAG,MAAM,GAAG,OAAO,GAAG,QAAQ,CAAA;IAC9D,SAAS,CAAC,GAAG,EAAE,GAAG,CAAA;IAClB,SAAS,CAAC,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;IACzC,SAAS,CAAC,MAAM,CAAC,EAAE,MAAM,CAAA;IACzB,SAAS,CAAC,IAAI,CAAC,EAAE,OAAO,CAAA;IACxB,SAAS,CAAC,kBAAkB,EAAE,OAAO,CAAA;IACrC,SAAS,CAAC,MAAM,CAAC,EAAE,WAAW,CAAA;IAC9B,SAAS,CAAC,KAAK,EAAE,KAAK,CAAA;IACtB,SAAS,CAAC,UAAU,EAAE,OAAO,CAAA;gBAEjB,OAAO,EAAE,gBAAgB,CAAC,MAAM,CAAC;IAmB7C;;;;;;;OAOG;IACH,YAAY,CAAC,YAAY,CAAC,EAAE,OAAO,GAAG,IAAI;IAK1C,IAAI,CAAC,QAAQ,GAAG,iBAAiB,CAAC,MAAM,CAAC,EAAE,QAAQ,GAAG,KAAK,EACzD,WAAW,CAAC,EACR,CAAC,CAAC,KAAK,EAAE,iBAAiB,CAAC,MAAM,CAAC,KAAK,QAAQ,GAAG,WAAW,CAAC,QAAQ,CAAC,CAAC,GACxE,SAAS,GACT,IAAI,EACR,UAAU,CAAC,EAAE,CAAC,CAAC,MAAM,EAAE,GAAG,KAAK,QAAQ,GAAG,WAAW,CAAC,QAAQ,CAAC,CAAC,GAAG,SAAS,GAAG,IAAI,GAClF,WAAW,CAAC,QAAQ,GAAG,QAAQ,CAAC;CA+FpC"}
@@ -1,23 +1,4 @@
1
1
  "use strict";
2
- var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
- if (k2 === undefined) k2 = k;
4
- Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });
5
- }) : (function(o, m, k, k2) {
6
- if (k2 === undefined) k2 = k;
7
- o[k2] = m[k];
8
- }));
9
- var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
10
- Object.defineProperty(o, "default", { enumerable: true, value: v });
11
- }) : function(o, v) {
12
- o["default"] = v;
13
- });
14
- var __importStar = (this && this.__importStar) || function (mod) {
15
- if (mod && mod.__esModule) return mod;
16
- var result = {};
17
- if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
18
- __setModuleDefault(result, mod);
19
- return result;
20
- };
21
2
  var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
22
3
  function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
23
4
  return new (P || (P = Promise))(function (resolve, reject) {
@@ -27,36 +8,41 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, ge
27
8
  step((generator = generator.apply(thisArg, _arguments || [])).next());
28
9
  });
29
10
  };
11
+ var __importDefault = (this && this.__importDefault) || function (mod) {
12
+ return (mod && mod.__esModule) ? mod : { "default": mod };
13
+ };
30
14
  Object.defineProperty(exports, "__esModule", { value: true });
31
- exports.PostgrestBuilder = void 0;
15
+ const cross_fetch_1 = __importDefault(require("cross-fetch"));
32
16
  class PostgrestBuilder {
33
17
  constructor(builder) {
34
- Object.assign(this, builder);
35
- let _fetch;
18
+ this.method = builder.method;
19
+ this.url = builder.url;
20
+ this.headers = builder.headers;
21
+ this.schema = builder.schema;
22
+ this.body = builder.body;
23
+ this.shouldThrowOnError = builder.shouldThrowOnError;
24
+ this.signal = builder.signal;
25
+ this.allowEmpty = builder.allowEmpty;
36
26
  if (builder.fetch) {
37
- _fetch = builder.fetch;
27
+ this.fetch = builder.fetch;
38
28
  }
39
29
  else if (typeof fetch === 'undefined') {
40
- _fetch = (...args) => __awaiter(this, void 0, void 0, function* () { return yield (yield Promise.resolve().then(() => __importStar(require('cross-fetch')))).fetch(...args); });
30
+ this.fetch = cross_fetch_1.default;
41
31
  }
42
32
  else {
43
- _fetch = fetch;
33
+ this.fetch = fetch;
44
34
  }
45
- this.fetch = (...args) => _fetch(...args);
46
- this.shouldThrowOnError = builder.shouldThrowOnError || false;
47
- this.allowEmpty = builder.allowEmpty || false;
48
35
  }
49
36
  /**
50
37
  * If there's an error with the query, throwOnError will reject the promise by
51
38
  * throwing the error instead of returning it as part of a successful response.
52
39
  *
53
40
  * {@link https://github.com/supabase/supabase-js/issues/92}
41
+ *
42
+ * @deprecated Use `throwOnError` in the `PostgrestClient` constructor instead.
54
43
  */
55
44
  throwOnError(throwOnError) {
56
- if (throwOnError === null || throwOnError === undefined) {
57
- throwOnError = true;
58
- }
59
- this.shouldThrowOnError = throwOnError;
45
+ this.shouldThrowOnError = throwOnError !== null && throwOnError !== void 0 ? throwOnError : true;
60
46
  return this;
61
47
  }
62
48
  then(onfulfilled, onrejected) {
@@ -73,16 +59,19 @@ class PostgrestBuilder {
73
59
  if (this.method !== 'GET' && this.method !== 'HEAD') {
74
60
  this.headers['Content-Type'] = 'application/json';
75
61
  }
76
- let res = this.fetch(this.url.toString(), {
62
+ // NOTE: Invoke w/o `this` to avoid illegal invocation error.
63
+ // https://github.com/supabase/postgrest-js/pull/247
64
+ const _fetch = this.fetch;
65
+ let res = _fetch(this.url.toString(), {
77
66
  method: this.method,
78
67
  headers: this.headers,
79
68
  body: JSON.stringify(this.body),
80
69
  signal: this.signal,
81
70
  }).then((res) => __awaiter(this, void 0, void 0, function* () {
82
71
  var _a, _b, _c, _d;
83
- let error = null;
84
- let data = null;
85
- let count = null;
72
+ let error = undefined;
73
+ let data = undefined;
74
+ let count = undefined;
86
75
  let status = res.status;
87
76
  let statusText = res.statusText;
88
77
  if (res.ok) {
@@ -116,7 +105,7 @@ class PostgrestBuilder {
116
105
  };
117
106
  }
118
107
  if (error && this.allowEmpty && ((_d = error === null || error === void 0 ? void 0 : error.details) === null || _d === void 0 ? void 0 : _d.includes('Results contain 0 rows'))) {
119
- error = null;
108
+ error = undefined;
120
109
  status = 200;
121
110
  statusText = 'OK';
122
111
  }
@@ -130,7 +119,6 @@ class PostgrestBuilder {
130
119
  count,
131
120
  status,
132
121
  statusText,
133
- body: data,
134
122
  };
135
123
  return postgrestResponse;
136
124
  }));
@@ -142,9 +130,8 @@ class PostgrestBuilder {
142
130
  hint: '',
143
131
  code: fetchError.code || '',
144
132
  },
145
- data: null,
146
- body: null,
147
- count: null,
133
+ data: undefined,
134
+ count: undefined,
148
135
  status: 400,
149
136
  statusText: 'Bad Request',
150
137
  }));
@@ -152,5 +139,5 @@ class PostgrestBuilder {
152
139
  return res.then(onfulfilled, onrejected);
153
140
  }
154
141
  }
155
- exports.PostgrestBuilder = PostgrestBuilder;
156
- //# sourceMappingURL=types.js.map
142
+ exports.default = PostgrestBuilder;
143
+ //# sourceMappingURL=PostgrestBuilder.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"PostgrestBuilder.js","sourceRoot":"","sources":["../../src/PostgrestBuilder.ts"],"names":[],"mappings":"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"}
@@ -1,14 +1,12 @@
1
- import PostgrestQueryBuilder from './lib/PostgrestQueryBuilder';
2
- import PostgrestFilterBuilder from './lib/PostgrestFilterBuilder';
3
- import { Fetch } from './lib/types';
4
- export default class PostgrestClient {
1
+ import PostgrestQueryBuilder from './PostgrestQueryBuilder';
2
+ import PostgrestFilterBuilder from './PostgrestFilterBuilder';
3
+ import { Fetch, GenericSchema } from './types';
4
+ export default class PostgrestClient<Database = any, SchemaName extends string & keyof Database = 'public' extends keyof Database ? 'public' : string & keyof Database, Schema extends GenericSchema = Database[SchemaName] extends GenericSchema ? Database[SchemaName] : any> {
5
5
  url: string;
6
- headers: {
7
- [key: string]: string;
8
- };
9
- schema?: string;
6
+ headers: Record<string, string>;
7
+ schema?: SchemaName;
10
8
  fetch?: Fetch;
11
- shouldThrowOnError?: boolean;
9
+ shouldThrowOnError: boolean;
12
10
  /**
13
11
  * Creates a PostgREST client.
14
12
  *
@@ -17,10 +15,8 @@ export default class PostgrestClient {
17
15
  * @param schema Postgres schema to switch to.
18
16
  */
19
17
  constructor(url: string, { headers, schema, fetch, throwOnError, }?: {
20
- headers?: {
21
- [key: string]: string;
22
- };
23
- schema?: string;
18
+ headers?: Record<string, string>;
19
+ schema?: SchemaName;
24
20
  fetch?: Fetch;
25
21
  throwOnError?: boolean;
26
22
  });
@@ -28,6 +24,8 @@ export default class PostgrestClient {
28
24
  * Authenticates the request with JWT.
29
25
  *
30
26
  * @param token The JWT token to use.
27
+ *
28
+ * @deprecated Use `headers` in constructor instead.
31
29
  */
32
30
  auth(token: string): this;
33
31
  /**
@@ -35,18 +33,19 @@ export default class PostgrestClient {
35
33
  *
36
34
  * @param table The table name to operate on.
37
35
  */
38
- from<T = any>(table: string): PostgrestQueryBuilder<T>;
36
+ from<TableName extends string & keyof Schema['Tables'], Table extends Schema['Tables'][TableName]>(table: TableName): PostgrestQueryBuilder<Table>;
39
37
  /**
40
38
  * Perform a function call.
41
39
  *
42
40
  * @param fn The function name to call.
43
- * @param params The parameters to pass to the function call.
44
- * @param head When set to true, no data will be returned.
45
- * @param count Count algorithm to use to count rows in a table.
41
+ * @param args The parameters to pass to the function call.
42
+ * @param options Named parameters.
43
+ * @param options.head When set to true, no data will be returned.
44
+ * @param options.count Count algorithm to use to count rows in a table.
46
45
  */
47
- rpc<T = any>(fn: string, params?: object, { head, count, }?: {
46
+ rpc<FunctionName extends string & keyof Schema['Functions'], Function_ extends Schema['Functions'][FunctionName]>(fn: FunctionName, args?: Function_['Args'], { head, count, }?: {
48
47
  head?: boolean;
49
- count?: null | 'exact' | 'planned' | 'estimated';
50
- }): PostgrestFilterBuilder<T>;
48
+ count?: 'exact' | 'planned' | 'estimated';
49
+ }): PostgrestFilterBuilder<Function_['Returns'] extends any[] ? Function_['Returns'][number] extends Record<string, unknown> ? Function_['Returns'][number] : never : never, Function_['Returns']>;
51
50
  }
52
51
  //# sourceMappingURL=PostgrestClient.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"PostgrestClient.d.ts","sourceRoot":"","sources":["../../src/PostgrestClient.ts"],"names":[],"mappings":"AAAA,OAAO,qBAAqB,MAAM,6BAA6B,CAAA;AAE/D,OAAO,sBAAsB,MAAM,8BAA8B,CAAA;AAEjE,OAAO,EAAE,KAAK,EAAE,MAAM,aAAa,CAAA;AAEnC,MAAM,CAAC,OAAO,OAAO,eAAe;IAClC,GAAG,EAAE,MAAM,CAAA;IACX,OAAO,EAAE;QAAE,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAAA;KAAE,CAAA;IAClC,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,KAAK,CAAC,EAAE,KAAK,CAAA;IACb,kBAAkB,CAAC,EAAE,OAAO,CAAA;IAE5B;;;;;;OAMG;gBAED,GAAG,EAAE,MAAM,EACX,EACE,OAAY,EACZ,MAAM,EACN,KAAK,EACL,YAAY,GACb,GAAE;QACD,OAAO,CAAC,EAAE;YAAE,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAAA;SAAE,CAAA;QACnC,MAAM,CAAC,EAAE,MAAM,CAAA;QACf,KAAK,CAAC,EAAE,KAAK,CAAA;QACb,YAAY,CAAC,EAAE,OAAO,CAAA;KAClB;IASR;;;;OAIG;IACH,IAAI,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI;IAKzB;;;;OAIG;IACH,IAAI,CAAC,CAAC,GAAG,GAAG,EAAE,KAAK,EAAE,MAAM,GAAG,qBAAqB,CAAC,CAAC,CAAC;IAUtD;;;;;;;OAOG;IACH,GAAG,CAAC,CAAC,GAAG,GAAG,EACT,EAAE,EAAE,MAAM,EACV,MAAM,CAAC,EAAE,MAAM,EACf,EACE,IAAY,EACZ,KAAY,GACb,GAAE;QACD,IAAI,CAAC,EAAE,OAAO,CAAA;QACd,KAAK,CAAC,EAAE,IAAI,GAAG,OAAO,GAAG,SAAS,GAAG,WAAW,CAAA;KAC5C,GACL,sBAAsB,CAAC,CAAC,CAAC;CAS7B"}
1
+ {"version":3,"file":"PostgrestClient.d.ts","sourceRoot":"","sources":["../../src/PostgrestClient.ts"],"names":[],"mappings":"AAAA,OAAO,qBAAqB,MAAM,yBAAyB,CAAA;AAC3D,OAAO,sBAAsB,MAAM,0BAA0B,CAAA;AAG7D,OAAO,EAAE,KAAK,EAAE,aAAa,EAAE,MAAM,SAAS,CAAA;AAE9C,MAAM,CAAC,OAAO,OAAO,eAAe,CAClC,QAAQ,GAAG,GAAG,EACd,UAAU,SAAS,MAAM,GAAG,MAAM,QAAQ,GAAG,QAAQ,SAAS,MAAM,QAAQ,GACxE,QAAQ,GACR,MAAM,GAAG,MAAM,QAAQ,EAC3B,MAAM,SAAS,aAAa,GAAG,QAAQ,CAAC,UAAU,CAAC,SAAS,aAAa,GACrE,QAAQ,CAAC,UAAU,CAAC,GACpB,GAAG;IAEP,GAAG,EAAE,MAAM,CAAA;IACX,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;IAC/B,MAAM,CAAC,EAAE,UAAU,CAAA;IACnB,KAAK,CAAC,EAAE,KAAK,CAAA;IACb,kBAAkB,EAAE,OAAO,CAAA;IAE3B;;;;;;OAMG;gBAED,GAAG,EAAE,MAAM,EACX,EACE,OAAY,EACZ,MAAM,EACN,KAAK,EACL,YAAoB,GACrB,GAAE;QACD,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;QAChC,MAAM,CAAC,EAAE,UAAU,CAAA;QACnB,KAAK,CAAC,EAAE,KAAK,CAAA;QACb,YAAY,CAAC,EAAE,OAAO,CAAA;KAClB;IASR;;;;;;OAMG;IACH,IAAI,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI;IAKzB;;;;OAIG;IACH,IAAI,CACF,SAAS,SAAS,MAAM,GAAG,MAAM,MAAM,CAAC,QAAQ,CAAC,EACjD,KAAK,SAAS,MAAM,CAAC,QAAQ,CAAC,CAAC,SAAS,CAAC,EACzC,KAAK,EAAE,SAAS,GAAG,qBAAqB,CAAC,KAAK,CAAC;IAUjD;;;;;;;;OAQG;IACH,GAAG,CACD,YAAY,SAAS,MAAM,GAAG,MAAM,MAAM,CAAC,WAAW,CAAC,EACvD,SAAS,SAAS,MAAM,CAAC,WAAW,CAAC,CAAC,YAAY,CAAC,EAEnD,EAAE,EAAE,YAAY,EAChB,IAAI,GAAE,SAAS,CAAC,MAAM,CAAM,EAC5B,EACE,IAAY,EACZ,KAAK,GACN,GAAE;QACD,IAAI,CAAC,EAAE,OAAO,CAAA;QACd,KAAK,CAAC,EAAE,OAAO,GAAG,SAAS,GAAG,WAAW,CAAA;KACrC,GACL,sBAAsB,CACvB,SAAS,CAAC,SAAS,CAAC,SAAS,GAAG,EAAE,GAC9B,SAAS,CAAC,SAAS,CAAC,CAAC,MAAM,CAAC,SAAS,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAC1D,SAAS,CAAC,SAAS,CAAC,CAAC,MAAM,CAAC,GAC5B,KAAK,GACP,KAAK,EACT,SAAS,CAAC,SAAS,CAAC,CACrB;CA8BF"}
@@ -3,9 +3,9 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
3
3
  return (mod && mod.__esModule) ? mod : { "default": mod };
4
4
  };
5
5
  Object.defineProperty(exports, "__esModule", { value: true });
6
- const PostgrestQueryBuilder_1 = __importDefault(require("./lib/PostgrestQueryBuilder"));
7
- const PostgrestRpcBuilder_1 = __importDefault(require("./lib/PostgrestRpcBuilder"));
8
- const constants_1 = require("./lib/constants");
6
+ const PostgrestQueryBuilder_1 = __importDefault(require("./PostgrestQueryBuilder"));
7
+ const PostgrestFilterBuilder_1 = __importDefault(require("./PostgrestFilterBuilder"));
8
+ const constants_1 = require("./constants");
9
9
  class PostgrestClient {
10
10
  /**
11
11
  * Creates a PostgREST client.
@@ -14,7 +14,7 @@ class PostgrestClient {
14
14
  * @param headers Custom headers.
15
15
  * @param schema Postgres schema to switch to.
16
16
  */
17
- constructor(url, { headers = {}, schema, fetch, throwOnError, } = {}) {
17
+ constructor(url, { headers = {}, schema, fetch, throwOnError = false, } = {}) {
18
18
  this.url = url;
19
19
  this.headers = Object.assign(Object.assign({}, constants_1.DEFAULT_HEADERS), headers);
20
20
  this.schema = schema;
@@ -25,6 +25,8 @@ class PostgrestClient {
25
25
  * Authenticates the request with JWT.
26
26
  *
27
27
  * @param token The JWT token to use.
28
+ *
29
+ * @deprecated Use `headers` in constructor instead.
28
30
  */
29
31
  auth(token) {
30
32
  this.headers['Authorization'] = `Bearer ${token}`;
@@ -36,9 +38,9 @@ class PostgrestClient {
36
38
  * @param table The table name to operate on.
37
39
  */
38
40
  from(table) {
39
- const url = `${this.url}/${table}`;
41
+ const url = new URL(`${this.url}/${table}`);
40
42
  return new PostgrestQueryBuilder_1.default(url, {
41
- headers: this.headers,
43
+ headers: Object.assign({}, this.headers),
42
44
  schema: this.schema,
43
45
  fetch: this.fetch,
44
46
  shouldThrowOnError: this.shouldThrowOnError,
@@ -48,18 +50,39 @@ class PostgrestClient {
48
50
  * Perform a function call.
49
51
  *
50
52
  * @param fn The function name to call.
51
- * @param params The parameters to pass to the function call.
52
- * @param head When set to true, no data will be returned.
53
- * @param count Count algorithm to use to count rows in a table.
53
+ * @param args The parameters to pass to the function call.
54
+ * @param options Named parameters.
55
+ * @param options.head When set to true, no data will be returned.
56
+ * @param options.count Count algorithm to use to count rows in a table.
54
57
  */
55
- rpc(fn, params, { head = false, count = null, } = {}) {
56
- const url = `${this.url}/rpc/${fn}`;
57
- return new PostgrestRpcBuilder_1.default(url, {
58
- headers: this.headers,
58
+ rpc(fn, args = {}, { head = false, count, } = {}) {
59
+ let method;
60
+ const url = new URL(`${this.url}/rpc/${fn}`);
61
+ let body;
62
+ if (head) {
63
+ method = 'HEAD';
64
+ Object.entries(args).forEach(([name, value]) => {
65
+ url.searchParams.append(name, `${value}`);
66
+ });
67
+ }
68
+ else {
69
+ method = 'POST';
70
+ body = args;
71
+ }
72
+ const headers = Object.assign({}, this.headers);
73
+ if (count) {
74
+ headers['Prefer'] = `count=${count}`;
75
+ }
76
+ return new PostgrestFilterBuilder_1.default({
77
+ method,
78
+ url,
79
+ headers,
59
80
  schema: this.schema,
81
+ body,
60
82
  fetch: this.fetch,
61
83
  shouldThrowOnError: this.shouldThrowOnError,
62
- }).rpc(params, { head, count });
84
+ allowEmpty: false,
85
+ });
63
86
  }
64
87
  }
65
88
  exports.default = PostgrestClient;
@@ -1 +1 @@
1
- {"version":3,"file":"PostgrestClient.js","sourceRoot":"","sources":["../../src/PostgrestClient.ts"],"names":[],"mappings":";;;;;AAAA,wFAA+D;AAC/D,oFAA2D;AAE3D,+CAAiD;AAGjD,MAAqB,eAAe;IAOlC;;;;;;OAMG;IACH,YACE,GAAW,EACX,EACE,OAAO,GAAG,EAAE,EACZ,MAAM,EACN,KAAK,EACL,YAAY,MAMV,EAAE;QAEN,IAAI,CAAC,GAAG,GAAG,GAAG,CAAA;QACd,IAAI,CAAC,OAAO,mCAAQ,2BAAe,GAAK,OAAO,CAAE,CAAA;QACjD,IAAI,CAAC,MAAM,GAAG,MAAM,CAAA;QACpB,IAAI,CAAC,KAAK,GAAG,KAAK,CAAA;QAClB,IAAI,CAAC,kBAAkB,GAAG,YAAY,CAAA;IACxC,CAAC;IAED;;;;OAIG;IACH,IAAI,CAAC,KAAa;QAChB,IAAI,CAAC,OAAO,CAAC,eAAe,CAAC,GAAG,UAAU,KAAK,EAAE,CAAA;QACjD,OAAO,IAAI,CAAA;IACb,CAAC;IAED;;;;OAIG;IACH,IAAI,CAAU,KAAa;QACzB,MAAM,GAAG,GAAG,GAAG,IAAI,CAAC,GAAG,IAAI,KAAK,EAAE,CAAA;QAClC,OAAO,IAAI,+BAAqB,CAAI,GAAG,EAAE;YACvC,OAAO,EAAE,IAAI,CAAC,OAAO;YACrB,MAAM,EAAE,IAAI,CAAC,MAAM;YACnB,KAAK,EAAE,IAAI,CAAC,KAAK;YACjB,kBAAkB,EAAE,IAAI,CAAC,kBAAkB;SAC5C,CAAC,CAAA;IACJ,CAAC;IAED;;;;;;;OAOG;IACH,GAAG,CACD,EAAU,EACV,MAAe,EACf,EACE,IAAI,GAAG,KAAK,EACZ,KAAK,GAAG,IAAI,MAIV,EAAE;QAEN,MAAM,GAAG,GAAG,GAAG,IAAI,CAAC,GAAG,QAAQ,EAAE,EAAE,CAAA;QACnC,OAAO,IAAI,6BAAmB,CAAI,GAAG,EAAE;YACrC,OAAO,EAAE,IAAI,CAAC,OAAO;YACrB,MAAM,EAAE,IAAI,CAAC,MAAM;YACnB,KAAK,EAAE,IAAI,CAAC,KAAK;YACjB,kBAAkB,EAAE,IAAI,CAAC,kBAAkB;SAC5C,CAAC,CAAC,GAAG,CAAC,MAAM,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC,CAAA;IACjC,CAAC;CACF;AAvFD,kCAuFC"}
1
+ {"version":3,"file":"PostgrestClient.js","sourceRoot":"","sources":["../../src/PostgrestClient.ts"],"names":[],"mappings":";;;;;AAAA,oFAA2D;AAC3D,sFAA6D;AAE7D,2CAA6C;AAG7C,MAAqB,eAAe;IAelC;;;;;;OAMG;IACH,YACE,GAAW,EACX,EACE,OAAO,GAAG,EAAE,EACZ,MAAM,EACN,KAAK,EACL,YAAY,GAAG,KAAK,MAMlB,EAAE;QAEN,IAAI,CAAC,GAAG,GAAG,GAAG,CAAA;QACd,IAAI,CAAC,OAAO,mCAAQ,2BAAe,GAAK,OAAO,CAAE,CAAA;QACjD,IAAI,CAAC,MAAM,GAAG,MAAM,CAAA;QACpB,IAAI,CAAC,KAAK,GAAG,KAAK,CAAA;QAClB,IAAI,CAAC,kBAAkB,GAAG,YAAY,CAAA;IACxC,CAAC;IAED;;;;;;OAMG;IACH,IAAI,CAAC,KAAa;QAChB,IAAI,CAAC,OAAO,CAAC,eAAe,CAAC,GAAG,UAAU,KAAK,EAAE,CAAA;QACjD,OAAO,IAAI,CAAA;IACb,CAAC;IAED;;;;OAIG;IACH,IAAI,CAGF,KAAgB;QAChB,MAAM,GAAG,GAAG,IAAI,GAAG,CAAC,GAAG,IAAI,CAAC,GAAG,IAAI,KAAK,EAAE,CAAC,CAAA;QAC3C,OAAO,IAAI,+BAAqB,CAAQ,GAAG,EAAE;YAC3C,OAAO,oBAAO,IAAI,CAAC,OAAO,CAAE;YAC5B,MAAM,EAAE,IAAI,CAAC,MAAM;YACnB,KAAK,EAAE,IAAI,CAAC,KAAK;YACjB,kBAAkB,EAAE,IAAI,CAAC,kBAAkB;SAC5C,CAAC,CAAA;IACJ,CAAC;IAED;;;;;;;;OAQG;IACH,GAAG,CAID,EAAgB,EAChB,OAA0B,EAAE,EAC5B,EACE,IAAI,GAAG,KAAK,EACZ,KAAK,MAIH,EAAE;QASN,IAAI,MAAuB,CAAA;QAC3B,MAAM,GAAG,GAAG,IAAI,GAAG,CAAC,GAAG,IAAI,CAAC,GAAG,QAAQ,EAAE,EAAE,CAAC,CAAA;QAC5C,IAAI,IAAyB,CAAA;QAC7B,IAAI,IAAI,EAAE;YACR,MAAM,GAAG,MAAM,CAAA;YACf,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,EAAE,KAAK,CAAC,EAAE,EAAE;gBAC7C,GAAG,CAAC,YAAY,CAAC,MAAM,CAAC,IAAI,EAAE,GAAG,KAAK,EAAE,CAAC,CAAA;YAC3C,CAAC,CAAC,CAAA;SACH;aAAM;YACL,MAAM,GAAG,MAAM,CAAA;YACf,IAAI,GAAG,IAAI,CAAA;SACZ;QAED,MAAM,OAAO,qBAAQ,IAAI,CAAC,OAAO,CAAE,CAAA;QACnC,IAAI,KAAK,EAAE;YACT,OAAO,CAAC,QAAQ,CAAC,GAAG,SAAS,KAAK,EAAE,CAAA;SACrC;QAED,OAAO,IAAI,gCAAsB,CAAC;YAChC,MAAM;YACN,GAAG;YACH,OAAO;YACP,MAAM,EAAE,IAAI,CAAC,MAAM;YACnB,IAAI;YACJ,KAAK,EAAE,IAAI,CAAC,KAAK;YACjB,kBAAkB,EAAE,IAAI,CAAC,kBAAkB;YAC3C,UAAU,EAAE,KAAK;SACmC,CAAC,CAAA;IACzD,CAAC;CACF;AApID,kCAoIC"}