@pol-studios/db 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.
- package/dist/canvas-UVNDA54X.node +0 -0
- package/dist/client/index.js +201 -0
- package/dist/client/index.js.map +1 -0
- package/dist/core/index.js +1 -0
- package/dist/core/index.js.map +1 -0
- package/dist/gen/index.js +1466 -0
- package/dist/gen/index.js.map +1 -0
- package/dist/hooks/index.js +8701 -0
- package/dist/hooks/index.js.map +1 -0
- package/dist/index.js +54067 -0
- package/dist/index.js.map +1 -0
- package/dist/mutation/index.js +333 -0
- package/dist/mutation/index.js.map +1 -0
- package/dist/parser/index.js +3737 -0
- package/dist/parser/index.js.map +1 -0
- package/dist/query/index.js +12636 -0
- package/dist/query/index.js.map +1 -0
- package/dist/realtime/index.js +10955 -0
- package/dist/realtime/index.js.map +1 -0
- package/dist/types/index.js +1 -0
- package/dist/types/index.js.map +1 -0
- package/package.json +106 -0
|
@@ -0,0 +1,333 @@
|
|
|
1
|
+
// src/mutation/useInsert.ts
|
|
2
|
+
import { useMutation } from "@tanstack/react-query";
|
|
3
|
+
|
|
4
|
+
// src/client/useSupabase.tsx
|
|
5
|
+
import {
|
|
6
|
+
createContext,
|
|
7
|
+
useContext,
|
|
8
|
+
useEffect,
|
|
9
|
+
useMemo,
|
|
10
|
+
useState
|
|
11
|
+
} from "react";
|
|
12
|
+
import {
|
|
13
|
+
createClient
|
|
14
|
+
} from "@supabase/supabase-js";
|
|
15
|
+
|
|
16
|
+
// src/client/config.ts
|
|
17
|
+
var supabaseUrl = process.env.SUPABASE_URL;
|
|
18
|
+
var supabaseKey = process.env.SUPABASE_ANON_KEY ?? "";
|
|
19
|
+
|
|
20
|
+
// src/client/useSupabase.tsx
|
|
21
|
+
import { jsx } from "react/jsx-runtime";
|
|
22
|
+
function newUuid() {
|
|
23
|
+
return crypto.randomUUID();
|
|
24
|
+
}
|
|
25
|
+
function isUsable(value) {
|
|
26
|
+
return value !== null && value !== void 0;
|
|
27
|
+
}
|
|
28
|
+
var UserSessionId = newUuid();
|
|
29
|
+
var typedSupabase = null;
|
|
30
|
+
var context = createContext({
|
|
31
|
+
supabaseClient: typedSupabase
|
|
32
|
+
});
|
|
33
|
+
function useSupabase() {
|
|
34
|
+
const supabaseContext = useContext(context);
|
|
35
|
+
if (isUsable(supabaseContext?.supabaseClient) === false) {
|
|
36
|
+
throw new Error("Hook not inside a supabase context provider.");
|
|
37
|
+
}
|
|
38
|
+
return supabaseContext.supabaseClient;
|
|
39
|
+
}
|
|
40
|
+
|
|
41
|
+
// src/mutation/useInsert.ts
|
|
42
|
+
import { useInsertMutation } from "@supabase-cache-helpers/postgrest-react-query";
|
|
43
|
+
function isUsable2(value) {
|
|
44
|
+
return value !== null && value !== void 0;
|
|
45
|
+
}
|
|
46
|
+
function omit(obj, keys) {
|
|
47
|
+
const result = { ...obj };
|
|
48
|
+
for (const key of keys) {
|
|
49
|
+
delete result[key];
|
|
50
|
+
}
|
|
51
|
+
return result;
|
|
52
|
+
}
|
|
53
|
+
function useInsert(relation, primaryKeys = ["id"], query, mutationOption) {
|
|
54
|
+
const supabase = useSupabase();
|
|
55
|
+
const tableName = typeof relation === "object" ? relation.table : relation;
|
|
56
|
+
const schemaName = typeof relation === "object" ? String(relation.schema) : "public";
|
|
57
|
+
const primaryKeysAsStrings = primaryKeys.map((k) => String(k));
|
|
58
|
+
const mutation = useInsertMutation(
|
|
59
|
+
supabase.schema(schemaName).from(tableName),
|
|
60
|
+
primaryKeysAsStrings,
|
|
61
|
+
query,
|
|
62
|
+
mutationOption
|
|
63
|
+
);
|
|
64
|
+
const updateMutation = useMutation({
|
|
65
|
+
mutationFn: async (item) => {
|
|
66
|
+
const primaryKeysNull = primaryKeys.filter((x) => x in item === false || isUsable2(item[x]) === false).map((k) => String(k));
|
|
67
|
+
const response = await mutation.mutateAsync([
|
|
68
|
+
omit(item, primaryKeysNull)
|
|
69
|
+
]);
|
|
70
|
+
mutation.reset();
|
|
71
|
+
return response?.[0];
|
|
72
|
+
}
|
|
73
|
+
});
|
|
74
|
+
return updateMutation;
|
|
75
|
+
}
|
|
76
|
+
|
|
77
|
+
// src/mutation/useUpdate.ts
|
|
78
|
+
import { useMutation as useMutation2 } from "@tanstack/react-query";
|
|
79
|
+
import {
|
|
80
|
+
useUpsertItem
|
|
81
|
+
} from "@supabase-cache-helpers/postgrest-react-query";
|
|
82
|
+
function isUsable3(value) {
|
|
83
|
+
return value !== null && value !== void 0;
|
|
84
|
+
}
|
|
85
|
+
function omit2(obj, keys) {
|
|
86
|
+
const result = { ...obj };
|
|
87
|
+
for (const key of keys) {
|
|
88
|
+
delete result[key];
|
|
89
|
+
}
|
|
90
|
+
return result;
|
|
91
|
+
}
|
|
92
|
+
function useUpdate(relation, primaryKeys = ["id"], query, mutationOption) {
|
|
93
|
+
const supabase = useSupabase();
|
|
94
|
+
const tableName = typeof relation === "object" ? relation.table : relation;
|
|
95
|
+
const schemaName = typeof relation === "object" ? String(relation.schema) : "public";
|
|
96
|
+
const primaryKeysAsStrings = primaryKeys.map((k) => String(k));
|
|
97
|
+
const upsertItem = useUpsertItem({
|
|
98
|
+
primaryKeys: primaryKeysAsStrings,
|
|
99
|
+
table: relation,
|
|
100
|
+
schema: "public"
|
|
101
|
+
});
|
|
102
|
+
const updateMutation = useMutation2({
|
|
103
|
+
mutationFn: async (item) => {
|
|
104
|
+
let response = null;
|
|
105
|
+
if (primaryKeys.every((x) => x in item && isUsable3(item[x]))) {
|
|
106
|
+
const query2 = supabase.schema(schemaName).from(tableName).update(omit2(item, primaryKeysAsStrings));
|
|
107
|
+
primaryKeys.forEach((x) => {
|
|
108
|
+
query2.eq(String(x), item[x]);
|
|
109
|
+
});
|
|
110
|
+
const queryResponse = await query2.select().single().throwOnError();
|
|
111
|
+
if (queryResponse.data) {
|
|
112
|
+
response = queryResponse.data;
|
|
113
|
+
upsertItem(response);
|
|
114
|
+
}
|
|
115
|
+
}
|
|
116
|
+
return response;
|
|
117
|
+
}
|
|
118
|
+
});
|
|
119
|
+
return updateMutation;
|
|
120
|
+
}
|
|
121
|
+
|
|
122
|
+
// src/mutation/useUpsert.ts
|
|
123
|
+
import { useMutation as useMutation3 } from "@tanstack/react-query";
|
|
124
|
+
import {
|
|
125
|
+
useQueriesForTableLoader,
|
|
126
|
+
useUpsertItem as useUpsertItem2
|
|
127
|
+
} from "@supabase-cache-helpers/postgrest-react-query";
|
|
128
|
+
import { buildNormalizedQuery } from "@supabase-cache-helpers/postgrest-core";
|
|
129
|
+
function isUsable4(value) {
|
|
130
|
+
return value !== null && value !== void 0;
|
|
131
|
+
}
|
|
132
|
+
function omit3(obj, keys) {
|
|
133
|
+
const result = { ...obj };
|
|
134
|
+
for (const key of keys) {
|
|
135
|
+
delete result[key];
|
|
136
|
+
}
|
|
137
|
+
return result;
|
|
138
|
+
}
|
|
139
|
+
function useUpsert(relation, primaryKeys = ["id"], query, mutationOption) {
|
|
140
|
+
const tableName = typeof relation === "object" ? relation.table : relation;
|
|
141
|
+
const schemaName = typeof relation === "object" ? String(relation.schema) : "public";
|
|
142
|
+
const supabase = useSupabase();
|
|
143
|
+
const primaryKeysAsStrings = primaryKeys.map((k) => String(k));
|
|
144
|
+
const upsertItem = useUpsertItem2({
|
|
145
|
+
primaryKeys: primaryKeysAsStrings,
|
|
146
|
+
table: relation,
|
|
147
|
+
schema: "public"
|
|
148
|
+
});
|
|
149
|
+
const queriesForTable = useQueriesForTableLoader(tableName);
|
|
150
|
+
const mutation = useMutation3({
|
|
151
|
+
mutationFn: async (item) => {
|
|
152
|
+
let result = null;
|
|
153
|
+
const selectQuery = buildNormalizedQuery({
|
|
154
|
+
queriesForTable,
|
|
155
|
+
query
|
|
156
|
+
});
|
|
157
|
+
async function insert() {
|
|
158
|
+
const keysToFilter = primaryKeys.filter(
|
|
159
|
+
(x) => isUsable4(item[x]) === false
|
|
160
|
+
);
|
|
161
|
+
const keysToFilterAsStrings = keysToFilter.map((k) => String(k));
|
|
162
|
+
const response = await supabase.schema(schemaName).from(tableName).insert(omit3(item, keysToFilterAsStrings)).select(query).single();
|
|
163
|
+
if (response.error) throw response.error;
|
|
164
|
+
result = response.data;
|
|
165
|
+
if (result) {
|
|
166
|
+
upsertItem(result);
|
|
167
|
+
}
|
|
168
|
+
}
|
|
169
|
+
const isUpsertable = primaryKeys.every(
|
|
170
|
+
(x) => x in item && isUsable4(item[x])
|
|
171
|
+
);
|
|
172
|
+
if (isUpsertable) {
|
|
173
|
+
const query2 = supabase.schema(schemaName).from(tableName).update(omit3(item, primaryKeysAsStrings));
|
|
174
|
+
primaryKeys.forEach((x) => {
|
|
175
|
+
query2.eq(String(x), item[x]);
|
|
176
|
+
});
|
|
177
|
+
const queryResponse = await query2.select(selectQuery?.selectQuery).single();
|
|
178
|
+
console.log("queryResponse", queryResponse, tableName);
|
|
179
|
+
if (queryResponse.status === 406) {
|
|
180
|
+
await insert();
|
|
181
|
+
} else {
|
|
182
|
+
if (queryResponse.error) throw queryResponse.error;
|
|
183
|
+
if (queryResponse.data) {
|
|
184
|
+
result = queryResponse.data;
|
|
185
|
+
if (result) {
|
|
186
|
+
upsertItem(result);
|
|
187
|
+
}
|
|
188
|
+
}
|
|
189
|
+
}
|
|
190
|
+
} else {
|
|
191
|
+
await insert();
|
|
192
|
+
}
|
|
193
|
+
return result;
|
|
194
|
+
}
|
|
195
|
+
});
|
|
196
|
+
return mutation;
|
|
197
|
+
}
|
|
198
|
+
|
|
199
|
+
// src/mutation/useDelete.ts
|
|
200
|
+
import { useMutation as useMutation4 } from "@tanstack/react-query";
|
|
201
|
+
import {
|
|
202
|
+
useDeleteItem
|
|
203
|
+
} from "@supabase-cache-helpers/postgrest-react-query";
|
|
204
|
+
function isUsable5(value) {
|
|
205
|
+
return value !== null && value !== void 0;
|
|
206
|
+
}
|
|
207
|
+
function useDelete(relation, primaryKeys = ["id"]) {
|
|
208
|
+
const tableName = typeof relation === "object" ? relation.table : relation;
|
|
209
|
+
const schemaName = typeof relation === "object" ? relation.schema : "public";
|
|
210
|
+
const supabase = useSupabase();
|
|
211
|
+
const deleteItem = useDeleteItem({
|
|
212
|
+
primaryKeys: primaryKeys.map((k) => String(k)),
|
|
213
|
+
table: tableName,
|
|
214
|
+
schema: schemaName
|
|
215
|
+
});
|
|
216
|
+
const deleteMutation = useMutation4({
|
|
217
|
+
mutationFn: async (item) => {
|
|
218
|
+
if (Array.isArray(item)) {
|
|
219
|
+
throw new Error("Item cannot be an array.");
|
|
220
|
+
}
|
|
221
|
+
const deleteQuery = supabase.schema(schemaName).from(tableName).delete();
|
|
222
|
+
primaryKeys.forEach((key) => {
|
|
223
|
+
const keyStr = String(key);
|
|
224
|
+
const value = item[keyStr];
|
|
225
|
+
if (isUsable5(value)) {
|
|
226
|
+
deleteQuery.eq(keyStr, value);
|
|
227
|
+
}
|
|
228
|
+
});
|
|
229
|
+
const response = await deleteQuery.select().single();
|
|
230
|
+
if (response.error) {
|
|
231
|
+
throw response.error;
|
|
232
|
+
}
|
|
233
|
+
if (response.data) {
|
|
234
|
+
deleteItem(response.data);
|
|
235
|
+
} else {
|
|
236
|
+
deleteItem(item);
|
|
237
|
+
}
|
|
238
|
+
return response.data;
|
|
239
|
+
}
|
|
240
|
+
});
|
|
241
|
+
return deleteMutation;
|
|
242
|
+
}
|
|
243
|
+
|
|
244
|
+
// src/mutation/useBatchDelete.ts
|
|
245
|
+
import { useMutation as useMutation5 } from "@tanstack/react-query";
|
|
246
|
+
import {
|
|
247
|
+
useDeleteManyMutation
|
|
248
|
+
} from "@supabase-cache-helpers/postgrest-react-query";
|
|
249
|
+
function useBatchDelete(relation, primaryKeys = ["id"]) {
|
|
250
|
+
const tableName = typeof relation === "object" ? relation.table : relation;
|
|
251
|
+
const schemaName = typeof relation === "object" ? String(relation.schema) : "public";
|
|
252
|
+
const supabase = useSupabase();
|
|
253
|
+
const primaryKeysAsStrings = primaryKeys.map((k) => String(k));
|
|
254
|
+
const deleteManyMutation = useDeleteManyMutation(
|
|
255
|
+
supabase.schema(schemaName).from(tableName),
|
|
256
|
+
primaryKeysAsStrings
|
|
257
|
+
);
|
|
258
|
+
const deleteMutation = useMutation5({
|
|
259
|
+
mutationFn: async (item) => {
|
|
260
|
+
if (Array.isArray(item)) {
|
|
261
|
+
const response = await deleteManyMutation.mutateAsync(item);
|
|
262
|
+
return response;
|
|
263
|
+
} else {
|
|
264
|
+
throw new Error("Item must be an array.");
|
|
265
|
+
}
|
|
266
|
+
}
|
|
267
|
+
});
|
|
268
|
+
return deleteMutation;
|
|
269
|
+
}
|
|
270
|
+
|
|
271
|
+
// src/mutation/useBatchUpsert.ts
|
|
272
|
+
import { useMutation as useMutation6 } from "@tanstack/react-query";
|
|
273
|
+
import { useUpsertItem as useUpsertItem3 } from "@supabase-cache-helpers/postgrest-react-query";
|
|
274
|
+
function isUsable6(value) {
|
|
275
|
+
return value !== null && value !== void 0;
|
|
276
|
+
}
|
|
277
|
+
function omit4(obj, keys) {
|
|
278
|
+
const result = { ...obj };
|
|
279
|
+
for (const key of keys) {
|
|
280
|
+
delete result[key];
|
|
281
|
+
}
|
|
282
|
+
return result;
|
|
283
|
+
}
|
|
284
|
+
function useBatchUpsert(relation, primaryKeys = ["id"], query = "*") {
|
|
285
|
+
const supabase = useSupabase();
|
|
286
|
+
const tableName = typeof relation === "object" ? relation.table : relation;
|
|
287
|
+
const schemaName = typeof relation === "object" ? String(relation.schema) : "public";
|
|
288
|
+
const upsertItem = useUpsertItem3({
|
|
289
|
+
primaryKeys,
|
|
290
|
+
table: relation,
|
|
291
|
+
schema: "public"
|
|
292
|
+
});
|
|
293
|
+
const primaryKeysAsStrings = primaryKeys.map((k) => String(k));
|
|
294
|
+
async function upsertItemAction(item) {
|
|
295
|
+
let task;
|
|
296
|
+
if (Object.keys(item).length !== primaryKeys.length && primaryKeys.every((key) => key in item && isUsable6(item[key]))) {
|
|
297
|
+
const updateObject = omit4(item, primaryKeysAsStrings);
|
|
298
|
+
task = supabase.schema(schemaName).from(tableName).update(updateObject);
|
|
299
|
+
primaryKeys.forEach((key) => {
|
|
300
|
+
task = task.eq(String(key), item[key]);
|
|
301
|
+
});
|
|
302
|
+
} else {
|
|
303
|
+
task = supabase.schema(schemaName).from(tableName).insert(omit4(item, primaryKeysAsStrings));
|
|
304
|
+
}
|
|
305
|
+
const response = await task.select(query);
|
|
306
|
+
if (response.error) {
|
|
307
|
+
throw response.error;
|
|
308
|
+
}
|
|
309
|
+
return response.data[0];
|
|
310
|
+
}
|
|
311
|
+
const updateMutation = useMutation6({
|
|
312
|
+
mutationFn: async (item) => {
|
|
313
|
+
if (Array.isArray(item)) {
|
|
314
|
+
const data = await Promise.all(item.map((x) => upsertItemAction(x)));
|
|
315
|
+
data.filter((x) => isUsable6(x)).forEach((x) => upsertItem(x));
|
|
316
|
+
return data;
|
|
317
|
+
}
|
|
318
|
+
throw new Error("Item must be an array.");
|
|
319
|
+
}
|
|
320
|
+
});
|
|
321
|
+
return updateMutation;
|
|
322
|
+
}
|
|
323
|
+
export {
|
|
324
|
+
useBatchDelete,
|
|
325
|
+
useBatchUpsert,
|
|
326
|
+
useDelete as useDbDelete,
|
|
327
|
+
useUpsert as useDbUpsert,
|
|
328
|
+
useDelete,
|
|
329
|
+
useInsert,
|
|
330
|
+
useUpdate,
|
|
331
|
+
useUpsert
|
|
332
|
+
};
|
|
333
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../src/mutation/useInsert.ts","../../src/client/useSupabase.tsx","../../src/client/config.ts","../../src/mutation/useUpdate.ts","../../src/mutation/useUpsert.ts","../../src/mutation/useDelete.ts","../../src/mutation/useBatchDelete.ts","../../src/mutation/useBatchUpsert.ts"],"sourcesContent":["import { useMutation } from \"@tanstack/react-query\";\nimport useSupabase, { Database } from \"../client/useSupabase\";\nimport { useInsertMutation } from \"@supabase-cache-helpers/postgrest-react-query\";\nimport { GetResult } from \"../parser/select-query-parser\";\nimport { GenericSchema } from \"../parser/types\";\n\nfunction isUsable<T>(value: T | null | undefined): value is T {\n return value !== null && value !== undefined;\n}\n\nfunction omit<T extends Record<string, any>, K extends keyof T>(\n obj: T,\n keys: K[]\n): Omit<T, K> {\n const result = { ...obj };\n for (const key of keys) {\n delete result[key];\n }\n return result;\n}\n\ntype ItemType<T> = T extends Array<infer U> ? U : T;\ntype MutationOption = Parameters<typeof useInsertMutation>[3];\n\nexport function useInsert<\n TableName extends string & keyof PublicSchema[\"Tables\"],\n Table extends PublicSchema[\"Tables\"][TableName],\n Schema extends keyof Database = \"public\",\n ReturnQuery extends string | undefined = undefined,\n PublicSchema extends GenericSchema = Database[\n Extract<\n keyof Database,\n Schema\n >\n ],\n RelationName = unknown,\n Relationships = Table extends { Relationships: infer R } ? R : unknown,\n RowResult = ReturnQuery extends undefined ? null\n : GetResult<\n PublicSchema,\n Table[\"Row\"],\n RelationName,\n Relationships,\n Extract<ReturnQuery, string>\n >,\n ResultInsert extends object = GetResult<\n PublicSchema,\n Table[\"Insert\"],\n RelationName,\n Relationships,\n \"*\"\n >,\n>(\n relation: TableName | { table: TableName; schema: Schema },\n primaryKeys: (keyof (ItemType<RowResult> | any) & string)[] = [\"id\"],\n query?: ReturnQuery,\n mutationOption?: MutationOption & { crossOrganization?: boolean },\n) {\n const supabase = useSupabase();\n const tableName = typeof relation === \"object\" ? relation.table : relation;\n const schemaName: string = typeof relation === \"object\" ? String(relation.schema) : \"public\";\n const primaryKeysAsStrings = primaryKeys.map((k) => String(k)) as string[];\n const mutation = useInsertMutation(\n supabase.schema(schemaName as \"public\").from(tableName as any) as any,\n primaryKeysAsStrings as any,\n query,\n mutationOption,\n );\n\n const updateMutation = useMutation<RowResult, Error, ResultInsert>({\n mutationFn: async (item) => {\n const primaryKeysNull: string[] = primaryKeys\n .filter((x) => x in item === false || isUsable((item as any)[x]) === false)\n .map((k) => String(k));\n const response = await mutation.mutateAsync([\n omit(item as any, primaryKeysNull as any),\n ]);\n mutation.reset();\n\n return response?.[0] as RowResult;\n },\n });\n\n return updateMutation;\n}\n","import {\n createContext,\n ReactNode,\n useContext,\n useEffect,\n useMemo,\n useState,\n} from \"react\";\nimport {\n createClient,\n SupabaseClient,\n SupabaseClientOptions,\n} from \"@supabase/supabase-js\";\nimport { getSupabaseUrl, getSupabaseKey } from \"./config\";\n\n// This interface is augmented by consumers to provide their database types\n// Example: declare module '@pol-studios/db' { interface SupabaseDatabaseTypes { Database: MyDatabaseType } }\n// eslint-disable-next-line @typescript-eslint/no-empty-object-type\nexport interface SupabaseDatabaseTypes {}\n\nexport type Database = SupabaseDatabaseTypes extends { Database: infer D }\n ? D\n : any;\n\nexport type TypedSupabaseClient = SupabaseClient<Database>;\n\nfunction newUuid(): string {\n return crypto.randomUUID();\n}\n\nfunction isUsable<T>(value: T | null | undefined): value is T {\n return value !== null && value !== undefined;\n}\n\nfunction delay(ms: number): Promise<void> {\n return new Promise((resolve) => setTimeout(resolve, ms));\n}\n\nexport const UserSessionId = newUuid();\nlet defaultOptions: any = {\n auth: {\n autoRefreshToken: true,\n persistSession: true,\n detectSessionInUrl: true,\n },\n global: {\n headers: { \"x-session-id\": UserSessionId },\n },\n realtime: {},\n};\n\nexport function createNewSupabaseClient<\n SchemaName extends string & keyof Database = \"public\" extends keyof Database\n ? \"public\"\n : string & keyof Database,\n>(options?: SupabaseClientOptions<SchemaName>) {\n const client = createClient<Database, SchemaName>(\n getSupabaseUrl()!,\n getSupabaseKey()!,\n {\n ...defaultOptions,\n ...options,\n }\n );\n\n onSupabaseInitializedAction && onSupabaseInitializedAction(client as any);\n\n return client;\n}\n\nlet onSupabaseInitializedAction:\n | ((supabase: SupabaseClient) => any)\n | undefined = undefined;\n\nexport function onSupabaseInitialized(\n afterInitialize: (supabase: SupabaseClient) => any\n) {\n onSupabaseInitializedAction = afterInitialize;\n}\n\nexport function setDefaultOptions(\n options: SupabaseClientOptions<string & keyof Database>\n) {\n defaultOptions = options;\n}\n\nexport let typedSupabase: SupabaseClient<Database> = null!;\n\nconst context = createContext({\n supabaseClient: typedSupabase as SupabaseClient<Database> | null,\n});\n\nexport default function useSupabase() {\n const supabaseContext = useContext(context);\n if (isUsable(supabaseContext?.supabaseClient) === false) {\n throw new Error(\"Hook not inside a supabase context provider.\");\n }\n\n return supabaseContext.supabaseClient!;\n}\n\nexport function SupabaseProvider({\n children,\n options,\n afterInitialize,\n supabaseClient: supabaseClientProp,\n}: {\n children: ReactNode;\n options?: SupabaseClientOptions<string & keyof Database>;\n afterInitialize?: (supabase: SupabaseClient<Database>) => any;\n supabaseClient?: SupabaseClient<Database>;\n}) {\n const [supabaseClient, setSupabaseClient] = useState(\n () =>\n supabaseClientProp ??\n (createNewSupabaseClient({\n ...defaultOptions,\n ...(options ? options : {}),\n }) as unknown as SupabaseClient<Database>)\n );\n\n const [wasHidden, setWasHidden] = useState<boolean>(false);\n const [connected, setConnected] = useState<boolean>(true);\n\n useEffect(() => {\n afterInitialize && afterInitialize(supabaseClient);\n }, [supabaseClient]);\n\n useEffect(() => {\n const checkVisibility = async () => {\n if (typeof window.document === \"undefined\") return;\n if (document?.hidden) {\n await delay(60 * 1000).then((x) => {\n if (document.hidden) {\n setWasHidden(true);\n }\n });\n } else if (wasHidden) {\n setWasHidden(false);\n try {\n setConnected(true);\n } catch (error) {\n console.error(\"Reconnection failed:\", error);\n setConnected(false);\n }\n }\n };\n\n const intervalId = setInterval(checkVisibility, 1000);\n\n return () => {\n clearInterval(intervalId);\n };\n }, [wasHidden]);\n\n return (\n <context.Provider\n value={useMemo(() => ({ supabaseClient }), [supabaseClient])}\n >\n {children}\n </context.Provider>\n );\n}\n","let supabaseUrl = process.env.SUPABASE_URL;\nlet supabaseKey = process.env.SUPABASE_ANON_KEY ?? \"\";\n\nexport function setSupabaseUrl(url: string) {\n supabaseUrl = url;\n}\n\nexport function getSupabaseUrl() {\n return supabaseUrl;\n}\n\nexport function setSupabaseKey(key: string) {\n supabaseKey = key;\n}\n\nexport function getSupabaseKey() {\n return supabaseKey;\n}\n","import { useMutation } from \"@tanstack/react-query\";\nimport useSupabase, { Database } from \"../client/useSupabase\";\nimport {\n useUpdateMutation,\n useUpsertItem,\n} from \"@supabase-cache-helpers/postgrest-react-query\";\nimport { GetResult } from \"../parser/select-query-parser\";\nimport { GenericSchema } from \"../parser/types\";\n\nfunction isUsable<T>(value: T | null | undefined): value is T {\n return value !== null && value !== undefined;\n}\n\nfunction omit<T extends Record<string, any>, K extends keyof T>(\n obj: T,\n keys: K[]\n): Omit<T, K> {\n const result = { ...obj };\n for (const key of keys) {\n delete result[key];\n }\n return result;\n}\n\ntype ItemType<T> = T extends Array<infer U> ? U : T;\n\ntype MutationOption = Parameters<typeof useUpdateMutation>[3];\n\nexport function useUpdate<\n TableName extends string & keyof PublicSchema[\"Tables\"],\n Table extends PublicSchema[\"Tables\"][TableName],\n Schema extends keyof Database = \"public\",\n ReturnQuery extends string | undefined = undefined,\n PublicSchema extends GenericSchema =\n Database[Extract<keyof Database, Schema>],\n RelationName = unknown,\n Relationships = Table extends { Relationships: infer R } ? R : unknown,\n RowResult = ReturnQuery extends undefined ? null : GetResult<\n PublicSchema,\n Table[\"Row\"],\n RelationName,\n Relationships,\n Extract<ReturnQuery, string>\n >,\n ResultUpdate extends object =\n | (\n & Omit<\n GetResult<\n PublicSchema,\n Table[\"Update\"],\n RelationName,\n Relationships,\n \"*\"\n >,\n \"id\"\n >\n & { id: number }\n )\n | Omit<\n GetResult<\n PublicSchema,\n Table[\"Update\"],\n RelationName,\n Relationships,\n \"*\"\n >,\n \"id\"\n >,\n>(\n relation: TableName | { table: TableName; schema: Schema },\n primaryKeys: (keyof (ItemType<RowResult> | any) & string)[] = [\"id\"],\n query?: ReturnQuery,\n mutationOption?: MutationOption & { crossOrganization?: boolean },\n) {\n const supabase = useSupabase();\n const tableName = typeof relation === \"object\" ? relation.table : relation;\n const schemaName: string = typeof relation === \"object\"\n ? String(relation.schema)\n : \"public\";\n\n const primaryKeysAsStrings = primaryKeys.map((k) => String(k)) as string[];\n const upsertItem = useUpsertItem({\n primaryKeys: primaryKeysAsStrings as any,\n table: relation as any,\n schema: \"public\",\n });\n\n const updateMutation = useMutation<RowResult, Error, ResultUpdate>({\n mutationFn: async (item) => {\n let response: RowResult | null = null;\n\n if (primaryKeys.every((x) => x in item && isUsable((item as any)[x]))) {\n const query = supabase.schema(schemaName as \"public\").from(tableName as any)\n .update(omit(item as any, primaryKeysAsStrings as any) as any);\n primaryKeys.forEach((x) => {\n query.eq(String(x), (item as any)[x]);\n });\n const queryResponse = await query.select().single().throwOnError();\n\n if (queryResponse.data) {\n response = queryResponse.data as any;\n upsertItem(response as any);\n }\n }\n\n return response as any;\n },\n });\n\n return updateMutation;\n}\n","import { useMutation } from \"@tanstack/react-query\";\nimport useSupabase, { Database } from \"../client/useSupabase\";\nimport {\n useQueriesForTableLoader,\n useUpdateMutation,\n useUpsertItem,\n} from \"@supabase-cache-helpers/postgrest-react-query\";\nimport { GetResult } from \"../parser/select-query-parser\";\nimport { GenericSchema } from \"../parser/types\";\nimport { buildNormalizedQuery } from \"@supabase-cache-helpers/postgrest-core\";\n\nfunction isUsable<T>(value: T | null | undefined): value is T {\n return value !== null && value !== undefined;\n}\n\nfunction omit<T extends Record<string, any>, K extends keyof T>(\n obj: T,\n keys: K[]\n): Omit<T, K> {\n const result = { ...obj };\n for (const key of keys) {\n delete result[key];\n }\n return result;\n}\n\ntype ItemType<T> = T extends Array<infer U> ? U : T;\nexport type MutationOption = Parameters<typeof useUpdateMutation>[3];\nexport type useUpsertResponse = ReturnType<typeof useUpsert>;\n\nexport function useUpsert<\n TableName extends string & keyof PublicSchema[\"Tables\"],\n Table extends PublicSchema[\"Tables\"][TableName],\n Schema extends keyof Database = \"public\",\n ReturnQuery extends string | undefined = undefined,\n PublicSchema extends GenericSchema = Database[\n Extract<\n keyof Database,\n Schema\n >\n ],\n RelationName = unknown,\n Relationships = Table extends { Relationships: infer R } ? R : unknown,\n RowResult = ReturnQuery extends undefined ? null\n : GetResult<\n PublicSchema,\n Table[\"Row\"],\n RelationName,\n Relationships,\n Extract<ReturnQuery, string>\n >,\n ResultInsert extends object = Omit<\n GetResult<PublicSchema, Table[\"Insert\"], RelationName, Relationships, \"*\">,\n \"id\"\n >,\n ResultUpdate extends object =\n & Omit<\n GetResult<\n PublicSchema,\n Table[\"Update\"],\n RelationName,\n Relationships,\n \"*\"\n >,\n \"id\"\n >\n & { id?: any },\n>(\n relation: TableName | { table: TableName; schema: Schema },\n primaryKeys: (keyof (ItemType<RowResult> | any) & string)[] = [\"id\"],\n query?: ReturnQuery,\n mutationOption?: MutationOption & { crossOrganization?: boolean },\n) {\n const tableName = typeof relation === \"object\" ? relation.table : relation;\n const schemaName: string = typeof relation === \"object\" ? String(relation.schema) : \"public\";\n const supabase = useSupabase();\n const primaryKeysAsStrings = primaryKeys.map((k) => String(k)) as string[];\n const upsertItem = useUpsertItem({\n primaryKeys: primaryKeysAsStrings as any,\n table: relation as any,\n schema: \"public\",\n });\n\n const queriesForTable = useQueriesForTableLoader(tableName);\n\n const mutation = useMutation<RowResult, Error, ResultInsert | ResultUpdate>({\n mutationFn: async (item) => {\n let result: RowResult | null = null;\n const selectQuery = buildNormalizedQuery({\n queriesForTable,\n query,\n });\n\n async function insert() {\n const keysToFilter = primaryKeys.filter(\n (x) => isUsable((item as any)[x]) === false,\n );\n const keysToFilterAsStrings = keysToFilter.map((k) => String(k)) as string[];\n const response = await supabase\n .schema(schemaName as \"public\")\n .from(tableName as any)\n .insert(omit(item as any, keysToFilterAsStrings as any) as any)\n .select(query)\n .single();\n if (response.error) throw response.error;\n result = response.data as any;\n if (result) {\n upsertItem(result as any);\n }\n }\n\n const isUpsertable = primaryKeys.every(\n (x) => x in item && isUsable((item as any)[x]),\n );\n\n if (isUpsertable) {\n const query = supabase\n .schema(schemaName as \"public\")\n .from(tableName as any)\n .update(omit(item as any, primaryKeysAsStrings as any) as any);\n primaryKeys.forEach((x) => {\n query.eq(String(x), (item as any)[x]);\n });\n const queryResponse = await query\n .select(selectQuery?.selectQuery)\n .single();\n console.log(\"queryResponse\", queryResponse, tableName);\n if (queryResponse.status === 406) {\n await insert();\n } else {\n if (queryResponse.error) throw queryResponse.error;\n\n if (queryResponse.data) {\n result = queryResponse.data as any;\n if (result) {\n upsertItem(result as any);\n }\n }\n }\n } else {\n await insert();\n }\n\n return result as any;\n },\n });\n\n return mutation;\n}\n","import { useMutation } from \"@tanstack/react-query\";\nimport useSupabase, { Database } from \"../client/useSupabase\";\nimport { GetResult } from \"../parser/select-query-parser\";\nimport { GenericSchema } from \"../parser/types\";\nimport {\n useDeleteItem,\n} from \"@supabase-cache-helpers/postgrest-react-query\";\n\nfunction isUsable<T>(value: T | null | undefined): value is T {\n return value !== null && value !== undefined;\n}\n\ntype ItemType<T> = T extends Array<infer U> ? U : T;\n\nexport function useDelete<\n TableName extends string & keyof PublicSchema[\"Tables\"],\n Table extends PublicSchema[\"Tables\"][TableName],\n Schema extends keyof Database = \"public\",\n PublicSchema extends GenericSchema =\n Database[Extract<keyof Database, Schema>],\n Query extends string = \"*\",\n RelationName = unknown,\n Relationships = Table extends { Relationships: infer R } ? R : unknown,\n RowResult extends object = GetResult<\n PublicSchema,\n Table[\"Row\"],\n RelationName,\n Relationships,\n Query\n >,\n>(\n relation: TableName | { table: TableName; schema: Schema },\n primaryKeys: (keyof ItemType<RowResult> & string)[] = [\"id\" as any],\n) {\n const tableName = typeof relation === \"object\" ? relation.table : relation;\n const schemaName: string = typeof relation === \"object\"\n ? (relation.schema as string)\n : \"public\";\n\n const supabase = useSupabase();\n const deleteItem = useDeleteItem({\n primaryKeys: primaryKeys.map((k) => String(k)) as string[],\n table: tableName,\n schema: schemaName,\n });\n\n const deleteMutation = useMutation<\n RowResult | null,\n Error,\n Partial<RowResult>\n >({\n mutationFn: async (item) => {\n if (Array.isArray(item)) {\n throw new Error(\"Item cannot be an array.\");\n }\n\n // Build the delete query using primary keys\n const deleteQuery = supabase\n .schema(schemaName as \"public\")\n .from(tableName as any)\n .delete();\n\n // Apply primary key filters\n primaryKeys.forEach((key) => {\n const keyStr = String(key);\n const value = (item as any)[keyStr];\n if (isUsable(value)) {\n deleteQuery.eq(keyStr, value);\n }\n });\n\n // Execute the delete\n const response = await deleteQuery.select().single();\n\n if (response.error) {\n throw response.error;\n }\n\n // Update cache if we got data back\n if (response.data) {\n deleteItem(response.data as any);\n } else {\n // If no data returned, still update cache with the item we deleted\n deleteItem(item as any);\n }\n\n return response.data as any;\n },\n });\n\n return deleteMutation;\n}\n","import { useMutation } from \"@tanstack/react-query\";\nimport useSupabase, { Database } from \"../client/useSupabase\";\nimport { GetResult } from \"../parser/select-query-parser\";\nimport { GenericSchema } from \"../parser/types\";\nimport {\n useDeleteManyMutation,\n} from \"@supabase-cache-helpers/postgrest-react-query\";\n\ntype ItemType<T> = T extends Array<infer U> ? U : T;\n\nexport function useBatchDelete<\n TableName extends string & keyof PublicSchema[\"Tables\"],\n Table extends PublicSchema[\"Tables\"][TableName],\n Schema extends keyof Database = \"public\",\n PublicSchema extends GenericSchema =\n Database[Extract<keyof Database, Schema>],\n Query extends string = \"*\",\n RelationName = unknown,\n Relationships = Table extends { Relationships: infer R } ? R : unknown,\n RowResult extends object = Omit<\n GetResult<\n PublicSchema,\n Table[\"Update\"],\n RelationName,\n Relationships,\n Query\n >,\n \"id\"\n >,\n>(\n relation: TableName | { table: TableName; schema: Schema },\n primaryKeys: (keyof ItemType<RowResult> & string)[] = [\"id\" as any],\n) {\n const tableName = typeof relation === \"object\" ? relation.table : relation;\n const schemaName: string = typeof relation === \"object\"\n ? String(relation.schema)\n : \"public\";\n\n const supabase = useSupabase();\n const primaryKeysAsStrings = primaryKeys.map((k) => String(k)) as string[];\n const deleteManyMutation = useDeleteManyMutation(\n supabase.schema(schemaName as \"public\").from(tableName as any) as any,\n primaryKeysAsStrings as any,\n );\n\n const deleteMutation = useMutation<\n RowResult | null,\n Error,\n RowResult | RowResult[]\n >({\n mutationFn: async (item) => {\n if (Array.isArray(item)) {\n const response = await deleteManyMutation.mutateAsync(item);\n return response as any;\n } else {\n throw new Error(\"Item must be an array.\");\n }\n },\n });\n\n return deleteMutation;\n}\n","import { useMutation } from \"@tanstack/react-query\";\nimport useSupabase, { Database } from \"../client/useSupabase\";\nimport { useUpsertItem } from \"@supabase-cache-helpers/postgrest-react-query\";\nimport { GetResult } from \"../parser/select-query-parser\";\nimport { GenericSchema } from \"../parser/types\";\n\nfunction isUsable<T>(value: T | null | undefined): value is T {\n return value !== null && value !== undefined;\n}\n\nfunction omit<T extends Record<string, any>, K extends keyof T>(\n obj: T,\n keys: K[]\n): Omit<T, K> {\n const result = { ...obj };\n for (const key of keys) {\n delete result[key];\n }\n return result;\n}\n\ntype ItemType<T> = T extends Array<infer U> ? U : T;\n\nexport function useBatchUpsert<\n TableName extends string & keyof PublicSchema[\"Tables\"],\n Table extends PublicSchema[\"Tables\"][TableName],\n Schema extends keyof Database = \"public\",\n PublicSchema extends GenericSchema =\n Database[Extract<keyof Database, Schema>],\n Query extends string = \"*\",\n RelationName = unknown,\n Relationships = Table extends { Relationships: infer R } ? R : unknown,\n RowResult extends object = GetResult<\n PublicSchema,\n Table[\"Row\"],\n RelationName,\n Relationships,\n Query\n >,\n ResultInsert extends object = GetResult<\n PublicSchema,\n Table[\"Insert\"],\n RelationName,\n Relationships,\n Query\n >,\n ResultUpdate extends object =\n & Omit<\n GetResult<\n PublicSchema,\n Table[\"Update\"],\n RelationName,\n Relationships,\n Query\n >,\n \"id\"\n >\n & { id: any },\n>(\n relation: TableName | { table: TableName; schema: Schema },\n primaryKeys: (keyof (ItemType<RowResult> | any) & string)[] = [\"id\"],\n query: string = \"*\",\n) {\n const supabase = useSupabase();\n const tableName = typeof relation === \"object\" ? relation.table : relation;\n const schemaName: string = typeof relation === \"object\"\n ? String(relation.schema)\n : \"public\";\n\n const upsertItem = useUpsertItem({\n primaryKeys: primaryKeys,\n table: relation as any,\n schema: \"public\",\n });\n\n const primaryKeysAsStrings = primaryKeys.map((k) => String(k)) as string[];\n\n async function upsertItemAction(item: any) {\n let task: any;\n\n if (\n Object.keys(item).length !== primaryKeys.length &&\n primaryKeys.every((key) => key in item && isUsable(item[key]))\n ) {\n const updateObject = omit(item as any, primaryKeysAsStrings as any) as any;\n task = supabase\n .schema(schemaName as \"public\")\n .from(tableName as any).update(updateObject);\n\n primaryKeys.forEach((key) => {\n task = task.eq(String(key), item[key]);\n });\n } else {\n task = supabase\n .schema(schemaName as \"public\")\n .from(tableName as any)\n .insert(omit(item as any, primaryKeysAsStrings as any) as any);\n }\n\n const response = await task.select(query);\n if (response.error) {\n throw response.error;\n }\n return response.data[0];\n }\n\n const updateMutation = useMutation<\n (RowResult[] | null),\n Error,\n (ResultUpdate | ResultInsert)[]\n >({\n mutationFn: async (item) => {\n if (Array.isArray(item)) {\n const data = await Promise.all(item.map((x) => upsertItemAction(x)));\n data.filter((x) => isUsable(x)).forEach((x) => upsertItem(x as any));\n return data as RowResult[];\n }\n throw new Error(\"Item must be an array.\");\n },\n });\n\n return updateMutation;\n}\n"],"mappings":"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","names":["isUsable","useMutation","isUsable","omit","useMutation","query","useMutation","useUpsertItem","isUsable","omit","useMutation","query","useMutation","isUsable","useMutation","useMutation","useMutation","useMutation","useUpsertItem","isUsable","omit","useMutation"]}
|