@svarabase/js 1.0.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 (49) hide show
  1. package/dist/auth/index.d.ts +172 -0
  2. package/dist/auth/index.d.ts.map +1 -0
  3. package/dist/auth/index.js +282 -0
  4. package/dist/auth/index.js.map +1 -0
  5. package/dist/auth/session.d.ts +42 -0
  6. package/dist/auth/session.d.ts.map +1 -0
  7. package/dist/auth/session.js +65 -0
  8. package/dist/auth/session.js.map +1 -0
  9. package/dist/client.d.ts +38 -0
  10. package/dist/client.d.ts.map +1 -0
  11. package/dist/client.js +41 -0
  12. package/dist/client.js.map +1 -0
  13. package/dist/db/filterBuilder.d.ts +84 -0
  14. package/dist/db/filterBuilder.d.ts.map +1 -0
  15. package/dist/db/filterBuilder.js +227 -0
  16. package/dist/db/filterBuilder.js.map +1 -0
  17. package/dist/db/index.d.ts +42 -0
  18. package/dist/db/index.d.ts.map +1 -0
  19. package/dist/db/index.js +67 -0
  20. package/dist/db/index.js.map +1 -0
  21. package/dist/esm/auth/index.js +277 -0
  22. package/dist/esm/auth/session.js +60 -0
  23. package/dist/esm/client.js +36 -0
  24. package/dist/esm/db/filterBuilder.js +222 -0
  25. package/dist/esm/db/index.js +61 -0
  26. package/dist/esm/index.js +11 -0
  27. package/dist/esm/realtime/index.js +23 -0
  28. package/dist/esm/storage/index.js +144 -0
  29. package/dist/index.d.ts +13 -0
  30. package/dist/index.d.ts.map +1 -0
  31. package/dist/index.js +21 -0
  32. package/dist/index.js.map +1 -0
  33. package/dist/realtime/index.d.ts +14 -0
  34. package/dist/realtime/index.d.ts.map +1 -0
  35. package/dist/realtime/index.js +29 -0
  36. package/dist/realtime/index.js.map +1 -0
  37. package/dist/storage/index.d.ts +74 -0
  38. package/dist/storage/index.d.ts.map +1 -0
  39. package/dist/storage/index.js +149 -0
  40. package/dist/storage/index.js.map +1 -0
  41. package/package.json +46 -0
  42. package/src/auth/index.ts +325 -0
  43. package/src/auth/session.ts +94 -0
  44. package/src/client.ts +66 -0
  45. package/src/db/filterBuilder.ts +302 -0
  46. package/src/db/index.ts +86 -0
  47. package/src/index.ts +22 -0
  48. package/src/realtime/index.ts +38 -0
  49. package/src/storage/index.ts +174 -0
package/dist/client.js ADDED
@@ -0,0 +1,41 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.SvarabaseClient = void 0;
4
+ const auth_1 = require("./auth");
5
+ const db_1 = require("./db");
6
+ const storage_1 = require("./storage");
7
+ const realtime_1 = require("./realtime");
8
+ class SvarabaseClient {
9
+ constructor(url, key, options) {
10
+ this.url = url.replace(/\/$/, '');
11
+ this.key = key;
12
+ const getAuthHeader = () => {
13
+ const session = this.auth['sessionManager']?.getSession?.();
14
+ if (session?.access_token)
15
+ return `Bearer ${session.access_token}`;
16
+ return `Bearer ${this.key}`;
17
+ };
18
+ this.auth = new auth_1.SvarabaseAuthClient(this.url, this.key, {
19
+ autoRefreshToken: options?.auth?.autoRefreshToken,
20
+ persistSession: options?.auth?.persistSession,
21
+ storageKey: options?.auth?.storageKey,
22
+ });
23
+ this._queryBuilder = new db_1.SvarabaseQueryBuilder(this.url, this.key, getAuthHeader);
24
+ this.storage = new storage_1.SvarabaseStorageClient(this.url, this.key, getAuthHeader);
25
+ this.realtime = new realtime_1.SvarabaseRealtimeClient();
26
+ }
27
+ from(table) {
28
+ return this._queryBuilder.from(table);
29
+ }
30
+ rpc(functionName, params, options) {
31
+ return this._queryBuilder.rpc(functionName, params ?? {}, options);
32
+ }
33
+ channel(id) {
34
+ return this.realtime.channel(id);
35
+ }
36
+ removeChannel(channel) {
37
+ return this.realtime.removeChannel(channel);
38
+ }
39
+ }
40
+ exports.SvarabaseClient = SvarabaseClient;
41
+ //# sourceMappingURL=client.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"client.js","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":";;;AAAA,iCAA6C;AAC7C,6BAAyD;AACzD,uCAAmD;AACnD,yCAAqD;AAgBrD,MAAa,eAAe;IAU1B,YAAY,GAAW,EAAE,GAAW,EAAE,OAAgC;QACpE,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;QAClC,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC;QAEf,MAAM,aAAa,GAAG,GAAG,EAAE;YACzB,MAAM,OAAO,GAAG,IAAI,CAAC,IAAI,CAAC,gBAAgB,CAAC,EAAE,UAAU,EAAE,EAAE,CAAC;YAC5D,IAAI,OAAO,EAAE,YAAY;gBAAE,OAAO,UAAU,OAAO,CAAC,YAAY,EAAE,CAAC;YACnE,OAAO,UAAU,IAAI,CAAC,GAAG,EAAE,CAAC;QAC9B,CAAC,CAAC;QAEF,IAAI,CAAC,IAAI,GAAG,IAAI,0BAAmB,CAAC,IAAI,CAAC,GAAG,EAAE,IAAI,CAAC,GAAG,EAAE;YACtD,gBAAgB,EAAE,OAAO,EAAE,IAAI,EAAE,gBAAgB;YACjD,cAAc,EAAE,OAAO,EAAE,IAAI,EAAE,cAAc;YAC7C,UAAU,EAAE,OAAO,EAAE,IAAI,EAAE,UAAU;SACtC,CAAC,CAAC;QAEH,IAAI,CAAC,aAAa,GAAG,IAAI,0BAAqB,CAAC,IAAI,CAAC,GAAG,EAAE,IAAI,CAAC,GAAG,EAAE,aAAa,CAAC,CAAC;QAClF,IAAI,CAAC,OAAO,GAAG,IAAI,gCAAsB,CAAC,IAAI,CAAC,GAAG,EAAE,IAAI,CAAC,GAAG,EAAE,aAAa,CAAC,CAAC;QAC7E,IAAI,CAAC,QAAQ,GAAG,IAAI,kCAAuB,EAAE,CAAC;IAChD,CAAC;IAED,IAAI,CAA8B,KAAa;QAC7C,OAAO,IAAI,CAAC,aAAa,CAAC,IAAI,CAAI,KAAK,CAAC,CAAC;IAC3C,CAAC;IAED,GAAG,CAAc,YAAoB,EAAE,MAAgC,EAAE,OAA6C;QACpH,OAAO,IAAI,CAAC,aAAa,CAAC,GAAG,CAAI,YAAY,EAAE,MAAM,IAAI,EAAE,EAAE,OAAO,CAAC,CAAC;IACxE,CAAC;IAED,OAAO,CAAC,EAAU;QAChB,OAAO,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;IACnC,CAAC;IAED,aAAa,CAAC,OAAuD;QACnE,OAAO,IAAI,CAAC,QAAQ,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC;IAC9C,CAAC;CACF;AA9CD,0CA8CC"}
@@ -0,0 +1,84 @@
1
+ export type FilterOperator = 'eq' | 'neq' | 'gt' | 'gte' | 'lt' | 'lte' | 'like' | 'ilike' | 'is' | 'in' | 'cs' | 'cd' | 'not';
2
+ export interface QueryState {
3
+ table: string;
4
+ selectCols: string;
5
+ filters: Array<{
6
+ key: string;
7
+ value: string;
8
+ }>;
9
+ orderByStr: string | null;
10
+ limitVal: number | null;
11
+ offsetVal: number | null;
12
+ countMode: 'exact' | null;
13
+ isHead: boolean;
14
+ isSingle: boolean;
15
+ isMaybeSingle: boolean;
16
+ method: 'GET' | 'POST' | 'PATCH' | 'DELETE';
17
+ body?: unknown;
18
+ isUpsert: boolean;
19
+ onConflict?: string;
20
+ }
21
+ export type PostgrestSingleResponse<T> = {
22
+ data: T | null;
23
+ error: {
24
+ message: string;
25
+ code: string;
26
+ details: string;
27
+ hint: string;
28
+ } | null;
29
+ count: number | null;
30
+ status: number;
31
+ statusText: string;
32
+ };
33
+ export type PostgrestResponse<T> = {
34
+ data: T[] | null;
35
+ error: {
36
+ message: string;
37
+ code: string;
38
+ details: string;
39
+ hint: string;
40
+ } | null;
41
+ count: number | null;
42
+ status: number;
43
+ statusText: string;
44
+ };
45
+ export declare class FilterBuilder<T = unknown> {
46
+ protected state: QueryState;
47
+ protected url: string;
48
+ protected key: string;
49
+ protected getAuthHeader: () => string;
50
+ constructor(url: string, key: string, getAuthHeader: () => string, table: string, method?: 'GET' | 'POST' | 'PATCH' | 'DELETE', body?: unknown, isUpsert?: boolean, onConflict?: string);
51
+ select(cols: string, options?: {
52
+ count?: 'exact';
53
+ head?: boolean;
54
+ }): this;
55
+ eq(column: string, value: unknown): this;
56
+ neq(column: string, value: unknown): this;
57
+ gt(column: string, value: unknown): this;
58
+ gte(column: string, value: unknown): this;
59
+ lt(column: string, value: unknown): this;
60
+ lte(column: string, value: unknown): this;
61
+ like(column: string, pattern: string): this;
62
+ ilike(column: string, pattern: string): this;
63
+ is(column: string, value: boolean | null): this;
64
+ in(column: string, values: unknown[]): this;
65
+ contains(column: string, value: unknown): this;
66
+ not(column: string, operator: string, value: unknown): this;
67
+ or(filters: string, options?: {
68
+ foreignTable?: string;
69
+ }): this;
70
+ order(column: string, options?: {
71
+ ascending?: boolean;
72
+ nullsFirst?: boolean;
73
+ }): this;
74
+ limit(count: number): this;
75
+ range(from: number, to: number): this;
76
+ single(): PromiseLike<PostgrestSingleResponse<T>>;
77
+ maybeSingle(): PromiseLike<PostgrestSingleResponse<T | null>>;
78
+ then<R>(onfulfilled?: ((value: PostgrestResponse<T> | PostgrestSingleResponse<T>) => R) | null, onrejected?: ((reason: unknown) => R) | null): Promise<R>;
79
+ catch<R>(onrejected?: ((reason: unknown) => R) | null): Promise<R | PostgrestResponse<T> | PostgrestSingleResponse<T>>;
80
+ protected buildUrl(): string;
81
+ protected buildHeaders(): Record<string, string>;
82
+ protected _execute(): Promise<PostgrestResponse<T> | PostgrestSingleResponse<T>>;
83
+ }
84
+ //# sourceMappingURL=filterBuilder.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"filterBuilder.d.ts","sourceRoot":"","sources":["../../src/db/filterBuilder.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,227 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.FilterBuilder = void 0;
4
+ class FilterBuilder {
5
+ constructor(url, key, getAuthHeader, table, method = 'GET', body, isUpsert = false, onConflict) {
6
+ this.url = url;
7
+ this.key = key;
8
+ this.getAuthHeader = getAuthHeader;
9
+ this.state = {
10
+ table,
11
+ selectCols: '*',
12
+ filters: [],
13
+ orderByStr: null,
14
+ limitVal: null,
15
+ offsetVal: null,
16
+ countMode: null,
17
+ isHead: false,
18
+ isSingle: false,
19
+ isMaybeSingle: false,
20
+ method,
21
+ body,
22
+ isUpsert,
23
+ onConflict,
24
+ };
25
+ }
26
+ select(cols, options) {
27
+ this.state.selectCols = cols || '*';
28
+ if (options?.count)
29
+ this.state.countMode = options.count;
30
+ if (options?.head)
31
+ this.state.isHead = true;
32
+ return this;
33
+ }
34
+ eq(column, value) {
35
+ this.state.filters.push({ key: column, value: `eq.${value}` });
36
+ return this;
37
+ }
38
+ neq(column, value) {
39
+ this.state.filters.push({ key: column, value: `neq.${value}` });
40
+ return this;
41
+ }
42
+ gt(column, value) {
43
+ this.state.filters.push({ key: column, value: `gt.${value}` });
44
+ return this;
45
+ }
46
+ gte(column, value) {
47
+ this.state.filters.push({ key: column, value: `gte.${value}` });
48
+ return this;
49
+ }
50
+ lt(column, value) {
51
+ this.state.filters.push({ key: column, value: `lt.${value}` });
52
+ return this;
53
+ }
54
+ lte(column, value) {
55
+ this.state.filters.push({ key: column, value: `lte.${value}` });
56
+ return this;
57
+ }
58
+ like(column, pattern) {
59
+ this.state.filters.push({ key: column, value: `like.${pattern}` });
60
+ return this;
61
+ }
62
+ ilike(column, pattern) {
63
+ this.state.filters.push({ key: column, value: `ilike.${pattern}` });
64
+ return this;
65
+ }
66
+ is(column, value) {
67
+ this.state.filters.push({ key: column, value: `is.${value}` });
68
+ return this;
69
+ }
70
+ in(column, values) {
71
+ this.state.filters.push({ key: column, value: `in.(${values.join(',')})` });
72
+ return this;
73
+ }
74
+ contains(column, value) {
75
+ this.state.filters.push({ key: column, value: `cs.${JSON.stringify(value)}` });
76
+ return this;
77
+ }
78
+ not(column, operator, value) {
79
+ this.state.filters.push({ key: column, value: `not.${operator}.${value}` });
80
+ return this;
81
+ }
82
+ or(filters, options) {
83
+ const key = options?.foreignTable ? `${options.foreignTable}.or` : 'or';
84
+ this.state.filters.push({ key, value: `(${filters})` });
85
+ return this;
86
+ }
87
+ order(column, options) {
88
+ const dir = options?.ascending === false ? 'desc' : 'asc';
89
+ const nulls = options?.nullsFirst ? '.nullsfirst' : '';
90
+ this.state.orderByStr = (this.state.orderByStr ? this.state.orderByStr + ',' : '') + `${column}.${dir}${nulls}`;
91
+ return this;
92
+ }
93
+ limit(count) {
94
+ this.state.limitVal = count;
95
+ return this;
96
+ }
97
+ range(from, to) {
98
+ this.state.offsetVal = from;
99
+ this.state.limitVal = to - from + 1;
100
+ return this;
101
+ }
102
+ single() {
103
+ this.state.isSingle = true;
104
+ return this;
105
+ }
106
+ maybeSingle() {
107
+ this.state.isMaybeSingle = true;
108
+ return this;
109
+ }
110
+ then(onfulfilled, onrejected) {
111
+ return this._execute().then(onfulfilled, onrejected);
112
+ }
113
+ catch(onrejected) {
114
+ return this._execute().catch(onrejected);
115
+ }
116
+ buildUrl() {
117
+ const params = new URLSearchParams();
118
+ if (this.state.method === 'GET' || this.state.method === 'DELETE') {
119
+ if (this.state.selectCols && this.state.selectCols !== '*') {
120
+ params.set('select', this.state.selectCols);
121
+ }
122
+ else if (this.state.selectCols) {
123
+ params.set('select', this.state.selectCols);
124
+ }
125
+ for (const { key, value } of this.state.filters) {
126
+ params.set(key, value);
127
+ }
128
+ if (this.state.orderByStr)
129
+ params.set('order', this.state.orderByStr);
130
+ if (this.state.limitVal != null)
131
+ params.set('limit', String(this.state.limitVal));
132
+ if (this.state.offsetVal != null)
133
+ params.set('offset', String(this.state.offsetVal));
134
+ }
135
+ else {
136
+ // For POST/PATCH, filters go as query params too
137
+ for (const { key, value } of this.state.filters) {
138
+ params.set(key, value);
139
+ }
140
+ if (this.state.isUpsert && this.state.onConflict) {
141
+ params.set('on_conflict', this.state.onConflict);
142
+ }
143
+ }
144
+ const qs = params.toString();
145
+ return `${this.url}/rest/v1/${this.state.table}${qs ? '?' + qs : ''}`;
146
+ }
147
+ buildHeaders() {
148
+ const headers = {
149
+ 'Content-Type': 'application/json',
150
+ apikey: this.key,
151
+ Authorization: this.getAuthHeader(),
152
+ };
153
+ const prefer = [];
154
+ if (this.state.countMode)
155
+ prefer.push(`count=${this.state.countMode}`);
156
+ if (this.state.isUpsert)
157
+ prefer.push('resolution=merge-duplicates');
158
+ if (prefer.length > 0)
159
+ headers['Prefer'] = prefer.join(',');
160
+ if (this.state.isHead)
161
+ headers['method'] = 'HEAD';
162
+ return headers;
163
+ }
164
+ async _execute() {
165
+ const url = this.buildUrl();
166
+ const headers = this.buildHeaders();
167
+ const init = {
168
+ method: this.state.method,
169
+ headers,
170
+ };
171
+ if (this.state.body !== undefined && (this.state.method === 'POST' || this.state.method === 'PATCH')) {
172
+ init.body = JSON.stringify(this.state.body);
173
+ }
174
+ // Use HEAD for count-only
175
+ if (this.state.isHead) {
176
+ init.method = 'HEAD';
177
+ }
178
+ const res = await fetch(url, init);
179
+ const contentRange = res.headers.get('Content-Range');
180
+ const count = contentRange ? parseInt(contentRange.split('/')[1]) : null;
181
+ if (this.state.isHead) {
182
+ return { data: null, error: null, count, status: res.status, statusText: res.statusText };
183
+ }
184
+ if (!res.ok) {
185
+ const errData = await res.json().catch(() => ({}));
186
+ return {
187
+ data: null,
188
+ error: {
189
+ message: (errData.message ?? errData.error_description ?? 'Query failed'),
190
+ code: String(res.status),
191
+ details: (errData.details ?? ''),
192
+ hint: (errData.hint ?? ''),
193
+ },
194
+ count: null,
195
+ status: res.status,
196
+ statusText: res.statusText,
197
+ };
198
+ }
199
+ const raw = await res.json();
200
+ if (this.state.isSingle) {
201
+ if (!raw || (Array.isArray(raw) && raw.length === 0)) {
202
+ return {
203
+ data: null,
204
+ error: { message: 'JSON object requested, multiple (or no) rows returned', code: 'PGRST116', details: '', hint: '' },
205
+ count,
206
+ status: 406,
207
+ statusText: 'Not Acceptable',
208
+ };
209
+ }
210
+ const single = Array.isArray(raw) ? raw[0] : raw;
211
+ return { data: single, error: null, count, status: res.status, statusText: res.statusText };
212
+ }
213
+ if (this.state.isMaybeSingle) {
214
+ const single = Array.isArray(raw) ? (raw[0] ?? null) : raw;
215
+ return { data: single, error: null, count, status: res.status, statusText: res.statusText };
216
+ }
217
+ return {
218
+ data: (Array.isArray(raw) ? raw : [raw]),
219
+ error: null,
220
+ count,
221
+ status: res.status,
222
+ statusText: res.statusText,
223
+ };
224
+ }
225
+ }
226
+ exports.FilterBuilder = FilterBuilder;
227
+ //# sourceMappingURL=filterBuilder.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"filterBuilder.js","sourceRoot":"","sources":["../../src/db/filterBuilder.ts"],"names":[],"mappings":";;;AAmCA,MAAa,aAAa;IAMxB,YACE,GAAW,EACX,GAAW,EACX,aAA2B,EAC3B,KAAa,EACb,SAA8C,KAAK,EACnD,IAAc,EACd,QAAQ,GAAG,KAAK,EAChB,UAAmB;QAEnB,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC;QACf,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC;QACf,IAAI,CAAC,aAAa,GAAG,aAAa,CAAC;QACnC,IAAI,CAAC,KAAK,GAAG;YACX,KAAK;YACL,UAAU,EAAE,GAAG;YACf,OAAO,EAAE,EAAE;YACX,UAAU,EAAE,IAAI;YAChB,QAAQ,EAAE,IAAI;YACd,SAAS,EAAE,IAAI;YACf,SAAS,EAAE,IAAI;YACf,MAAM,EAAE,KAAK;YACb,QAAQ,EAAE,KAAK;YACf,aAAa,EAAE,KAAK;YACpB,MAAM;YACN,IAAI;YACJ,QAAQ;YACR,UAAU;SACX,CAAC;IACJ,CAAC;IAED,MAAM,CAAC,IAAY,EAAE,OAA6C;QAChE,IAAI,CAAC,KAAK,CAAC,UAAU,GAAG,IAAI,IAAI,GAAG,CAAC;QACpC,IAAI,OAAO,EAAE,KAAK;YAAE,IAAI,CAAC,KAAK,CAAC,SAAS,GAAG,OAAO,CAAC,KAAK,CAAC;QACzD,IAAI,OAAO,EAAE,IAAI;YAAE,IAAI,CAAC,KAAK,CAAC,MAAM,GAAG,IAAI,CAAC;QAC5C,OAAO,IAAI,CAAC;IACd,CAAC;IAED,EAAE,CAAC,MAAc,EAAE,KAAc;QAC/B,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,KAAK,EAAE,EAAE,CAAC,CAAC;QAC/D,OAAO,IAAI,CAAC;IACd,CAAC;IAED,GAAG,CAAC,MAAc,EAAE,KAAc;QAChC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,KAAK,EAAE,EAAE,CAAC,CAAC;QAChE,OAAO,IAAI,CAAC;IACd,CAAC;IAED,EAAE,CAAC,MAAc,EAAE,KAAc;QAC/B,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,KAAK,EAAE,EAAE,CAAC,CAAC;QAC/D,OAAO,IAAI,CAAC;IACd,CAAC;IAED,GAAG,CAAC,MAAc,EAAE,KAAc;QAChC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,KAAK,EAAE,EAAE,CAAC,CAAC;QAChE,OAAO,IAAI,CAAC;IACd,CAAC;IAED,EAAE,CAAC,MAAc,EAAE,KAAc;QAC/B,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,KAAK,EAAE,EAAE,CAAC,CAAC;QAC/D,OAAO,IAAI,CAAC;IACd,CAAC;IAED,GAAG,CAAC,MAAc,EAAE,KAAc;QAChC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,KAAK,EAAE,EAAE,CAAC,CAAC;QAChE,OAAO,IAAI,CAAC;IACd,CAAC;IAED,IAAI,CAAC,MAAc,EAAE,OAAe;QAClC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,QAAQ,OAAO,EAAE,EAAE,CAAC,CAAC;QACnE,OAAO,IAAI,CAAC;IACd,CAAC;IAED,KAAK,CAAC,MAAc,EAAE,OAAe;QACnC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,SAAS,OAAO,EAAE,EAAE,CAAC,CAAC;QACpE,OAAO,IAAI,CAAC;IACd,CAAC;IAED,EAAE,CAAC,MAAc,EAAE,KAAqB;QACtC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,KAAK,EAAE,EAAE,CAAC,CAAC;QAC/D,OAAO,IAAI,CAAC;IACd,CAAC;IAED,EAAE,CAAC,MAAc,EAAE,MAAiB;QAClC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC,CAAC;QAC5E,OAAO,IAAI,CAAC;IACd,CAAC;IAED,QAAQ,CAAC,MAAc,EAAE,KAAc;QACrC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,EAAE,EAAE,CAAC,CAAC;QAC/E,OAAO,IAAI,CAAC;IACd,CAAC;IAED,GAAG,CAAC,MAAc,EAAE,QAAgB,EAAE,KAAc;QAClD,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,QAAQ,IAAI,KAAK,EAAE,EAAE,CAAC,CAAC;QAC5E,OAAO,IAAI,CAAC;IACd,CAAC;IAED,EAAE,CAAC,OAAe,EAAE,OAAmC;QACrD,MAAM,GAAG,GAAG,OAAO,EAAE,YAAY,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,YAAY,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC;QACxE,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,GAAG,EAAE,KAAK,EAAE,IAAI,OAAO,GAAG,EAAE,CAAC,CAAC;QACxD,OAAO,IAAI,CAAC;IACd,CAAC;IAED,KAAK,CAAC,MAAc,EAAE,OAAuD;QAC3E,MAAM,GAAG,GAAG,OAAO,EAAE,SAAS,KAAK,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC;QAC1D,MAAM,KAAK,GAAG,OAAO,EAAE,UAAU,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,EAAE,CAAC;QACvD,IAAI,CAAC,KAAK,CAAC,UAAU,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,UAAU,GAAG,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,GAAG,MAAM,IAAI,GAAG,GAAG,KAAK,EAAE,CAAC;QAChH,OAAO,IAAI,CAAC;IACd,CAAC;IAED,KAAK,CAAC,KAAa;QACjB,IAAI,CAAC,KAAK,CAAC,QAAQ,GAAG,KAAK,CAAC;QAC5B,OAAO,IAAI,CAAC;IACd,CAAC;IAED,KAAK,CAAC,IAAY,EAAE,EAAU;QAC5B,IAAI,CAAC,KAAK,CAAC,SAAS,GAAG,IAAI,CAAC;QAC5B,IAAI,CAAC,KAAK,CAAC,QAAQ,GAAG,EAAE,GAAG,IAAI,GAAG,CAAC,CAAC;QACpC,OAAO,IAAI,CAAC;IACd,CAAC;IAED,MAAM;QACJ,IAAI,CAAC,KAAK,CAAC,QAAQ,GAAG,IAAI,CAAC;QAC3B,OAAO,IAA0D,CAAC;IACpE,CAAC;IAED,WAAW;QACT,IAAI,CAAC,KAAK,CAAC,aAAa,GAAG,IAAI,CAAC;QAChC,OAAO,IAAiE,CAAC;IAC3E,CAAC;IAED,IAAI,CACF,WAAsF,EACtF,UAA4C;QAE5C,OAAO,IAAI,CAAC,QAAQ,EAAE,CAAC,IAAI,CAAC,WAAoB,EAAE,UAAmB,CAAC,CAAC;IACzE,CAAC;IAED,KAAK,CAAI,UAA4C;QACnD,OAAO,IAAI,CAAC,QAAQ,EAAE,CAAC,KAAK,CAAC,UAAmB,CAAC,CAAC;IACpD,CAAC;IAES,QAAQ;QAChB,MAAM,MAAM,GAAG,IAAI,eAAe,EAAE,CAAC;QAErC,IAAI,IAAI,CAAC,KAAK,CAAC,MAAM,KAAK,KAAK,IAAI,IAAI,CAAC,KAAK,CAAC,MAAM,KAAK,QAAQ,EAAE,CAAC;YAClE,IAAI,IAAI,CAAC,KAAK,CAAC,UAAU,IAAI,IAAI,CAAC,KAAK,CAAC,UAAU,KAAK,GAAG,EAAE,CAAC;gBAC3D,MAAM,CAAC,GAAG,CAAC,QAAQ,EAAE,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC;YAC9C,CAAC;iBAAM,IAAI,IAAI,CAAC,KAAK,CAAC,UAAU,EAAE,CAAC;gBACjC,MAAM,CAAC,GAAG,CAAC,QAAQ,EAAE,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC;YAC9C,CAAC;YACD,KAAK,MAAM,EAAE,GAAG,EAAE,KAAK,EAAE,IAAI,IAAI,CAAC,KAAK,CAAC,OAAO,EAAE,CAAC;gBAChD,MAAM,CAAC,GAAG,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;YACzB,CAAC;YACD,IAAI,IAAI,CAAC,KAAK,CAAC,UAAU;gBAAE,MAAM,CAAC,GAAG,CAAC,OAAO,EAAE,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC;YACtE,IAAI,IAAI,CAAC,KAAK,CAAC,QAAQ,IAAI,IAAI;gBAAE,MAAM,CAAC,GAAG,CAAC,OAAO,EAAE,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC;YAClF,IAAI,IAAI,CAAC,KAAK,CAAC,SAAS,IAAI,IAAI;gBAAE,MAAM,CAAC,GAAG,CAAC,QAAQ,EAAE,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC,CAAC;QACvF,CAAC;aAAM,CAAC;YACN,iDAAiD;YACjD,KAAK,MAAM,EAAE,GAAG,EAAE,KAAK,EAAE,IAAI,IAAI,CAAC,KAAK,CAAC,OAAO,EAAE,CAAC;gBAChD,MAAM,CAAC,GAAG,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;YACzB,CAAC;YACD,IAAI,IAAI,CAAC,KAAK,CAAC,QAAQ,IAAI,IAAI,CAAC,KAAK,CAAC,UAAU,EAAE,CAAC;gBACjD,MAAM,CAAC,GAAG,CAAC,aAAa,EAAE,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC;YACnD,CAAC;QACH,CAAC;QAED,MAAM,EAAE,GAAG,MAAM,CAAC,QAAQ,EAAE,CAAC;QAC7B,OAAO,GAAG,IAAI,CAAC,GAAG,YAAY,IAAI,CAAC,KAAK,CAAC,KAAK,GAAG,EAAE,CAAC,CAAC,CAAC,GAAG,GAAG,EAAE,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC;IACxE,CAAC;IAES,YAAY;QACpB,MAAM,OAAO,GAA2B;YACtC,cAAc,EAAE,kBAAkB;YAClC,MAAM,EAAE,IAAI,CAAC,GAAG;YAChB,aAAa,EAAE,IAAI,CAAC,aAAa,EAAE;SACpC,CAAC;QAEF,MAAM,MAAM,GAAa,EAAE,CAAC;QAC5B,IAAI,IAAI,CAAC,KAAK,CAAC,SAAS;YAAE,MAAM,CAAC,IAAI,CAAC,SAAS,IAAI,CAAC,KAAK,CAAC,SAAS,EAAE,CAAC,CAAC;QACvE,IAAI,IAAI,CAAC,KAAK,CAAC,QAAQ;YAAE,MAAM,CAAC,IAAI,CAAC,6BAA6B,CAAC,CAAC;QACpE,IAAI,MAAM,CAAC,MAAM,GAAG,CAAC;YAAE,OAAO,CAAC,QAAQ,CAAC,GAAG,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QAE5D,IAAI,IAAI,CAAC,KAAK,CAAC,MAAM;YAAE,OAAO,CAAC,QAAQ,CAAC,GAAG,MAAM,CAAC;QAElD,OAAO,OAAO,CAAC;IACjB,CAAC;IAES,KAAK,CAAC,QAAQ;QACtB,MAAM,GAAG,GAAG,IAAI,CAAC,QAAQ,EAAE,CAAC;QAC5B,MAAM,OAAO,GAAG,IAAI,CAAC,YAAY,EAAE,CAAC;QAEpC,MAAM,IAAI,GAAgB;YACxB,MAAM,EAAE,IAAI,CAAC,KAAK,CAAC,MAAM;YACzB,OAAO;SACR,CAAC;QAEF,IAAI,IAAI,CAAC,KAAK,CAAC,IAAI,KAAK,SAAS,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,KAAK,MAAM,IAAI,IAAI,CAAC,KAAK,CAAC,MAAM,KAAK,OAAO,CAAC,EAAE,CAAC;YACrG,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;QAC9C,CAAC;QAED,0BAA0B;QAC1B,IAAI,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE,CAAC;YACtB,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;QACvB,CAAC;QAED,MAAM,GAAG,GAAG,MAAM,KAAK,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;QACnC,MAAM,YAAY,GAAG,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,eAAe,CAAC,CAAC;QACtD,MAAM,KAAK,GAAG,YAAY,CAAC,CAAC,CAAC,QAAQ,CAAC,YAAY,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;QAEzE,IAAI,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE,CAAC;YACtB,OAAO,EAAE,IAAI,EAAE,IAAa,EAAE,KAAK,EAAE,IAAI,EAAE,KAAK,EAAE,MAAM,EAAE,GAAG,CAAC,MAAM,EAAE,UAAU,EAAE,GAAG,CAAC,UAAU,EAAE,CAAC;QACrG,CAAC;QAED,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE,CAAC;YACZ,MAAM,OAAO,GAAG,MAAM,GAAG,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,CAAC,EAAE,CAAC,CAA4B,CAAC;YAC9E,OAAO;gBACL,IAAI,EAAE,IAAa;gBACnB,KAAK,EAAE;oBACL,OAAO,EAAE,CAAC,OAAO,CAAC,OAAO,IAAI,OAAO,CAAC,iBAAiB,IAAI,cAAc,CAAW;oBACnF,IAAI,EAAE,MAAM,CAAC,GAAG,CAAC,MAAM,CAAC;oBACxB,OAAO,EAAE,CAAC,OAAO,CAAC,OAAO,IAAI,EAAE,CAAW;oBAC1C,IAAI,EAAE,CAAC,OAAO,CAAC,IAAI,IAAI,EAAE,CAAW;iBACrC;gBACD,KAAK,EAAE,IAAI;gBACX,MAAM,EAAE,GAAG,CAAC,MAAM;gBAClB,UAAU,EAAE,GAAG,CAAC,UAAU;aAC3B,CAAC;QACJ,CAAC;QAED,MAAM,GAAG,GAAG,MAAM,GAAG,CAAC,IAAI,EAAS,CAAC;QAEpC,IAAI,IAAI,CAAC,KAAK,CAAC,QAAQ,EAAE,CAAC;YACxB,IAAI,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,GAAG,CAAC,MAAM,KAAK,CAAC,CAAC,EAAE,CAAC;gBACrD,OAAO;oBACL,IAAI,EAAE,IAAa;oBACnB,KAAK,EAAE,EAAE,OAAO,EAAE,uDAAuD,EAAE,IAAI,EAAE,UAAU,EAAE,OAAO,EAAE,EAAE,EAAE,IAAI,EAAE,EAAE,EAAE;oBACpH,KAAK;oBACL,MAAM,EAAE,GAAG;oBACX,UAAU,EAAE,gBAAgB;iBAC7B,CAAC;YACJ,CAAC;YACD,MAAM,MAAM,GAAG,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC;YACjD,OAAO,EAAE,IAAI,EAAE,MAAW,EAAE,KAAK,EAAE,IAAI,EAAE,KAAK,EAAE,MAAM,EAAE,GAAG,CAAC,MAAM,EAAE,UAAU,EAAE,GAAG,CAAC,UAAU,EAAE,CAAC;QACnG,CAAC;QAED,IAAI,IAAI,CAAC,KAAK,CAAC,aAAa,EAAE,CAAC;YAC7B,MAAM,MAAM,GAAG,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC;YAC3D,OAAO,EAAE,IAAI,EAAE,MAAW,EAAE,KAAK,EAAE,IAAI,EAAE,KAAK,EAAE,MAAM,EAAE,GAAG,CAAC,MAAM,EAAE,UAAU,EAAE,GAAG,CAAC,UAAU,EAAE,CAAC;QACnG,CAAC;QAED,OAAO;YACL,IAAI,EAAE,CAAC,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAQ;YAC/C,KAAK,EAAE,IAAI;YACX,KAAK;YACL,MAAM,EAAE,GAAG,CAAC,MAAM;YAClB,UAAU,EAAE,GAAG,CAAC,UAAU;SAC3B,CAAC;IACJ,CAAC;CACF;AA1QD,sCA0QC"}
@@ -0,0 +1,42 @@
1
+ import { FilterBuilder } from './filterBuilder';
2
+ export declare class SvarabaseQueryBuilder {
3
+ private url;
4
+ private key;
5
+ private getAuthHeader;
6
+ constructor(url: string, key: string, getAuthHeader: () => string);
7
+ from<T = Record<string, unknown>>(table: string): TableQuery<T>;
8
+ rpc<T = unknown>(functionName: string, params?: Record<string, unknown>, options?: {
9
+ count?: 'exact';
10
+ head?: boolean;
11
+ }): Promise<{
12
+ data: T | null;
13
+ error: Error | null;
14
+ count?: number | null;
15
+ }>;
16
+ }
17
+ export declare class TableQuery<T> {
18
+ private url;
19
+ private key;
20
+ private getAuthHeader;
21
+ private table;
22
+ constructor(url: string, key: string, getAuthHeader: () => string, table: string);
23
+ select(cols?: string, options?: {
24
+ count?: 'exact';
25
+ head?: boolean;
26
+ }): FilterBuilder<T>;
27
+ insert(values: Partial<T> | Partial<T>[], options?: {
28
+ count?: 'exact';
29
+ }): FilterBuilder<T>;
30
+ upsert(values: Partial<T> | Partial<T>[], options?: {
31
+ onConflict?: string;
32
+ count?: 'exact';
33
+ }): FilterBuilder<T>;
34
+ update(values: Partial<T>, options?: {
35
+ count?: 'exact';
36
+ }): FilterBuilder<T>;
37
+ delete(options?: {
38
+ count?: 'exact';
39
+ }): FilterBuilder<T>;
40
+ }
41
+ export { FilterBuilder };
42
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/db/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAEhD,qBAAa,qBAAqB;IAChC,OAAO,CAAC,GAAG,CAAS;IACpB,OAAO,CAAC,GAAG,CAAS;IACpB,OAAO,CAAC,aAAa,CAAe;gBAExB,GAAG,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,EAAE,aAAa,EAAE,MAAM,MAAM;IAMjE,IAAI,CAAC,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,KAAK,EAAE,MAAM;IAIzC,GAAG,CAAC,CAAC,GAAG,OAAO,EACnB,YAAY,EAAE,MAAM,EACpB,MAAM,GAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAM,EACpC,OAAO,CAAC,EAAE;QAAE,KAAK,CAAC,EAAE,OAAO,CAAC;QAAC,IAAI,CAAC,EAAE,OAAO,CAAA;KAAE,GAC5C,OAAO,CAAC;QAAE,IAAI,EAAE,CAAC,GAAG,IAAI,CAAC;QAAC,KAAK,EAAE,KAAK,GAAG,IAAI,CAAC;QAAC,KAAK,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;KAAE,CAAC;CA2B3E;AAED,qBAAa,UAAU,CAAC,CAAC;IACvB,OAAO,CAAC,GAAG,CAAS;IACpB,OAAO,CAAC,GAAG,CAAS;IACpB,OAAO,CAAC,aAAa,CAAe;IACpC,OAAO,CAAC,KAAK,CAAS;gBAEV,GAAG,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,EAAE,aAAa,EAAE,MAAM,MAAM,EAAE,KAAK,EAAE,MAAM;IAOhF,MAAM,CAAC,IAAI,SAAM,EAAE,OAAO,CAAC,EAAE;QAAE,KAAK,CAAC,EAAE,OAAO,CAAC;QAAC,IAAI,CAAC,EAAE,OAAO,CAAA;KAAE,GAAG,aAAa,CAAC,CAAC,CAAC;IAKnF,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE,OAAO,CAAC,EAAE;QAAE,KAAK,CAAC,EAAE,OAAO,CAAA;KAAE,GAAG,aAAa,CAAC,CAAC,CAAC;IAI1F,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE,OAAO,CAAC,EAAE;QAAE,UAAU,CAAC,EAAE,MAAM,CAAC;QAAC,KAAK,CAAC,EAAE,OAAO,CAAA;KAAE,GAAG,aAAa,CAAC,CAAC,CAAC;IAI/G,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC,EAAE,OAAO,CAAC,EAAE;QAAE,KAAK,CAAC,EAAE,OAAO,CAAA;KAAE,GAAG,aAAa,CAAC,CAAC,CAAC;IAI3E,MAAM,CAAC,OAAO,CAAC,EAAE;QAAE,KAAK,CAAC,EAAE,OAAO,CAAA;KAAE,GAAG,aAAa,CAAC,CAAC,CAAC;CAGxD;AAED,OAAO,EAAE,aAAa,EAAE,CAAC"}
@@ -0,0 +1,67 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.FilterBuilder = exports.TableQuery = exports.SvarabaseQueryBuilder = void 0;
4
+ const filterBuilder_1 = require("./filterBuilder");
5
+ Object.defineProperty(exports, "FilterBuilder", { enumerable: true, get: function () { return filterBuilder_1.FilterBuilder; } });
6
+ class SvarabaseQueryBuilder {
7
+ constructor(url, key, getAuthHeader) {
8
+ this.url = url;
9
+ this.key = key;
10
+ this.getAuthHeader = getAuthHeader;
11
+ }
12
+ from(table) {
13
+ return new TableQuery(this.url, this.key, this.getAuthHeader, table);
14
+ }
15
+ async rpc(functionName, params = {}, options) {
16
+ try {
17
+ const res = await fetch(`${this.url}/rest/v1/rpc/${functionName}`, {
18
+ method: 'POST',
19
+ headers: {
20
+ 'Content-Type': 'application/json',
21
+ apikey: this.key,
22
+ Authorization: this.getAuthHeader(),
23
+ ...(options?.count ? { Prefer: `count=${options.count}` } : {}),
24
+ },
25
+ body: JSON.stringify(params),
26
+ });
27
+ const contentRange = res.headers.get('Content-Range');
28
+ const count = contentRange ? parseInt(contentRange.split('/')[1]) : null;
29
+ if (!res.ok) {
30
+ const errData = await res.json().catch(() => ({}));
31
+ return { data: null, error: new Error((errData.message ?? 'RPC failed')), count };
32
+ }
33
+ const data = await res.json();
34
+ return { data, error: null, count };
35
+ }
36
+ catch (e) {
37
+ return { data: null, error: e };
38
+ }
39
+ }
40
+ }
41
+ exports.SvarabaseQueryBuilder = SvarabaseQueryBuilder;
42
+ class TableQuery {
43
+ constructor(url, key, getAuthHeader, table) {
44
+ this.url = url;
45
+ this.key = key;
46
+ this.getAuthHeader = getAuthHeader;
47
+ this.table = table;
48
+ }
49
+ select(cols = '*', options) {
50
+ const fb = new filterBuilder_1.FilterBuilder(this.url, this.key, this.getAuthHeader, this.table, 'GET');
51
+ return fb.select(cols, options);
52
+ }
53
+ insert(values, options) {
54
+ return new filterBuilder_1.FilterBuilder(this.url, this.key, this.getAuthHeader, this.table, 'POST', values);
55
+ }
56
+ upsert(values, options) {
57
+ return new filterBuilder_1.FilterBuilder(this.url, this.key, this.getAuthHeader, this.table, 'POST', values, true, options?.onConflict);
58
+ }
59
+ update(values, options) {
60
+ return new filterBuilder_1.FilterBuilder(this.url, this.key, this.getAuthHeader, this.table, 'PATCH', values);
61
+ }
62
+ delete(options) {
63
+ return new filterBuilder_1.FilterBuilder(this.url, this.key, this.getAuthHeader, this.table, 'DELETE');
64
+ }
65
+ }
66
+ exports.TableQuery = TableQuery;
67
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/db/index.ts"],"names":[],"mappings":"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"}