@robinpath/supabase 0.1.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/README.md ADDED
@@ -0,0 +1,121 @@
1
+ # @robinpath/supabase
2
+
3
+ > Supabase module for RobinPath.
4
+
5
+ ![Category](https://img.shields.io/badge/category-Database-blue) ![Functions](https://img.shields.io/badge/functions-27-green) ![Auth](https://img.shields.io/badge/auth-API%20Key-orange) ![License](https://img.shields.io/badge/license-MIT-brightgreen)
6
+
7
+ ## Why use this module?
8
+
9
+ The `supabase` module lets you:
10
+
11
+ - Select rows from a table with optional filters, ordering, and pagination
12
+ - Insert one or more rows into a table
13
+ - Update rows matching filters
14
+ - Insert or update rows (merge on conflict)
15
+ - Delete rows matching filters
16
+
17
+ All functions are callable directly from RobinPath scripts with a simple, consistent API.
18
+
19
+ ## Installation
20
+
21
+ ```bash
22
+ npm install @robinpath/supabase
23
+ ```
24
+
25
+ ## Quick Start
26
+
27
+ **1. Set up credentials**
28
+
29
+ ```robinpath
30
+ supabase.setCredentials "https://xyz.supabase.co" "eyJhbGc..."
31
+ ```
32
+
33
+ **2. Store a service role key for admin operations (Auth admin, etc.)**
34
+
35
+ ```robinpath
36
+ supabase.setServiceKey "https://xyz.supabase.co" "eyJhbGc..."
37
+ ```
38
+
39
+ ## Available Functions
40
+
41
+ | Function | Description |
42
+ |----------|-------------|
43
+ | `supabase.setCredentials` | Store Supabase project URL and anon/service API key |
44
+ | `supabase.setServiceKey` | Store a service role key for admin operations (Auth admin, etc.) |
45
+ | `supabase.select` | Select rows from a table with optional filters, ordering, and pagination |
46
+ | `supabase.insert` | Insert one or more rows into a table |
47
+ | `supabase.update` | Update rows matching filters |
48
+ | `supabase.upsert` | Insert or update rows (merge on conflict) |
49
+ | `supabase.delete` | Delete rows matching filters |
50
+ | `supabase.rpc` | Call a Postgres function via RPC |
51
+ | `supabase.signUp` | Sign up a new user with email and password |
52
+ | `supabase.signIn` | Sign in a user with email and password |
53
+ | `supabase.signInWithOtp` | Send a magic link to the user's email for passwordless sign in |
54
+ | `supabase.signOut` | Sign out a user by invalidating their access token |
55
+ | `supabase.getUser` | Get the user object from a JWT access token |
56
+ | `supabase.updateUser` | Update user attributes (email, password, metadata) |
57
+ | `supabase.listUsers` | Admin: List all users (requires service role key) |
58
+ | `supabase.deleteUser` | Admin: Delete a user by ID (requires service role key) |
59
+ | `supabase.inviteUser` | Admin: Invite a user by email (requires service role key) |
60
+ | `supabase.listBuckets` | List all storage buckets |
61
+ | `supabase.createBucket` | Create a new storage bucket |
62
+ | `supabase.deleteBucket` | Delete a storage bucket (must be empty first) |
63
+ | `supabase.emptyBucket` | Remove all files from a storage bucket |
64
+ | `supabase.listFiles` | List files in a storage bucket/folder |
65
+ | `supabase.uploadFile` | Upload a file to a storage bucket |
66
+ | `supabase.downloadFile` | Download a file from a storage bucket |
67
+ | `supabase.deleteFile` | Delete one or more files from a storage bucket |
68
+ | `supabase.getPublicUrl` | Get the public URL for a file in a public bucket |
69
+ | `supabase.createSignedUrl` | Create a signed URL for temporary access to a private file |
70
+
71
+ ## Examples
72
+
73
+ ### Store a service role key for admin operations (Auth admin, etc.)
74
+
75
+ ```robinpath
76
+ supabase.setServiceKey "https://xyz.supabase.co" "eyJhbGc..."
77
+ ```
78
+
79
+ ### Select rows from a table with optional filters, ordering, and pagination
80
+
81
+ ```robinpath
82
+ supabase.select "users" "*" {"eq": {"status": "active"}, "limit": 10}
83
+ ```
84
+
85
+ ### Insert one or more rows into a table
86
+
87
+ ```robinpath
88
+ supabase.insert "users" {"name": "Alice", "email": "alice@example.com"}
89
+ ```
90
+
91
+ ## Integration with RobinPath
92
+
93
+ ```typescript
94
+ import { RobinPath } from "@wiredwp/robinpath";
95
+ import Module from "@robinpath/supabase";
96
+
97
+ const rp = new RobinPath();
98
+ rp.registerModule(Module.name, Module.functions);
99
+ rp.registerModuleMeta(Module.name, Module.functionMetadata);
100
+
101
+ const result = await rp.executeScript(`
102
+ supabase.setCredentials "https://xyz.supabase.co" "eyJhbGc..."
103
+ supabase.setServiceKey "https://xyz.supabase.co" "eyJhbGc..."
104
+ `);
105
+ ```
106
+
107
+ ## Full API Reference
108
+
109
+ See [MODULE.md](./MODULE.md) for complete documentation including all parameters, return types, error handling, and advanced examples.
110
+
111
+ ## Related Modules
112
+
113
+ - [`@robinpath/mysql`](../mysql) — MySQL module for complementary functionality
114
+ - [`@robinpath/postgres`](../postgres) — PostgreSQL module for complementary functionality
115
+ - [`@robinpath/mongo`](../mongo) — Mongo module for complementary functionality
116
+ - [`@robinpath/redis`](../redis) — Redis module for complementary functionality
117
+ - [`@robinpath/firebase`](../firebase) — Firebase module for complementary functionality
118
+
119
+ ## License
120
+
121
+ MIT
@@ -0,0 +1,6 @@
1
+ import type { ModuleAdapter } from "@wiredwp/robinpath";
2
+ declare const SupabaseModule: ModuleAdapter;
3
+ export default SupabaseModule;
4
+ export { SupabaseModule };
5
+ export { SupabaseFunctions, SupabaseFunctionMetadata, SupabaseModuleMetadata } from "./supabase.js";
6
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AAGxD,QAAA,MAAM,cAAc,EAAE,aAMrB,CAAC;AAEF,eAAe,cAAc,CAAC;AAC9B,OAAO,EAAE,cAAc,EAAE,CAAC;AAC1B,OAAO,EAAE,iBAAiB,EAAE,wBAAwB,EAAE,sBAAsB,EAAE,MAAM,eAAe,CAAC"}
package/dist/index.js ADDED
@@ -0,0 +1,12 @@
1
+ import { SupabaseFunctions, SupabaseFunctionMetadata, SupabaseModuleMetadata } from "./supabase.js";
2
+ const SupabaseModule = {
3
+ name: "supabase",
4
+ functions: SupabaseFunctions,
5
+ functionMetadata: SupabaseFunctionMetadata,
6
+ moduleMetadata: SupabaseModuleMetadata,
7
+ global: false,
8
+ }; // as ModuleAdapter
9
+ export default SupabaseModule;
10
+ export { SupabaseModule };
11
+ export { SupabaseFunctions, SupabaseFunctionMetadata, SupabaseModuleMetadata } from "./supabase.js";
12
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,iBAAiB,EAAE,wBAAwB,EAAE,sBAAsB,EAAE,MAAM,eAAe,CAAC;AAEpG,MAAM,cAAc,GAAkB;IACpC,IAAI,EAAE,UAAU;IAChB,SAAS,EAAE,iBAAiB;IAC5B,gBAAgB,EAAE,wBAA+B;IACjD,cAAc,EAAE,sBAA6B;IAC7C,MAAM,EAAE,KAAK;CACd,CAAC,CAAC,mBAAmB;AAEtB,eAAe,cAAc,CAAC;AAC9B,OAAO,EAAE,cAAc,EAAE,CAAC;AAC1B,OAAO,EAAE,iBAAiB,EAAE,wBAAwB,EAAE,sBAAsB,EAAE,MAAM,eAAe,CAAC"}
@@ -0,0 +1,361 @@
1
+ import type { BuiltinHandler } from "@wiredwp/robinpath";
2
+ export declare const SupabaseFunctions: Record<string, BuiltinHandler>;
3
+ export declare const SupabaseFunctionMetadata: {
4
+ setCredentials: {
5
+ description: string;
6
+ parameters: {
7
+ name: string;
8
+ dataType: string;
9
+ description: string;
10
+ formInputType: string;
11
+ required: boolean;
12
+ }[];
13
+ returnType: string;
14
+ returnDescription: string;
15
+ example: string;
16
+ };
17
+ setServiceKey: {
18
+ description: string;
19
+ parameters: {
20
+ name: string;
21
+ dataType: string;
22
+ description: string;
23
+ formInputType: string;
24
+ required: boolean;
25
+ }[];
26
+ returnType: string;
27
+ returnDescription: string;
28
+ example: string;
29
+ };
30
+ select: {
31
+ description: string;
32
+ parameters: {
33
+ name: string;
34
+ dataType: string;
35
+ description: string;
36
+ formInputType: string;
37
+ required: boolean;
38
+ }[];
39
+ returnType: string;
40
+ returnDescription: string;
41
+ example: string;
42
+ };
43
+ insert: {
44
+ description: string;
45
+ parameters: {
46
+ name: string;
47
+ dataType: string;
48
+ description: string;
49
+ formInputType: string;
50
+ required: boolean;
51
+ }[];
52
+ returnType: string;
53
+ returnDescription: string;
54
+ example: string;
55
+ };
56
+ update: {
57
+ description: string;
58
+ parameters: {
59
+ name: string;
60
+ dataType: string;
61
+ description: string;
62
+ formInputType: string;
63
+ required: boolean;
64
+ }[];
65
+ returnType: string;
66
+ returnDescription: string;
67
+ example: string;
68
+ };
69
+ upsert: {
70
+ description: string;
71
+ parameters: {
72
+ name: string;
73
+ dataType: string;
74
+ description: string;
75
+ formInputType: string;
76
+ required: boolean;
77
+ }[];
78
+ returnType: string;
79
+ returnDescription: string;
80
+ example: string;
81
+ };
82
+ delete: {
83
+ description: string;
84
+ parameters: {
85
+ name: string;
86
+ dataType: string;
87
+ description: string;
88
+ formInputType: string;
89
+ required: boolean;
90
+ }[];
91
+ returnType: string;
92
+ returnDescription: string;
93
+ example: string;
94
+ };
95
+ rpc: {
96
+ description: string;
97
+ parameters: {
98
+ name: string;
99
+ dataType: string;
100
+ description: string;
101
+ formInputType: string;
102
+ required: boolean;
103
+ }[];
104
+ returnType: string;
105
+ returnDescription: string;
106
+ example: string;
107
+ };
108
+ signUp: {
109
+ description: string;
110
+ parameters: {
111
+ name: string;
112
+ dataType: string;
113
+ description: string;
114
+ formInputType: string;
115
+ required: boolean;
116
+ }[];
117
+ returnType: string;
118
+ returnDescription: string;
119
+ example: string;
120
+ };
121
+ signIn: {
122
+ description: string;
123
+ parameters: {
124
+ name: string;
125
+ dataType: string;
126
+ description: string;
127
+ formInputType: string;
128
+ required: boolean;
129
+ }[];
130
+ returnType: string;
131
+ returnDescription: string;
132
+ example: string;
133
+ };
134
+ signInWithOtp: {
135
+ description: string;
136
+ parameters: {
137
+ name: string;
138
+ dataType: string;
139
+ description: string;
140
+ formInputType: string;
141
+ required: boolean;
142
+ }[];
143
+ returnType: string;
144
+ returnDescription: string;
145
+ example: string;
146
+ };
147
+ signOut: {
148
+ description: string;
149
+ parameters: {
150
+ name: string;
151
+ dataType: string;
152
+ description: string;
153
+ formInputType: string;
154
+ required: boolean;
155
+ }[];
156
+ returnType: string;
157
+ returnDescription: string;
158
+ example: string;
159
+ };
160
+ getUser: {
161
+ description: string;
162
+ parameters: {
163
+ name: string;
164
+ dataType: string;
165
+ description: string;
166
+ formInputType: string;
167
+ required: boolean;
168
+ }[];
169
+ returnType: string;
170
+ returnDescription: string;
171
+ example: string;
172
+ };
173
+ updateUser: {
174
+ description: string;
175
+ parameters: {
176
+ name: string;
177
+ dataType: string;
178
+ description: string;
179
+ formInputType: string;
180
+ required: boolean;
181
+ }[];
182
+ returnType: string;
183
+ returnDescription: string;
184
+ example: string;
185
+ };
186
+ listUsers: {
187
+ description: string;
188
+ parameters: {
189
+ name: string;
190
+ dataType: string;
191
+ description: string;
192
+ formInputType: string;
193
+ required: boolean;
194
+ }[];
195
+ returnType: string;
196
+ returnDescription: string;
197
+ example: string;
198
+ };
199
+ deleteUser: {
200
+ description: string;
201
+ parameters: {
202
+ name: string;
203
+ dataType: string;
204
+ description: string;
205
+ formInputType: string;
206
+ required: boolean;
207
+ }[];
208
+ returnType: string;
209
+ returnDescription: string;
210
+ example: string;
211
+ };
212
+ inviteUser: {
213
+ description: string;
214
+ parameters: {
215
+ name: string;
216
+ dataType: string;
217
+ description: string;
218
+ formInputType: string;
219
+ required: boolean;
220
+ }[];
221
+ returnType: string;
222
+ returnDescription: string;
223
+ example: string;
224
+ };
225
+ listBuckets: {
226
+ description: string;
227
+ parameters: {
228
+ name: string;
229
+ dataType: string;
230
+ description: string;
231
+ formInputType: string;
232
+ required: boolean;
233
+ }[];
234
+ returnType: string;
235
+ returnDescription: string;
236
+ example: string;
237
+ };
238
+ createBucket: {
239
+ description: string;
240
+ parameters: {
241
+ name: string;
242
+ dataType: string;
243
+ description: string;
244
+ formInputType: string;
245
+ required: boolean;
246
+ }[];
247
+ returnType: string;
248
+ returnDescription: string;
249
+ example: string;
250
+ };
251
+ deleteBucket: {
252
+ description: string;
253
+ parameters: {
254
+ name: string;
255
+ dataType: string;
256
+ description: string;
257
+ formInputType: string;
258
+ required: boolean;
259
+ }[];
260
+ returnType: string;
261
+ returnDescription: string;
262
+ example: string;
263
+ };
264
+ emptyBucket: {
265
+ description: string;
266
+ parameters: {
267
+ name: string;
268
+ dataType: string;
269
+ description: string;
270
+ formInputType: string;
271
+ required: boolean;
272
+ }[];
273
+ returnType: string;
274
+ returnDescription: string;
275
+ example: string;
276
+ };
277
+ listFiles: {
278
+ description: string;
279
+ parameters: {
280
+ name: string;
281
+ dataType: string;
282
+ description: string;
283
+ formInputType: string;
284
+ required: boolean;
285
+ }[];
286
+ returnType: string;
287
+ returnDescription: string;
288
+ example: string;
289
+ };
290
+ uploadFile: {
291
+ description: string;
292
+ parameters: {
293
+ name: string;
294
+ dataType: string;
295
+ description: string;
296
+ formInputType: string;
297
+ required: boolean;
298
+ }[];
299
+ returnType: string;
300
+ returnDescription: string;
301
+ example: string;
302
+ };
303
+ downloadFile: {
304
+ description: string;
305
+ parameters: {
306
+ name: string;
307
+ dataType: string;
308
+ description: string;
309
+ formInputType: string;
310
+ required: boolean;
311
+ }[];
312
+ returnType: string;
313
+ returnDescription: string;
314
+ example: string;
315
+ };
316
+ deleteFile: {
317
+ description: string;
318
+ parameters: {
319
+ name: string;
320
+ dataType: string;
321
+ description: string;
322
+ formInputType: string;
323
+ required: boolean;
324
+ }[];
325
+ returnType: string;
326
+ returnDescription: string;
327
+ example: string;
328
+ };
329
+ getPublicUrl: {
330
+ description: string;
331
+ parameters: {
332
+ name: string;
333
+ dataType: string;
334
+ description: string;
335
+ formInputType: string;
336
+ required: boolean;
337
+ }[];
338
+ returnType: string;
339
+ returnDescription: string;
340
+ example: string;
341
+ };
342
+ createSignedUrl: {
343
+ description: string;
344
+ parameters: {
345
+ name: string;
346
+ dataType: string;
347
+ description: string;
348
+ formInputType: string;
349
+ required: boolean;
350
+ }[];
351
+ returnType: string;
352
+ returnDescription: string;
353
+ example: string;
354
+ };
355
+ };
356
+ export declare const SupabaseModuleMetadata: {
357
+ description: string;
358
+ methods: string[];
359
+ category: string;
360
+ };
361
+ //# sourceMappingURL=supabase.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"supabase.d.ts","sourceRoot":"","sources":["../src/supabase.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAA2C,MAAM,oBAAoB,CAAC;AAwGlG,eAAO,MAAM,iBAAiB,EAAE,MAAM,CAAC,MAAM,EAAE,cAAc,CAqZ5D,CAAC;AAIF,eAAO,MAAM,wBAAwB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAmUpC,CAAC;AAIF,eAAO,MAAM,sBAAsB;;;;CAIlC,CAAC"}
@@ -0,0 +1,723 @@
1
+ const credentials = new Map();
2
+ function getCreds(profile) {
3
+ const key = profile ?? "__default__";
4
+ const c = credentials.get(key);
5
+ if (!c)
6
+ throw new Error(`Supabase not configured. Call setCredentials() first${profile ? ` for profile "${profile}"` : ""}.`);
7
+ return c;
8
+ }
9
+ function baseHeaders(apiKey, accessToken) {
10
+ return {
11
+ apikey: apiKey,
12
+ Authorization: `Bearer ${accessToken ?? apiKey}`,
13
+ "Content-Type": "application/json",
14
+ };
15
+ }
16
+ async function supaFetch(url, init) {
17
+ const res = await fetch(url, init);
18
+ const text = await res.text();
19
+ let body;
20
+ try {
21
+ body = JSON.parse(text);
22
+ }
23
+ catch {
24
+ body = text;
25
+ }
26
+ if (!res.ok) {
27
+ const msg = typeof body === "object" && body !== null && "message" in body
28
+ ? body.message
29
+ : typeof body === "object" && body !== null && "error_description" in body
30
+ ? body.error_description
31
+ : text;
32
+ throw new Error(`Supabase ${res.status}: ${msg}`);
33
+ }
34
+ return body;
35
+ }
36
+ // ── helpers ─────────────────────────────────────────────────────────────────
37
+ function buildPostgrestQuery(baseUrl, table, options) {
38
+ let url = `${baseUrl}/rest/v1/${encodeURIComponent(table)}`;
39
+ if (!options)
40
+ return url;
41
+ const params = [];
42
+ // columns
43
+ if (options.columns)
44
+ params.push(`select=${encodeURIComponent(String(options.columns))}`);
45
+ // filters: eq, neq, gt, lt, gte, lte, like, ilike, in, is
46
+ const filterOps = ["eq", "neq", "gt", "lt", "gte", "lte", "like", "ilike", "in", "is"];
47
+ for (const op of filterOps) {
48
+ if (options[op] && typeof options[op] === "object") {
49
+ const filters = options[op];
50
+ for (const [col, val] of Object.entries(filters)) {
51
+ if (op === "in") {
52
+ const arr = Array.isArray(val) ? val : [val];
53
+ params.push(`${encodeURIComponent(col)}=in.(${arr.map((v) => encodeURIComponent(String(v))).join(",")})`);
54
+ }
55
+ else {
56
+ params.push(`${encodeURIComponent(col)}=${op}.${encodeURIComponent(String(val))}`);
57
+ }
58
+ }
59
+ }
60
+ }
61
+ // order
62
+ if (options.order) {
63
+ if (typeof options.order === "string") {
64
+ params.push(`order=${encodeURIComponent(options.order)}`);
65
+ }
66
+ else if (typeof options.order === "object" && !Array.isArray(options.order)) {
67
+ const o = options.order;
68
+ const col = o.column ?? o.col;
69
+ const dir = o.ascending === false || o.desc === true ? "desc" : "asc";
70
+ const nulls = o.nullsFirst ? ".nullsfirst" : "";
71
+ params.push(`order=${encodeURIComponent(String(col))}.${dir}${nulls}`);
72
+ }
73
+ }
74
+ // limit & offset
75
+ if (options.limit !== undefined)
76
+ params.push(`limit=${Number(options.limit)}`);
77
+ if (options.offset !== undefined)
78
+ params.push(`offset=${Number(options.offset)}`);
79
+ if (params.length > 0)
80
+ url += `?${params.join("&")}`;
81
+ return url;
82
+ }
83
+ function buildMatchParams(match) {
84
+ const parts = [];
85
+ for (const [col, val] of Object.entries(match)) {
86
+ parts.push(`${encodeURIComponent(col)}=eq.${encodeURIComponent(String(val))}`);
87
+ }
88
+ return parts.join("&");
89
+ }
90
+ // ── functions ───────────────────────────────────────────────────────────────
91
+ export const SupabaseFunctions = {
92
+ // ── credentials ─────────────────────────────────────────────────────────
93
+ setCredentials: (args) => {
94
+ const projectUrl = String(args[0]);
95
+ const apiKey = String(args[1]);
96
+ const profile = args[2] != null ? String(args[2]) : "__default__";
97
+ const url = projectUrl.replace(/\/+$/, "");
98
+ credentials.set(profile, { projectUrl: url, apiKey });
99
+ return { success: true, profile };
100
+ },
101
+ setServiceKey: (args) => {
102
+ const projectUrl = String(args[0]);
103
+ const serviceKey = String(args[1]);
104
+ const profile = args[2] != null ? String(args[2]) : "__default__";
105
+ const url = projectUrl.replace(/\/+$/, "");
106
+ const existing = credentials.get(profile);
107
+ if (existing) {
108
+ existing.serviceKey = serviceKey;
109
+ existing.projectUrl = url;
110
+ }
111
+ else {
112
+ credentials.set(profile, { projectUrl: url, apiKey: serviceKey, serviceKey });
113
+ }
114
+ return { success: true, profile };
115
+ },
116
+ // ── PostgREST (database) ───────────────────────────────────────────────
117
+ select: async (args) => {
118
+ const table = String(args[0]);
119
+ const columns = args[1] != null ? String(args[1]) : undefined;
120
+ const options = args[2] ?? {};
121
+ const creds = getCreds(options.profile);
122
+ const opts = { ...options };
123
+ if (columns)
124
+ opts.columns = columns;
125
+ const url = buildPostgrestQuery(creds.projectUrl, table, opts);
126
+ const headers = baseHeaders(creds.apiKey);
127
+ // range header
128
+ if (options.range && typeof options.range === "string") {
129
+ headers["Range"] = options.range;
130
+ headers["Range-Unit"] = "items";
131
+ }
132
+ return supaFetch(url, { method: "GET", headers });
133
+ },
134
+ insert: async (args) => {
135
+ const table = String(args[0]);
136
+ const data = args[1];
137
+ const options = args[2] ?? {};
138
+ const creds = getCreds(options.profile);
139
+ let url = `${creds.projectUrl}/rest/v1/${encodeURIComponent(table)}`;
140
+ if (options.columns)
141
+ url += `?columns=${encodeURIComponent(String(options.columns))}`;
142
+ const headers = baseHeaders(creds.apiKey);
143
+ if (options.returning !== false)
144
+ headers["Prefer"] = "return=representation";
145
+ if (options.onConflict) {
146
+ headers["Prefer"] = `return=representation,resolution=merge-duplicates`;
147
+ url += `${url.includes("?") ? "&" : "?"}on_conflict=${encodeURIComponent(String(options.onConflict))}`;
148
+ }
149
+ return supaFetch(url, { method: "POST", headers, body: JSON.stringify(data) });
150
+ },
151
+ update: async (args) => {
152
+ const table = String(args[0]);
153
+ const data = args[1];
154
+ const match = args[2] ?? {};
155
+ const options = args[3] ?? {};
156
+ const creds = getCreds(options.profile);
157
+ const matchStr = buildMatchParams(match);
158
+ let url = `${creds.projectUrl}/rest/v1/${encodeURIComponent(table)}?${matchStr}`;
159
+ const headers = baseHeaders(creds.apiKey);
160
+ headers["Prefer"] = "return=representation";
161
+ return supaFetch(url, { method: "PATCH", headers, body: JSON.stringify(data) });
162
+ },
163
+ upsert: async (args) => {
164
+ const table = String(args[0]);
165
+ const data = args[1];
166
+ const options = args[2] ?? {};
167
+ const creds = getCreds(options.profile);
168
+ let url = `${creds.projectUrl}/rest/v1/${encodeURIComponent(table)}`;
169
+ const headers = baseHeaders(creds.apiKey);
170
+ headers["Prefer"] = "return=representation,resolution=merge-duplicates";
171
+ if (options.onConflict) {
172
+ url += `?on_conflict=${encodeURIComponent(String(options.onConflict))}`;
173
+ }
174
+ return supaFetch(url, { method: "POST", headers, body: JSON.stringify(data) });
175
+ },
176
+ delete: async (args) => {
177
+ const table = String(args[0]);
178
+ const match = args[1] ?? {};
179
+ const options = args[2] ?? {};
180
+ const creds = getCreds(options.profile);
181
+ const matchStr = buildMatchParams(match);
182
+ let url = `${creds.projectUrl}/rest/v1/${encodeURIComponent(table)}?${matchStr}`;
183
+ const headers = baseHeaders(creds.apiKey);
184
+ headers["Prefer"] = "return=representation";
185
+ return supaFetch(url, { method: "DELETE", headers });
186
+ },
187
+ rpc: async (args) => {
188
+ const functionName = String(args[0]);
189
+ const params = args[1] ?? {};
190
+ const options = args[2] ?? {};
191
+ const creds = getCreds(options.profile);
192
+ const url = `${creds.projectUrl}/rest/v1/rpc/${encodeURIComponent(functionName)}`;
193
+ const headers = baseHeaders(creds.apiKey);
194
+ return supaFetch(url, { method: "POST", headers, body: JSON.stringify(params) });
195
+ },
196
+ // ── Auth ────────────────────────────────────────────────────────────────
197
+ signUp: async (args) => {
198
+ const email = String(args[0]);
199
+ const password = String(args[1]);
200
+ const options = args[2] ?? {};
201
+ const creds = getCreds(options.profile);
202
+ const url = `${creds.projectUrl}/auth/v1/signup`;
203
+ const headers = baseHeaders(creds.apiKey);
204
+ const payload = { email, password };
205
+ if (options.data)
206
+ payload.data = options.data;
207
+ if (options.emailRedirectTo)
208
+ payload.gotrue_meta_security = { captcha_token: undefined };
209
+ return supaFetch(url, { method: "POST", headers, body: JSON.stringify(payload) });
210
+ },
211
+ signIn: async (args) => {
212
+ const email = String(args[0]);
213
+ const password = String(args[1]);
214
+ const options = args[2] ?? {};
215
+ const creds = getCreds(options.profile);
216
+ const url = `${creds.projectUrl}/auth/v1/token?grant_type=password`;
217
+ const headers = baseHeaders(creds.apiKey);
218
+ return supaFetch(url, { method: "POST", headers, body: JSON.stringify({ email, password }) });
219
+ },
220
+ signInWithOtp: async (args) => {
221
+ const email = String(args[0]);
222
+ const options = args[1] ?? {};
223
+ const creds = getCreds(options.profile);
224
+ const url = `${creds.projectUrl}/auth/v1/otp`;
225
+ const headers = baseHeaders(creds.apiKey);
226
+ const payload = { email };
227
+ if (options.emailRedirectTo)
228
+ payload.gotrue_meta_security = { captcha_token: undefined };
229
+ return supaFetch(url, { method: "POST", headers, body: JSON.stringify(payload) });
230
+ },
231
+ signOut: async (args) => {
232
+ const accessToken = String(args[0]);
233
+ const options = args[1] ?? {};
234
+ const creds = getCreds(options.profile);
235
+ const url = `${creds.projectUrl}/auth/v1/logout`;
236
+ const headers = baseHeaders(creds.apiKey, accessToken);
237
+ return supaFetch(url, { method: "POST", headers });
238
+ },
239
+ getUser: async (args) => {
240
+ const accessToken = String(args[0]);
241
+ const options = args[1] ?? {};
242
+ const creds = getCreds(options.profile);
243
+ const url = `${creds.projectUrl}/auth/v1/user`;
244
+ const headers = baseHeaders(creds.apiKey, accessToken);
245
+ return supaFetch(url, { method: "GET", headers });
246
+ },
247
+ updateUser: async (args) => {
248
+ const accessToken = String(args[0]);
249
+ const attributes = args[1];
250
+ const options = args[2] ?? {};
251
+ const creds = getCreds(options.profile);
252
+ const url = `${creds.projectUrl}/auth/v1/user`;
253
+ const headers = baseHeaders(creds.apiKey, accessToken);
254
+ return supaFetch(url, { method: "PUT", headers, body: JSON.stringify(attributes) });
255
+ },
256
+ listUsers: async (args) => {
257
+ const options = args[0] ?? {};
258
+ const creds = getCreds(options.profile);
259
+ const serviceKey = creds.serviceKey ?? creds.apiKey;
260
+ const params = [];
261
+ if (options.page !== undefined)
262
+ params.push(`page=${Number(options.page)}`);
263
+ if (options.perPage !== undefined)
264
+ params.push(`per_page=${Number(options.perPage)}`);
265
+ const qs = params.length > 0 ? `?${params.join("&")}` : "";
266
+ const url = `${creds.projectUrl}/auth/v1/admin/users${qs}`;
267
+ const headers = baseHeaders(serviceKey);
268
+ return supaFetch(url, { method: "GET", headers });
269
+ },
270
+ deleteUser: async (args) => {
271
+ const userId = String(args[0]);
272
+ const options = args[1] ?? {};
273
+ const creds = getCreds(options.profile);
274
+ const serviceKey = creds.serviceKey ?? creds.apiKey;
275
+ const url = `${creds.projectUrl}/auth/v1/admin/users/${encodeURIComponent(userId)}`;
276
+ const headers = baseHeaders(serviceKey);
277
+ return supaFetch(url, { method: "DELETE", headers });
278
+ },
279
+ inviteUser: async (args) => {
280
+ const email = String(args[0]);
281
+ const options = args[1] ?? {};
282
+ const creds = getCreds(options.profile);
283
+ const serviceKey = creds.serviceKey ?? creds.apiKey;
284
+ const url = `${creds.projectUrl}/auth/v1/invite`;
285
+ const headers = baseHeaders(serviceKey);
286
+ return supaFetch(url, { method: "POST", headers, body: JSON.stringify({ email }) });
287
+ },
288
+ // ── Storage ─────────────────────────────────────────────────────────────
289
+ listBuckets: async (args) => {
290
+ const options = args[0] ?? {};
291
+ const creds = getCreds(options.profile);
292
+ const url = `${creds.projectUrl}/storage/v1/bucket`;
293
+ const headers = baseHeaders(creds.apiKey);
294
+ return supaFetch(url, { method: "GET", headers });
295
+ },
296
+ createBucket: async (args) => {
297
+ const name = String(args[0]);
298
+ const options = args[1] ?? {};
299
+ const creds = getCreds(options.profile);
300
+ const url = `${creds.projectUrl}/storage/v1/bucket`;
301
+ const headers = baseHeaders(creds.apiKey);
302
+ const payload = { name, id: name };
303
+ if (options.public !== undefined)
304
+ payload.public = Boolean(options.public);
305
+ if (options.fileSizeLimit !== undefined)
306
+ payload.file_size_limit = Number(options.fileSizeLimit);
307
+ if (options.allowedMimeTypes)
308
+ payload.allowed_mime_types = options.allowedMimeTypes;
309
+ return supaFetch(url, { method: "POST", headers, body: JSON.stringify(payload) });
310
+ },
311
+ deleteBucket: async (args) => {
312
+ const bucketId = String(args[0]);
313
+ const options = args[1] ?? {};
314
+ const creds = getCreds(options.profile);
315
+ const url = `${creds.projectUrl}/storage/v1/bucket/${encodeURIComponent(bucketId)}`;
316
+ const headers = baseHeaders(creds.apiKey);
317
+ return supaFetch(url, { method: "DELETE", headers });
318
+ },
319
+ emptyBucket: async (args) => {
320
+ const bucketId = String(args[0]);
321
+ const options = args[1] ?? {};
322
+ const creds = getCreds(options.profile);
323
+ const url = `${creds.projectUrl}/storage/v1/bucket/${encodeURIComponent(bucketId)}/empty`;
324
+ const headers = baseHeaders(creds.apiKey);
325
+ return supaFetch(url, { method: "POST", headers });
326
+ },
327
+ listFiles: async (args) => {
328
+ const bucketId = String(args[0]);
329
+ const folderPath = args[1] != null ? String(args[1]) : "";
330
+ const options = args[2] ?? {};
331
+ const creds = getCreds(options.profile);
332
+ const url = `${creds.projectUrl}/storage/v1/object/list/${encodeURIComponent(bucketId)}`;
333
+ const headers = baseHeaders(creds.apiKey);
334
+ const payload = { prefix: folderPath };
335
+ if (options.limit !== undefined)
336
+ payload.limit = Number(options.limit);
337
+ if (options.offset !== undefined)
338
+ payload.offset = Number(options.offset);
339
+ if (options.sortBy)
340
+ payload.sortBy = options.sortBy;
341
+ if (options.search)
342
+ payload.search = String(options.search);
343
+ return supaFetch(url, { method: "POST", headers, body: JSON.stringify(payload) });
344
+ },
345
+ uploadFile: async (args) => {
346
+ const bucketId = String(args[0]);
347
+ const filePath = String(args[1]);
348
+ const content = args[2];
349
+ const options = args[3] ?? {};
350
+ const creds = getCreds(options.profile);
351
+ const url = `${creds.projectUrl}/storage/v1/object/${encodeURIComponent(bucketId)}/${filePath}`;
352
+ const headers = {
353
+ apikey: creds.apiKey,
354
+ Authorization: `Bearer ${creds.apiKey}`,
355
+ };
356
+ if (options.contentType) {
357
+ headers["Content-Type"] = String(options.contentType);
358
+ }
359
+ else {
360
+ headers["Content-Type"] = "application/octet-stream";
361
+ }
362
+ if (options.upsert) {
363
+ headers["x-upsert"] = "true";
364
+ }
365
+ const body = typeof content === "string" ? content : JSON.stringify(content);
366
+ return supaFetch(url, { method: "POST", headers, body });
367
+ },
368
+ downloadFile: async (args) => {
369
+ const bucketId = String(args[0]);
370
+ const filePath = String(args[1]);
371
+ const options = args[2] ?? {};
372
+ const creds = getCreds(options.profile);
373
+ const url = `${creds.projectUrl}/storage/v1/object/${encodeURIComponent(bucketId)}/${filePath}`;
374
+ const headers = {
375
+ apikey: creds.apiKey,
376
+ Authorization: `Bearer ${creds.apiKey}`,
377
+ };
378
+ const res = await fetch(url, { method: "GET", headers });
379
+ if (!res.ok) {
380
+ const text = await res.text();
381
+ throw new Error(`Supabase ${res.status}: ${text}`);
382
+ }
383
+ return await res.text();
384
+ },
385
+ deleteFile: async (args) => {
386
+ const bucketId = String(args[0]);
387
+ const paths = args[1];
388
+ const options = args[2] ?? {};
389
+ const creds = getCreds(options.profile);
390
+ const url = `${creds.projectUrl}/storage/v1/object/${encodeURIComponent(bucketId)}`;
391
+ const headers = baseHeaders(creds.apiKey);
392
+ return supaFetch(url, { method: "DELETE", headers, body: JSON.stringify({ prefixes: paths }) });
393
+ },
394
+ getPublicUrl: (args) => {
395
+ const bucketId = String(args[0]);
396
+ const filePath = String(args[1]);
397
+ const options = args[2] ?? {};
398
+ const creds = getCreds(options.profile);
399
+ const url = `${creds.projectUrl}/storage/v1/object/public/${encodeURIComponent(bucketId)}/${filePath}`;
400
+ return { publicUrl: url };
401
+ },
402
+ createSignedUrl: async (args) => {
403
+ const bucketId = String(args[0]);
404
+ const filePath = String(args[1]);
405
+ const expiresIn = Number(args[2]);
406
+ const options = args[3] ?? {};
407
+ const creds = getCreds(options.profile);
408
+ const url = `${creds.projectUrl}/storage/v1/object/sign/${encodeURIComponent(bucketId)}/${filePath}`;
409
+ const headers = baseHeaders(creds.apiKey);
410
+ const result = await supaFetch(url, {
411
+ method: "POST",
412
+ headers,
413
+ body: JSON.stringify({ expiresIn }),
414
+ });
415
+ const signedURL = result.signedURL ?? result.signedUrl ?? result.signed_url;
416
+ return {
417
+ signedUrl: signedURL ? `${creds.projectUrl}/storage/v1${signedURL}` : null,
418
+ expiresIn,
419
+ };
420
+ },
421
+ };
422
+ // ── function metadata ───────────────────────────────────────────────────────
423
+ export const SupabaseFunctionMetadata = {
424
+ // ── credentials ─────────────────────────────────────────────────────────
425
+ setCredentials: {
426
+ description: "Store Supabase project URL and anon/service API key",
427
+ parameters: [
428
+ { name: "projectUrl", dataType: "string", description: "Supabase project URL (e.g. https://xyz.supabase.co)", formInputType: "text", required: true },
429
+ { name: "apiKey", dataType: "string", description: "Supabase anon or service_role key", formInputType: "text", required: true },
430
+ { name: "profile", dataType: "string", description: "Optional credential profile name", formInputType: "text", required: false },
431
+ ],
432
+ returnType: "object",
433
+ returnDescription: "{ success, profile }",
434
+ example: 'supabase.setCredentials "https://xyz.supabase.co" "eyJhbGc..."',
435
+ },
436
+ setServiceKey: {
437
+ description: "Store a service role key for admin operations (Auth admin, etc.)",
438
+ parameters: [
439
+ { name: "projectUrl", dataType: "string", description: "Supabase project URL", formInputType: "text", required: true },
440
+ { name: "serviceKey", dataType: "string", description: "Supabase service_role key", formInputType: "text", required: true },
441
+ { name: "profile", dataType: "string", description: "Optional credential profile name", formInputType: "text", required: false },
442
+ ],
443
+ returnType: "object",
444
+ returnDescription: "{ success, profile }",
445
+ example: 'supabase.setServiceKey "https://xyz.supabase.co" "eyJhbGc..."',
446
+ },
447
+ // ── PostgREST (database) ───────────────────────────────────────────────
448
+ select: {
449
+ description: "Select rows from a table with optional filters, ordering, and pagination",
450
+ parameters: [
451
+ { name: "table", dataType: "string", description: "Table name", formInputType: "text", required: true },
452
+ { name: "columns", dataType: "string", description: "Comma-separated column names or * (default *)", formInputType: "text", required: false },
453
+ { name: "options", dataType: "object", description: "Filters (eq, neq, gt, lt, gte, lte, like, ilike, in, is), order, limit, offset, range, profile", formInputType: "json", required: false },
454
+ ],
455
+ returnType: "array",
456
+ returnDescription: "Array of matching rows",
457
+ example: 'supabase.select "users" "*" {"eq": {"status": "active"}, "limit": 10}',
458
+ },
459
+ insert: {
460
+ description: "Insert one or more rows into a table",
461
+ parameters: [
462
+ { name: "table", dataType: "string", description: "Table name", formInputType: "text", required: true },
463
+ { name: "data", dataType: "object", description: "Row object or array of row objects", formInputType: "json", required: true },
464
+ { name: "options", dataType: "object", description: "Options: returning, onConflict (for upsert), columns, profile", formInputType: "json", required: false },
465
+ ],
466
+ returnType: "array",
467
+ returnDescription: "Array of inserted rows (if returning enabled)",
468
+ example: 'supabase.insert "users" {"name": "Alice", "email": "alice@example.com"}',
469
+ },
470
+ update: {
471
+ description: "Update rows matching filters",
472
+ parameters: [
473
+ { name: "table", dataType: "string", description: "Table name", formInputType: "text", required: true },
474
+ { name: "data", dataType: "object", description: "Fields to update", formInputType: "json", required: true },
475
+ { name: "match", dataType: "object", description: "Filter conditions to match rows (eq filters)", formInputType: "json", required: true },
476
+ { name: "options", dataType: "object", description: "Options: profile", formInputType: "json", required: false },
477
+ ],
478
+ returnType: "array",
479
+ returnDescription: "Array of updated rows",
480
+ example: 'supabase.update "users" {"status": "inactive"} {"id": 42}',
481
+ },
482
+ upsert: {
483
+ description: "Insert or update rows (merge on conflict)",
484
+ parameters: [
485
+ { name: "table", dataType: "string", description: "Table name", formInputType: "text", required: true },
486
+ { name: "data", dataType: "object", description: "Row object or array of row objects", formInputType: "json", required: true },
487
+ { name: "options", dataType: "object", description: "Options: onConflict (conflict column), profile", formInputType: "json", required: false },
488
+ ],
489
+ returnType: "array",
490
+ returnDescription: "Array of upserted rows",
491
+ example: 'supabase.upsert "users" {"id": 1, "name": "Alice"} {"onConflict": "id"}',
492
+ },
493
+ delete: {
494
+ description: "Delete rows matching filters",
495
+ parameters: [
496
+ { name: "table", dataType: "string", description: "Table name", formInputType: "text", required: true },
497
+ { name: "match", dataType: "object", description: "Filter conditions to match rows for deletion", formInputType: "json", required: true },
498
+ { name: "options", dataType: "object", description: "Options: profile", formInputType: "json", required: false },
499
+ ],
500
+ returnType: "array",
501
+ returnDescription: "Array of deleted rows",
502
+ example: 'supabase.delete "users" {"id": 42}',
503
+ },
504
+ rpc: {
505
+ description: "Call a Postgres function via RPC",
506
+ parameters: [
507
+ { name: "functionName", dataType: "string", description: "Name of the Postgres function", formInputType: "text", required: true },
508
+ { name: "params", dataType: "object", description: "Parameters to pass to the function", formInputType: "json", required: false },
509
+ { name: "options", dataType: "object", description: "Options: profile", formInputType: "json", required: false },
510
+ ],
511
+ returnType: "any",
512
+ returnDescription: "Function return value",
513
+ example: 'supabase.rpc "get_total_users" {"status": "active"}',
514
+ },
515
+ // ── Auth ────────────────────────────────────────────────────────────────
516
+ signUp: {
517
+ description: "Sign up a new user with email and password",
518
+ parameters: [
519
+ { name: "email", dataType: "string", description: "User email address", formInputType: "text", required: true },
520
+ { name: "password", dataType: "string", description: "User password", formInputType: "text", required: true },
521
+ { name: "options", dataType: "object", description: "Options: data (user metadata), profile", formInputType: "json", required: false },
522
+ ],
523
+ returnType: "object",
524
+ returnDescription: "Sign up response with user and session",
525
+ example: 'supabase.signUp "user@example.com" "securePassword123"',
526
+ },
527
+ signIn: {
528
+ description: "Sign in a user with email and password",
529
+ parameters: [
530
+ { name: "email", dataType: "string", description: "User email address", formInputType: "text", required: true },
531
+ { name: "password", dataType: "string", description: "User password", formInputType: "text", required: true },
532
+ { name: "options", dataType: "object", description: "Options: profile", formInputType: "json", required: false },
533
+ ],
534
+ returnType: "object",
535
+ returnDescription: "Auth token response with access_token, refresh_token, user",
536
+ example: 'supabase.signIn "user@example.com" "securePassword123"',
537
+ },
538
+ signInWithOtp: {
539
+ description: "Send a magic link to the user's email for passwordless sign in",
540
+ parameters: [
541
+ { name: "email", dataType: "string", description: "User email address", formInputType: "text", required: true },
542
+ { name: "options", dataType: "object", description: "Options: profile", formInputType: "json", required: false },
543
+ ],
544
+ returnType: "object",
545
+ returnDescription: "OTP send confirmation",
546
+ example: 'supabase.signInWithOtp "user@example.com"',
547
+ },
548
+ signOut: {
549
+ description: "Sign out a user by invalidating their access token",
550
+ parameters: [
551
+ { name: "accessToken", dataType: "string", description: "User's access token", formInputType: "text", required: true },
552
+ { name: "options", dataType: "object", description: "Options: profile", formInputType: "json", required: false },
553
+ ],
554
+ returnType: "object",
555
+ returnDescription: "Sign out confirmation",
556
+ example: 'supabase.signOut "eyJhbGc..."',
557
+ },
558
+ getUser: {
559
+ description: "Get the user object from a JWT access token",
560
+ parameters: [
561
+ { name: "accessToken", dataType: "string", description: "User's access token", formInputType: "text", required: true },
562
+ { name: "options", dataType: "object", description: "Options: profile", formInputType: "json", required: false },
563
+ ],
564
+ returnType: "object",
565
+ returnDescription: "User object with id, email, metadata, etc.",
566
+ example: 'supabase.getUser "eyJhbGc..."',
567
+ },
568
+ updateUser: {
569
+ description: "Update user attributes (email, password, metadata)",
570
+ parameters: [
571
+ { name: "accessToken", dataType: "string", description: "User's access token", formInputType: "text", required: true },
572
+ { name: "attributes", dataType: "object", description: "Attributes to update: email, password, data (metadata)", formInputType: "json", required: true },
573
+ { name: "options", dataType: "object", description: "Options: profile", formInputType: "json", required: false },
574
+ ],
575
+ returnType: "object",
576
+ returnDescription: "Updated user object",
577
+ example: 'supabase.updateUser "eyJhbGc..." {"data": {"name": "New Name"}}',
578
+ },
579
+ listUsers: {
580
+ description: "Admin: List all users (requires service role key)",
581
+ parameters: [
582
+ { name: "options", dataType: "object", description: "Options: page, perPage, profile", formInputType: "json", required: false },
583
+ ],
584
+ returnType: "object",
585
+ returnDescription: "Paginated list of users",
586
+ example: 'supabase.listUsers {"page": 1, "perPage": 50}',
587
+ },
588
+ deleteUser: {
589
+ description: "Admin: Delete a user by ID (requires service role key)",
590
+ parameters: [
591
+ { name: "userId", dataType: "string", description: "UUID of the user to delete", formInputType: "text", required: true },
592
+ { name: "options", dataType: "object", description: "Options: profile", formInputType: "json", required: false },
593
+ ],
594
+ returnType: "object",
595
+ returnDescription: "Deletion confirmation",
596
+ example: 'supabase.deleteUser "uuid-of-user"',
597
+ },
598
+ inviteUser: {
599
+ description: "Admin: Invite a user by email (requires service role key)",
600
+ parameters: [
601
+ { name: "email", dataType: "string", description: "Email address to invite", formInputType: "text", required: true },
602
+ { name: "options", dataType: "object", description: "Options: profile", formInputType: "json", required: false },
603
+ ],
604
+ returnType: "object",
605
+ returnDescription: "Invite confirmation",
606
+ example: 'supabase.inviteUser "newuser@example.com"',
607
+ },
608
+ // ── Storage ─────────────────────────────────────────────────────────────
609
+ listBuckets: {
610
+ description: "List all storage buckets",
611
+ parameters: [
612
+ { name: "options", dataType: "object", description: "Options: profile", formInputType: "json", required: false },
613
+ ],
614
+ returnType: "array",
615
+ returnDescription: "Array of bucket objects",
616
+ example: 'supabase.listBuckets',
617
+ },
618
+ createBucket: {
619
+ description: "Create a new storage bucket",
620
+ parameters: [
621
+ { name: "name", dataType: "string", description: "Bucket name", formInputType: "text", required: true },
622
+ { name: "options", dataType: "object", description: "Options: public, fileSizeLimit, allowedMimeTypes, profile", formInputType: "json", required: false },
623
+ ],
624
+ returnType: "object",
625
+ returnDescription: "Created bucket info",
626
+ example: 'supabase.createBucket "avatars" {"public": true}',
627
+ },
628
+ deleteBucket: {
629
+ description: "Delete a storage bucket (must be empty first)",
630
+ parameters: [
631
+ { name: "bucketId", dataType: "string", description: "Bucket ID/name", formInputType: "text", required: true },
632
+ { name: "options", dataType: "object", description: "Options: profile", formInputType: "json", required: false },
633
+ ],
634
+ returnType: "object",
635
+ returnDescription: "Deletion confirmation",
636
+ example: 'supabase.deleteBucket "avatars"',
637
+ },
638
+ emptyBucket: {
639
+ description: "Remove all files from a storage bucket",
640
+ parameters: [
641
+ { name: "bucketId", dataType: "string", description: "Bucket ID/name", formInputType: "text", required: true },
642
+ { name: "options", dataType: "object", description: "Options: profile", formInputType: "json", required: false },
643
+ ],
644
+ returnType: "object",
645
+ returnDescription: "Empty confirmation",
646
+ example: 'supabase.emptyBucket "avatars"',
647
+ },
648
+ listFiles: {
649
+ description: "List files in a storage bucket/folder",
650
+ parameters: [
651
+ { name: "bucketId", dataType: "string", description: "Bucket ID/name", formInputType: "text", required: true },
652
+ { name: "path", dataType: "string", description: "Folder path within bucket (default root)", formInputType: "text", required: false },
653
+ { name: "options", dataType: "object", description: "Options: limit, offset, sortBy, search, profile", formInputType: "json", required: false },
654
+ ],
655
+ returnType: "array",
656
+ returnDescription: "Array of file/folder objects",
657
+ example: 'supabase.listFiles "avatars" "users/"',
658
+ },
659
+ uploadFile: {
660
+ description: "Upload a file to a storage bucket",
661
+ parameters: [
662
+ { name: "bucketId", dataType: "string", description: "Bucket ID/name", formInputType: "text", required: true },
663
+ { name: "path", dataType: "string", description: "File path within bucket", formInputType: "text", required: true },
664
+ { name: "content", dataType: "string", description: "File content (string or Buffer)", formInputType: "textarea", required: true },
665
+ { name: "options", dataType: "object", description: "Options: contentType, upsert, profile", formInputType: "json", required: false },
666
+ ],
667
+ returnType: "object",
668
+ returnDescription: "Upload result with key",
669
+ example: 'supabase.uploadFile "avatars" "user1.png" $fileContent {"contentType": "image/png"}',
670
+ },
671
+ downloadFile: {
672
+ description: "Download a file from a storage bucket",
673
+ parameters: [
674
+ { name: "bucketId", dataType: "string", description: "Bucket ID/name", formInputType: "text", required: true },
675
+ { name: "path", dataType: "string", description: "File path within bucket", formInputType: "text", required: true },
676
+ { name: "options", dataType: "object", description: "Options: profile", formInputType: "json", required: false },
677
+ ],
678
+ returnType: "string",
679
+ returnDescription: "File content as string",
680
+ example: 'supabase.downloadFile "documents" "report.txt"',
681
+ },
682
+ deleteFile: {
683
+ description: "Delete one or more files from a storage bucket",
684
+ parameters: [
685
+ { name: "bucketId", dataType: "string", description: "Bucket ID/name", formInputType: "text", required: true },
686
+ { name: "paths", dataType: "array", description: "Array of file paths to delete", formInputType: "json", required: true },
687
+ { name: "options", dataType: "object", description: "Options: profile", formInputType: "json", required: false },
688
+ ],
689
+ returnType: "object",
690
+ returnDescription: "Deletion result",
691
+ example: 'supabase.deleteFile "avatars" ["user1.png", "user2.png"]',
692
+ },
693
+ getPublicUrl: {
694
+ description: "Get the public URL for a file in a public bucket",
695
+ parameters: [
696
+ { name: "bucketId", dataType: "string", description: "Bucket ID/name", formInputType: "text", required: true },
697
+ { name: "path", dataType: "string", description: "File path within bucket", formInputType: "text", required: true },
698
+ { name: "options", dataType: "object", description: "Options: profile", formInputType: "json", required: false },
699
+ ],
700
+ returnType: "object",
701
+ returnDescription: "{ publicUrl }",
702
+ example: 'supabase.getPublicUrl "avatars" "user1.png"',
703
+ },
704
+ createSignedUrl: {
705
+ description: "Create a signed URL for temporary access to a private file",
706
+ parameters: [
707
+ { name: "bucketId", dataType: "string", description: "Bucket ID/name", formInputType: "text", required: true },
708
+ { name: "path", dataType: "string", description: "File path within bucket", formInputType: "text", required: true },
709
+ { name: "expiresIn", dataType: "number", description: "Expiry time in seconds", formInputType: "number", required: true },
710
+ { name: "options", dataType: "object", description: "Options: profile", formInputType: "json", required: false },
711
+ ],
712
+ returnType: "object",
713
+ returnDescription: "{ signedUrl, expiresIn }",
714
+ example: 'supabase.createSignedUrl "documents" "report.pdf" 3600',
715
+ },
716
+ };
717
+ // ── module metadata ─────────────────────────────────────────────────────────
718
+ export const SupabaseModuleMetadata = {
719
+ description: "Supabase REST API client for PostgREST (database), Auth, and Storage operations.",
720
+ methods: Object.keys(SupabaseFunctions),
721
+ category: "cloud",
722
+ };
723
+ //# sourceMappingURL=supabase.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"supabase.js","sourceRoot":"","sources":["../src/supabase.ts"],"names":[],"mappings":"AASA,MAAM,WAAW,GAAG,IAAI,GAAG,EAA+B,CAAC;AAE3D,SAAS,QAAQ,CAAC,OAAgB;IAChC,MAAM,GAAG,GAAG,OAAO,IAAI,aAAa,CAAC;IACrC,MAAM,CAAC,GAAG,WAAW,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;IAC/B,IAAI,CAAC,CAAC;QAAE,MAAM,IAAI,KAAK,CAAC,uDAAuD,OAAO,CAAC,CAAC,CAAC,iBAAiB,OAAO,GAAG,CAAC,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC;IAC9H,OAAO,CAAC,CAAC;AACX,CAAC;AAED,SAAS,WAAW,CAAC,MAAc,EAAE,WAAoB;IACvD,OAAO;QACL,MAAM,EAAE,MAAM;QACd,aAAa,EAAE,UAAU,WAAW,IAAI,MAAM,EAAE;QAChD,cAAc,EAAE,kBAAkB;KACnC,CAAC;AACJ,CAAC;AAED,KAAK,UAAU,SAAS,CAAC,GAAW,EAAE,IAAiB;IACrD,MAAM,GAAG,GAAG,MAAM,KAAK,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;IACnC,MAAM,IAAI,GAAG,MAAM,GAAG,CAAC,IAAI,EAAE,CAAC;IAC9B,IAAI,IAAa,CAAC;IAClB,IAAI,CAAC;QACH,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;IAC1B,CAAC;IAAC,MAAM,CAAC;QACP,IAAI,GAAG,IAAI,CAAC;IACd,CAAC;IACD,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE,CAAC;QACZ,MAAM,GAAG,GAAG,OAAO,IAAI,KAAK,QAAQ,IAAI,IAAI,KAAK,IAAI,IAAI,SAAS,IAAI,IAAI;YACxE,CAAC,CAAE,IAAgC,CAAC,OAAO;YAC3C,CAAC,CAAC,OAAO,IAAI,KAAK,QAAQ,IAAI,IAAI,KAAK,IAAI,IAAI,mBAAmB,IAAI,IAAI;gBACxE,CAAC,CAAE,IAAgC,CAAC,iBAAiB;gBACrD,CAAC,CAAC,IAAI,CAAC;QACX,MAAM,IAAI,KAAK,CAAC,YAAY,GAAG,CAAC,MAAM,KAAK,GAAG,EAAE,CAAC,CAAC;IACpD,CAAC;IACD,OAAO,IAAI,CAAC;AACd,CAAC;AAED,+EAA+E;AAE/E,SAAS,mBAAmB,CAAC,OAAe,EAAE,KAAa,EAAE,OAAiC;IAC5F,IAAI,GAAG,GAAG,GAAG,OAAO,YAAY,kBAAkB,CAAC,KAAK,CAAC,EAAE,CAAC;IAC5D,IAAI,CAAC,OAAO;QAAE,OAAO,GAAG,CAAC;IACzB,MAAM,MAAM,GAAa,EAAE,CAAC;IAE5B,UAAU;IACV,IAAI,OAAO,CAAC,OAAO;QAAE,MAAM,CAAC,IAAI,CAAC,UAAU,kBAAkB,CAAC,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,EAAE,CAAC,CAAC;IAE1F,0DAA0D;IAC1D,MAAM,SAAS,GAAG,CAAC,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,IAAI,EAAE,IAAI,CAAU,CAAC;IAChG,KAAK,MAAM,EAAE,IAAI,SAAS,EAAE,CAAC;QAC3B,IAAI,OAAO,CAAC,EAAE,CAAC,IAAI,OAAO,OAAO,CAAC,EAAE,CAAC,KAAK,QAAQ,EAAE,CAAC;YACnD,MAAM,OAAO,GAAG,OAAO,CAAC,EAAE,CAA4B,CAAC;YACvD,KAAK,MAAM,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE,CAAC;gBACjD,IAAI,EAAE,KAAK,IAAI,EAAE,CAAC;oBAChB,MAAM,GAAG,GAAG,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;oBAC7C,MAAM,CAAC,IAAI,CAAC,GAAG,kBAAkB,CAAC,GAAG,CAAC,QAAQ,GAAG,CAAC,GAAG,CAAC,CAAC,CAAM,EAAE,EAAE,CAAC,kBAAkB,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;gBACjH,CAAC;qBAAM,CAAC;oBACN,MAAM,CAAC,IAAI,CAAC,GAAG,kBAAkB,CAAC,GAAG,CAAC,IAAI,EAAE,IAAI,kBAAkB,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC;gBACrF,CAAC;YACH,CAAC;QACH,CAAC;IACH,CAAC;IAED,QAAQ;IACR,IAAI,OAAO,CAAC,KAAK,EAAE,CAAC;QAClB,IAAI,OAAO,OAAO,CAAC,KAAK,KAAK,QAAQ,EAAE,CAAC;YACtC,MAAM,CAAC,IAAI,CAAC,SAAS,kBAAkB,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;QAC5D,CAAC;aAAM,IAAI,OAAO,OAAO,CAAC,KAAK,KAAK,QAAQ,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC;YAC9E,MAAM,CAAC,GAAG,OAAO,CAAC,KAAgC,CAAC;YACnD,MAAM,GAAG,GAAG,CAAC,CAAC,MAAM,IAAI,CAAC,CAAC,GAAG,CAAC;YAC9B,MAAM,GAAG,GAAG,CAAC,CAAC,SAAS,KAAK,KAAK,IAAI,CAAC,CAAC,IAAI,KAAK,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC;YACtE,MAAM,KAAK,GAAG,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,EAAE,CAAC;YAChD,MAAM,CAAC,IAAI,CAAC,SAAS,kBAAkB,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,GAAG,GAAG,KAAK,EAAE,CAAC,CAAC;QACzE,CAAC;IACH,CAAC;IAED,iBAAiB;IACjB,IAAI,OAAO,CAAC,KAAK,KAAK,SAAS;QAAE,MAAM,CAAC,IAAI,CAAC,SAAS,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;IAC/E,IAAI,OAAO,CAAC,MAAM,KAAK,SAAS;QAAE,MAAM,CAAC,IAAI,CAAC,UAAU,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;IAElF,IAAI,MAAM,CAAC,MAAM,GAAG,CAAC;QAAE,GAAG,IAAI,IAAI,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC;IAErD,OAAO,GAAG,CAAC;AACb,CAAC;AAED,SAAS,gBAAgB,CAAC,KAA8B;IACtD,MAAM,KAAK,GAAa,EAAE,CAAC;IAC3B,KAAK,MAAM,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC;QAC/C,KAAK,CAAC,IAAI,CAAC,GAAG,kBAAkB,CAAC,GAAG,CAAC,OAAO,kBAAkB,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC;IACjF,CAAC;IACD,OAAO,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AACzB,CAAC;AAED,+EAA+E;AAE/E,MAAM,CAAC,MAAM,iBAAiB,GAAmC;IAE/D,2EAA2E;IAC3E,cAAc,EAAE,CAAC,IAAa,EAAE,EAAE;QAChC,MAAM,UAAU,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;QACnC,MAAM,MAAM,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;QAC/B,MAAM,OAAO,GAAG,IAAI,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,aAAa,CAAC;QAClE,MAAM,GAAG,GAAG,UAAU,CAAC,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC;QAC3C,WAAW,CAAC,GAAG,CAAC,OAAO,EAAE,EAAE,UAAU,EAAE,GAAG,EAAE,MAAM,EAAE,CAAC,CAAC;QACtD,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC;IACpC,CAAC;IAED,aAAa,EAAE,CAAC,IAAa,EAAE,EAAE;QAC/B,MAAM,UAAU,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;QACnC,MAAM,UAAU,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;QACnC,MAAM,OAAO,GAAG,IAAI,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,aAAa,CAAC;QAClE,MAAM,GAAG,GAAG,UAAU,CAAC,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC;QAC3C,MAAM,QAAQ,GAAG,WAAW,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;QAC1C,IAAI,QAAQ,EAAE,CAAC;YACb,QAAQ,CAAC,UAAU,GAAG,UAAU,CAAC;YACjC,QAAQ,CAAC,UAAU,GAAG,GAAG,CAAC;QAC5B,CAAC;aAAM,CAAC;YACN,WAAW,CAAC,GAAG,CAAC,OAAO,EAAE,EAAE,UAAU,EAAE,GAAG,EAAE,MAAM,EAAE,UAAU,EAAE,UAAU,EAAE,CAAC,CAAC;QAChF,CAAC;QACD,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC;IACpC,CAAC;IAED,0EAA0E;IAE1E,MAAM,EAAE,KAAK,EAAE,IAAa,EAAE,EAAE;QAC9B,MAAM,KAAK,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;QAC9B,MAAM,OAAO,GAAG,IAAI,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;QAC9D,MAAM,OAAO,GAAI,IAAI,CAAC,CAAC,CAA6B,IAAI,EAAE,CAAC;QAC3D,MAAM,KAAK,GAAG,QAAQ,CAAC,OAAO,CAAC,OAAiB,CAAC,CAAC;QAElD,MAAM,IAAI,GAAG,EAAE,GAAG,OAAO,EAAE,CAAC;QAC5B,IAAI,OAAO;YAAE,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC;QAEpC,MAAM,GAAG,GAAG,mBAAmB,CAAC,KAAK,CAAC,UAAU,EAAE,KAAK,EAAE,IAAI,CAAC,CAAC;QAC/D,MAAM,OAAO,GAA2B,WAAW,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;QAElE,eAAe;QACf,IAAI,OAAO,CAAC,KAAK,IAAI,OAAO,OAAO,CAAC,KAAK,KAAK,QAAQ,EAAE,CAAC;YACvD,OAAO,CAAC,OAAO,CAAC,GAAG,OAAO,CAAC,KAAK,CAAC;YACjC,OAAO,CAAC,YAAY,CAAC,GAAG,OAAO,CAAC;QAClC,CAAC;QAED,OAAO,SAAS,CAAC,GAAG,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC;IACpD,CAAC;IAED,MAAM,EAAE,KAAK,EAAE,IAAa,EAAE,EAAE;QAC9B,MAAM,KAAK,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;QAC9B,MAAM,IAAI,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC;QACrB,MAAM,OAAO,GAAI,IAAI,CAAC,CAAC,CAA6B,IAAI,EAAE,CAAC;QAC3D,MAAM,KAAK,GAAG,QAAQ,CAAC,OAAO,CAAC,OAAiB,CAAC,CAAC;QAElD,IAAI,GAAG,GAAG,GAAG,KAAK,CAAC,UAAU,YAAY,kBAAkB,CAAC,KAAK,CAAC,EAAE,CAAC;QACrE,IAAI,OAAO,CAAC,OAAO;YAAE,GAAG,IAAI,YAAY,kBAAkB,CAAC,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,EAAE,CAAC;QAEtF,MAAM,OAAO,GAA2B,WAAW,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;QAClE,IAAI,OAAO,CAAC,SAAS,KAAK,KAAK;YAAE,OAAO,CAAC,QAAQ,CAAC,GAAG,uBAAuB,CAAC;QAC7E,IAAI,OAAO,CAAC,UAAU,EAAE,CAAC;YACvB,OAAO,CAAC,QAAQ,CAAC,GAAG,mDAAmD,CAAC;YACxE,GAAG,IAAI,GAAG,GAAG,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,eAAe,kBAAkB,CAAC,MAAM,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC,EAAE,CAAC;QACzG,CAAC;QAED,OAAO,SAAS,CAAC,GAAG,EAAE,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IACjF,CAAC;IAED,MAAM,EAAE,KAAK,EAAE,IAAa,EAAE,EAAE;QAC9B,MAAM,KAAK,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;QAC9B,MAAM,IAAI,GAAG,IAAI,CAAC,CAAC,CAA4B,CAAC;QAChD,MAAM,KAAK,GAAI,IAAI,CAAC,CAAC,CAA6B,IAAI,EAAE,CAAC;QACzD,MAAM,OAAO,GAAI,IAAI,CAAC,CAAC,CAA6B,IAAI,EAAE,CAAC;QAC3D,MAAM,KAAK,GAAG,QAAQ,CAAC,OAAO,CAAC,OAAiB,CAAC,CAAC;QAElD,MAAM,QAAQ,GAAG,gBAAgB,CAAC,KAAK,CAAC,CAAC;QACzC,IAAI,GAAG,GAAG,GAAG,KAAK,CAAC,UAAU,YAAY,kBAAkB,CAAC,KAAK,CAAC,IAAI,QAAQ,EAAE,CAAC;QAEjF,MAAM,OAAO,GAA2B,WAAW,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;QAClE,OAAO,CAAC,QAAQ,CAAC,GAAG,uBAAuB,CAAC;QAE5C,OAAO,SAAS,CAAC,GAAG,EAAE,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IAClF,CAAC;IAED,MAAM,EAAE,KAAK,EAAE,IAAa,EAAE,EAAE;QAC9B,MAAM,KAAK,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;QAC9B,MAAM,IAAI,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC;QACrB,MAAM,OAAO,GAAI,IAAI,CAAC,CAAC,CAA6B,IAAI,EAAE,CAAC;QAC3D,MAAM,KAAK,GAAG,QAAQ,CAAC,OAAO,CAAC,OAAiB,CAAC,CAAC;QAElD,IAAI,GAAG,GAAG,GAAG,KAAK,CAAC,UAAU,YAAY,kBAAkB,CAAC,KAAK,CAAC,EAAE,CAAC;QACrE,MAAM,OAAO,GAA2B,WAAW,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;QAClE,OAAO,CAAC,QAAQ,CAAC,GAAG,mDAAmD,CAAC;QACxE,IAAI,OAAO,CAAC,UAAU,EAAE,CAAC;YACvB,GAAG,IAAI,gBAAgB,kBAAkB,CAAC,MAAM,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC,EAAE,CAAC;QAC1E,CAAC;QAED,OAAO,SAAS,CAAC,GAAG,EAAE,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IACjF,CAAC;IAED,MAAM,EAAE,KAAK,EAAE,IAAa,EAAE,EAAE;QAC9B,MAAM,KAAK,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;QAC9B,MAAM,KAAK,GAAI,IAAI,CAAC,CAAC,CAA6B,IAAI,EAAE,CAAC;QACzD,MAAM,OAAO,GAAI,IAAI,CAAC,CAAC,CAA6B,IAAI,EAAE,CAAC;QAC3D,MAAM,KAAK,GAAG,QAAQ,CAAC,OAAO,CAAC,OAAiB,CAAC,CAAC;QAElD,MAAM,QAAQ,GAAG,gBAAgB,CAAC,KAAK,CAAC,CAAC;QACzC,IAAI,GAAG,GAAG,GAAG,KAAK,CAAC,UAAU,YAAY,kBAAkB,CAAC,KAAK,CAAC,IAAI,QAAQ,EAAE,CAAC;QAEjF,MAAM,OAAO,GAA2B,WAAW,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;QAClE,OAAO,CAAC,QAAQ,CAAC,GAAG,uBAAuB,CAAC;QAE5C,OAAO,SAAS,CAAC,GAAG,EAAE,EAAE,MAAM,EAAE,QAAQ,EAAE,OAAO,EAAE,CAAC,CAAC;IACvD,CAAC;IAED,GAAG,EAAE,KAAK,EAAE,IAAa,EAAE,EAAE;QAC3B,MAAM,YAAY,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;QACrC,MAAM,MAAM,GAAG,IAAI,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;QAC7B,MAAM,OAAO,GAAI,IAAI,CAAC,CAAC,CAA6B,IAAI,EAAE,CAAC;QAC3D,MAAM,KAAK,GAAG,QAAQ,CAAC,OAAO,CAAC,OAAiB,CAAC,CAAC;QAElD,MAAM,GAAG,GAAG,GAAG,KAAK,CAAC,UAAU,gBAAgB,kBAAkB,CAAC,YAAY,CAAC,EAAE,CAAC;QAClF,MAAM,OAAO,GAA2B,WAAW,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;QAElE,OAAO,SAAS,CAAC,GAAG,EAAE,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;IACnF,CAAC;IAED,2EAA2E;IAE3E,MAAM,EAAE,KAAK,EAAE,IAAa,EAAE,EAAE;QAC9B,MAAM,KAAK,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;QAC9B,MAAM,QAAQ,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;QACjC,MAAM,OAAO,GAAI,IAAI,CAAC,CAAC,CAA6B,IAAI,EAAE,CAAC;QAC3D,MAAM,KAAK,GAAG,QAAQ,CAAC,OAAO,CAAC,OAAiB,CAAC,CAAC;QAElD,MAAM,GAAG,GAAG,GAAG,KAAK,CAAC,UAAU,iBAAiB,CAAC;QACjD,MAAM,OAAO,GAA2B,WAAW,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;QAElE,MAAM,OAAO,GAA4B,EAAE,KAAK,EAAE,QAAQ,EAAE,CAAC;QAC7D,IAAI,OAAO,CAAC,IAAI;YAAE,OAAO,CAAC,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC;QAC9C,IAAI,OAAO,CAAC,eAAe;YAAE,OAAO,CAAC,oBAAoB,GAAG,EAAE,aAAa,EAAE,SAAS,EAAE,CAAC;QAEzF,OAAO,SAAS,CAAC,GAAG,EAAE,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;IACpF,CAAC;IAED,MAAM,EAAE,KAAK,EAAE,IAAa,EAAE,EAAE;QAC9B,MAAM,KAAK,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;QAC9B,MAAM,QAAQ,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;QACjC,MAAM,OAAO,GAAI,IAAI,CAAC,CAAC,CAA6B,IAAI,EAAE,CAAC;QAC3D,MAAM,KAAK,GAAG,QAAQ,CAAC,OAAO,CAAC,OAAiB,CAAC,CAAC;QAElD,MAAM,GAAG,GAAG,GAAG,KAAK,CAAC,UAAU,oCAAoC,CAAC;QACpE,MAAM,OAAO,GAA2B,WAAW,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;QAElE,OAAO,SAAS,CAAC,GAAG,EAAE,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,EAAE,KAAK,EAAE,QAAQ,EAAE,CAAC,EAAE,CAAC,CAAC;IAChG,CAAC;IAED,aAAa,EAAE,KAAK,EAAE,IAAa,EAAE,EAAE;QACrC,MAAM,KAAK,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;QAC9B,MAAM,OAAO,GAAI,IAAI,CAAC,CAAC,CAA6B,IAAI,EAAE,CAAC;QAC3D,MAAM,KAAK,GAAG,QAAQ,CAAC,OAAO,CAAC,OAAiB,CAAC,CAAC;QAElD,MAAM,GAAG,GAAG,GAAG,KAAK,CAAC,UAAU,cAAc,CAAC;QAC9C,MAAM,OAAO,GAA2B,WAAW,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;QAElE,MAAM,OAAO,GAA4B,EAAE,KAAK,EAAE,CAAC;QACnD,IAAI,OAAO,CAAC,eAAe;YAAE,OAAO,CAAC,oBAAoB,GAAG,EAAE,aAAa,EAAE,SAAS,EAAE,CAAC;QAEzF,OAAO,SAAS,CAAC,GAAG,EAAE,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;IACpF,CAAC;IAED,OAAO,EAAE,KAAK,EAAE,IAAa,EAAE,EAAE;QAC/B,MAAM,WAAW,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;QACpC,MAAM,OAAO,GAAI,IAAI,CAAC,CAAC,CAA6B,IAAI,EAAE,CAAC;QAC3D,MAAM,KAAK,GAAG,QAAQ,CAAC,OAAO,CAAC,OAAiB,CAAC,CAAC;QAElD,MAAM,GAAG,GAAG,GAAG,KAAK,CAAC,UAAU,iBAAiB,CAAC;QACjD,MAAM,OAAO,GAA2B,WAAW,CAAC,KAAK,CAAC,MAAM,EAAE,WAAW,CAAC,CAAC;QAE/E,OAAO,SAAS,CAAC,GAAG,EAAE,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,CAAC,CAAC;IACrD,CAAC;IAED,OAAO,EAAE,KAAK,EAAE,IAAa,EAAE,EAAE;QAC/B,MAAM,WAAW,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;QACpC,MAAM,OAAO,GAAI,IAAI,CAAC,CAAC,CAA6B,IAAI,EAAE,CAAC;QAC3D,MAAM,KAAK,GAAG,QAAQ,CAAC,OAAO,CAAC,OAAiB,CAAC,CAAC;QAElD,MAAM,GAAG,GAAG,GAAG,KAAK,CAAC,UAAU,eAAe,CAAC;QAC/C,MAAM,OAAO,GAA2B,WAAW,CAAC,KAAK,CAAC,MAAM,EAAE,WAAW,CAAC,CAAC;QAE/E,OAAO,SAAS,CAAC,GAAG,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC;IACpD,CAAC;IAED,UAAU,EAAE,KAAK,EAAE,IAAa,EAAE,EAAE;QAClC,MAAM,WAAW,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;QACpC,MAAM,UAAU,GAAG,IAAI,CAAC,CAAC,CAA4B,CAAC;QACtD,MAAM,OAAO,GAAI,IAAI,CAAC,CAAC,CAA6B,IAAI,EAAE,CAAC;QAC3D,MAAM,KAAK,GAAG,QAAQ,CAAC,OAAO,CAAC,OAAiB,CAAC,CAAC;QAElD,MAAM,GAAG,GAAG,GAAG,KAAK,CAAC,UAAU,eAAe,CAAC;QAC/C,MAAM,OAAO,GAA2B,WAAW,CAAC,KAAK,CAAC,MAAM,EAAE,WAAW,CAAC,CAAC;QAE/E,OAAO,SAAS,CAAC,GAAG,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,EAAE,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,UAAU,CAAC,EAAE,CAAC,CAAC;IACtF,CAAC;IAED,SAAS,EAAE,KAAK,EAAE,IAAa,EAAE,EAAE;QACjC,MAAM,OAAO,GAAI,IAAI,CAAC,CAAC,CAA6B,IAAI,EAAE,CAAC;QAC3D,MAAM,KAAK,GAAG,QAAQ,CAAC,OAAO,CAAC,OAAiB,CAAC,CAAC;QAClD,MAAM,UAAU,GAAG,KAAK,CAAC,UAAU,IAAI,KAAK,CAAC,MAAM,CAAC;QAEpD,MAAM,MAAM,GAAa,EAAE,CAAC;QAC5B,IAAI,OAAO,CAAC,IAAI,KAAK,SAAS;YAAE,MAAM,CAAC,IAAI,CAAC,QAAQ,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QAC5E,IAAI,OAAO,CAAC,OAAO,KAAK,SAAS;YAAE,MAAM,CAAC,IAAI,CAAC,YAAY,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;QACtF,MAAM,EAAE,GAAG,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QAE3D,MAAM,GAAG,GAAG,GAAG,KAAK,CAAC,UAAU,uBAAuB,EAAE,EAAE,CAAC;QAC3D,MAAM,OAAO,GAA2B,WAAW,CAAC,UAAU,CAAC,CAAC;QAEhE,OAAO,SAAS,CAAC,GAAG,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC;IACpD,CAAC;IAED,UAAU,EAAE,KAAK,EAAE,IAAa,EAAE,EAAE;QAClC,MAAM,MAAM,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;QAC/B,MAAM,OAAO,GAAI,IAAI,CAAC,CAAC,CAA6B,IAAI,EAAE,CAAC;QAC3D,MAAM,KAAK,GAAG,QAAQ,CAAC,OAAO,CAAC,OAAiB,CAAC,CAAC;QAClD,MAAM,UAAU,GAAG,KAAK,CAAC,UAAU,IAAI,KAAK,CAAC,MAAM,CAAC;QAEpD,MAAM,GAAG,GAAG,GAAG,KAAK,CAAC,UAAU,wBAAwB,kBAAkB,CAAC,MAAM,CAAC,EAAE,CAAC;QACpF,MAAM,OAAO,GAA2B,WAAW,CAAC,UAAU,CAAC,CAAC;QAEhE,OAAO,SAAS,CAAC,GAAG,EAAE,EAAE,MAAM,EAAE,QAAQ,EAAE,OAAO,EAAE,CAAC,CAAC;IACvD,CAAC;IAED,UAAU,EAAE,KAAK,EAAE,IAAa,EAAE,EAAE;QAClC,MAAM,KAAK,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;QAC9B,MAAM,OAAO,GAAI,IAAI,CAAC,CAAC,CAA6B,IAAI,EAAE,CAAC;QAC3D,MAAM,KAAK,GAAG,QAAQ,CAAC,OAAO,CAAC,OAAiB,CAAC,CAAC;QAClD,MAAM,UAAU,GAAG,KAAK,CAAC,UAAU,IAAI,KAAK,CAAC,MAAM,CAAC;QAEpD,MAAM,GAAG,GAAG,GAAG,KAAK,CAAC,UAAU,iBAAiB,CAAC;QACjD,MAAM,OAAO,GAA2B,WAAW,CAAC,UAAU,CAAC,CAAC;QAEhE,OAAO,SAAS,CAAC,GAAG,EAAE,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,CAAC,CAAC;IACtF,CAAC;IAED,2EAA2E;IAE3E,WAAW,EAAE,KAAK,EAAE,IAAa,EAAE,EAAE;QACnC,MAAM,OAAO,GAAI,IAAI,CAAC,CAAC,CAA6B,IAAI,EAAE,CAAC;QAC3D,MAAM,KAAK,GAAG,QAAQ,CAAC,OAAO,CAAC,OAAiB,CAAC,CAAC;QAElD,MAAM,GAAG,GAAG,GAAG,KAAK,CAAC,UAAU,oBAAoB,CAAC;QACpD,MAAM,OAAO,GAA2B,WAAW,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;QAElE,OAAO,SAAS,CAAC,GAAG,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC;IACpD,CAAC;IAED,YAAY,EAAE,KAAK,EAAE,IAAa,EAAE,EAAE;QACpC,MAAM,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;QAC7B,MAAM,OAAO,GAAI,IAAI,CAAC,CAAC,CAA6B,IAAI,EAAE,CAAC;QAC3D,MAAM,KAAK,GAAG,QAAQ,CAAC,OAAO,CAAC,OAAiB,CAAC,CAAC;QAElD,MAAM,GAAG,GAAG,GAAG,KAAK,CAAC,UAAU,oBAAoB,CAAC;QACpD,MAAM,OAAO,GAA2B,WAAW,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;QAElE,MAAM,OAAO,GAA4B,EAAE,IAAI,EAAE,EAAE,EAAE,IAAI,EAAE,CAAC;QAC5D,IAAI,OAAO,CAAC,MAAM,KAAK,SAAS;YAAE,OAAO,CAAC,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;QAC3E,IAAI,OAAO,CAAC,aAAa,KAAK,SAAS;YAAE,OAAO,CAAC,eAAe,GAAG,MAAM,CAAC,OAAO,CAAC,aAAa,CAAC,CAAC;QACjG,IAAI,OAAO,CAAC,gBAAgB;YAAE,OAAO,CAAC,kBAAkB,GAAG,OAAO,CAAC,gBAAgB,CAAC;QAEpF,OAAO,SAAS,CAAC,GAAG,EAAE,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;IACpF,CAAC;IAED,YAAY,EAAE,KAAK,EAAE,IAAa,EAAE,EAAE;QACpC,MAAM,QAAQ,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;QACjC,MAAM,OAAO,GAAI,IAAI,CAAC,CAAC,CAA6B,IAAI,EAAE,CAAC;QAC3D,MAAM,KAAK,GAAG,QAAQ,CAAC,OAAO,CAAC,OAAiB,CAAC,CAAC;QAElD,MAAM,GAAG,GAAG,GAAG,KAAK,CAAC,UAAU,sBAAsB,kBAAkB,CAAC,QAAQ,CAAC,EAAE,CAAC;QACpF,MAAM,OAAO,GAA2B,WAAW,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;QAElE,OAAO,SAAS,CAAC,GAAG,EAAE,EAAE,MAAM,EAAE,QAAQ,EAAE,OAAO,EAAE,CAAC,CAAC;IACvD,CAAC;IAED,WAAW,EAAE,KAAK,EAAE,IAAa,EAAE,EAAE;QACnC,MAAM,QAAQ,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;QACjC,MAAM,OAAO,GAAI,IAAI,CAAC,CAAC,CAA6B,IAAI,EAAE,CAAC;QAC3D,MAAM,KAAK,GAAG,QAAQ,CAAC,OAAO,CAAC,OAAiB,CAAC,CAAC;QAElD,MAAM,GAAG,GAAG,GAAG,KAAK,CAAC,UAAU,sBAAsB,kBAAkB,CAAC,QAAQ,CAAC,QAAQ,CAAC;QAC1F,MAAM,OAAO,GAA2B,WAAW,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;QAElE,OAAO,SAAS,CAAC,GAAG,EAAE,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,CAAC,CAAC;IACrD,CAAC;IAED,SAAS,EAAE,KAAK,EAAE,IAAa,EAAE,EAAE;QACjC,MAAM,QAAQ,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;QACjC,MAAM,UAAU,GAAG,IAAI,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;QAC1D,MAAM,OAAO,GAAI,IAAI,CAAC,CAAC,CAA6B,IAAI,EAAE,CAAC;QAC3D,MAAM,KAAK,GAAG,QAAQ,CAAC,OAAO,CAAC,OAAiB,CAAC,CAAC;QAElD,MAAM,GAAG,GAAG,GAAG,KAAK,CAAC,UAAU,2BAA2B,kBAAkB,CAAC,QAAQ,CAAC,EAAE,CAAC;QACzF,MAAM,OAAO,GAA2B,WAAW,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;QAElE,MAAM,OAAO,GAA4B,EAAE,MAAM,EAAE,UAAU,EAAE,CAAC;QAChE,IAAI,OAAO,CAAC,KAAK,KAAK,SAAS;YAAE,OAAO,CAAC,KAAK,GAAG,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;QACvE,IAAI,OAAO,CAAC,MAAM,KAAK,SAAS;YAAE,OAAO,CAAC,MAAM,GAAG,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;QAC1E,IAAI,OAAO,CAAC,MAAM;YAAE,OAAO,CAAC,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;QACpD,IAAI,OAAO,CAAC,MAAM;YAAE,OAAO,CAAC,MAAM,GAAG,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;QAE5D,OAAO,SAAS,CAAC,GAAG,EAAE,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;IACpF,CAAC;IAED,UAAU,EAAE,KAAK,EAAE,IAAa,EAAE,EAAE;QAClC,MAAM,QAAQ,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;QACjC,MAAM,QAAQ,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;QACjC,MAAM,OAAO,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC;QACxB,MAAM,OAAO,GAAI,IAAI,CAAC,CAAC,CAA6B,IAAI,EAAE,CAAC;QAC3D,MAAM,KAAK,GAAG,QAAQ,CAAC,OAAO,CAAC,OAAiB,CAAC,CAAC;QAElD,MAAM,GAAG,GAAG,GAAG,KAAK,CAAC,UAAU,sBAAsB,kBAAkB,CAAC,QAAQ,CAAC,IAAI,QAAQ,EAAE,CAAC;QAChG,MAAM,OAAO,GAA2B;YACtC,MAAM,EAAE,KAAK,CAAC,MAAM;YACpB,aAAa,EAAE,UAAU,KAAK,CAAC,MAAM,EAAE;SACxC,CAAC;QAEF,IAAI,OAAO,CAAC,WAAW,EAAE,CAAC;YACxB,OAAO,CAAC,cAAc,CAAC,GAAG,MAAM,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC;QACxD,CAAC;aAAM,CAAC;YACN,OAAO,CAAC,cAAc,CAAC,GAAG,0BAA0B,CAAC;QACvD,CAAC;QACD,IAAI,OAAO,CAAC,MAAM,EAAE,CAAC;YACnB,OAAO,CAAC,UAAU,CAAC,GAAG,MAAM,CAAC;QAC/B,CAAC;QAED,MAAM,IAAI,GAAG,OAAO,OAAO,KAAK,QAAQ,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC;QAE7E,OAAO,SAAS,CAAC,GAAG,EAAE,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC,CAAC;IAC3D,CAAC;IAED,YAAY,EAAE,KAAK,EAAE,IAAa,EAAE,EAAE;QACpC,MAAM,QAAQ,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;QACjC,MAAM,QAAQ,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;QACjC,MAAM,OAAO,GAAI,IAAI,CAAC,CAAC,CAA6B,IAAI,EAAE,CAAC;QAC3D,MAAM,KAAK,GAAG,QAAQ,CAAC,OAAO,CAAC,OAAiB,CAAC,CAAC;QAElD,MAAM,GAAG,GAAG,GAAG,KAAK,CAAC,UAAU,sBAAsB,kBAAkB,CAAC,QAAQ,CAAC,IAAI,QAAQ,EAAE,CAAC;QAChG,MAAM,OAAO,GAA2B;YACtC,MAAM,EAAE,KAAK,CAAC,MAAM;YACpB,aAAa,EAAE,UAAU,KAAK,CAAC,MAAM,EAAE;SACxC,CAAC;QAEF,MAAM,GAAG,GAAG,MAAM,KAAK,CAAC,GAAG,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC;QACzD,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE,CAAC;YACZ,MAAM,IAAI,GAAG,MAAM,GAAG,CAAC,IAAI,EAAE,CAAC;YAC9B,MAAM,IAAI,KAAK,CAAC,YAAY,GAAG,CAAC,MAAM,KAAK,IAAI,EAAE,CAAC,CAAC;QACrD,CAAC;QACD,OAAO,MAAM,GAAG,CAAC,IAAI,EAAE,CAAC;IAC1B,CAAC;IAED,UAAU,EAAE,KAAK,EAAE,IAAa,EAAE,EAAE;QAClC,MAAM,QAAQ,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;QACjC,MAAM,KAAK,GAAG,IAAI,CAAC,CAAC,CAAa,CAAC;QAClC,MAAM,OAAO,GAAI,IAAI,CAAC,CAAC,CAA6B,IAAI,EAAE,CAAC;QAC3D,MAAM,KAAK,GAAG,QAAQ,CAAC,OAAO,CAAC,OAAiB,CAAC,CAAC;QAElD,MAAM,GAAG,GAAG,GAAG,KAAK,CAAC,UAAU,sBAAsB,kBAAkB,CAAC,QAAQ,CAAC,EAAE,CAAC;QACpF,MAAM,OAAO,GAA2B,WAAW,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;QAElE,OAAO,SAAS,CAAC,GAAG,EAAE,EAAE,MAAM,EAAE,QAAQ,EAAE,OAAO,EAAE,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,EAAE,QAAQ,EAAE,KAAK,EAAE,CAAC,EAAE,CAAC,CAAC;IAClG,CAAC;IAED,YAAY,EAAE,CAAC,IAAa,EAAE,EAAE;QAC9B,MAAM,QAAQ,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;QACjC,MAAM,QAAQ,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;QACjC,MAAM,OAAO,GAAI,IAAI,CAAC,CAAC,CAA6B,IAAI,EAAE,CAAC;QAC3D,MAAM,KAAK,GAAG,QAAQ,CAAC,OAAO,CAAC,OAAiB,CAAC,CAAC;QAElD,MAAM,GAAG,GAAG,GAAG,KAAK,CAAC,UAAU,6BAA6B,kBAAkB,CAAC,QAAQ,CAAC,IAAI,QAAQ,EAAE,CAAC;QACvG,OAAO,EAAE,SAAS,EAAE,GAAG,EAAE,CAAC;IAC5B,CAAC;IAED,eAAe,EAAE,KAAK,EAAE,IAAa,EAAE,EAAE;QACvC,MAAM,QAAQ,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;QACjC,MAAM,QAAQ,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;QACjC,MAAM,SAAS,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;QAClC,MAAM,OAAO,GAAI,IAAI,CAAC,CAAC,CAA6B,IAAI,EAAE,CAAC;QAC3D,MAAM,KAAK,GAAG,QAAQ,CAAC,OAAO,CAAC,OAAiB,CAAC,CAAC;QAElD,MAAM,GAAG,GAAG,GAAG,KAAK,CAAC,UAAU,2BAA2B,kBAAkB,CAAC,QAAQ,CAAC,IAAI,QAAQ,EAAE,CAAC;QACrG,MAAM,OAAO,GAA2B,WAAW,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;QAElE,MAAM,MAAM,GAAG,MAAM,SAAS,CAAC,GAAG,EAAE;YAClC,MAAM,EAAE,MAAM;YACd,OAAO;YACP,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,EAAE,SAAS,EAAE,CAAC;SACpC,CAA4B,CAAC;QAE9B,MAAM,SAAS,GAAG,MAAM,CAAC,SAAS,IAAI,MAAM,CAAC,SAAS,IAAI,MAAM,CAAC,UAAU,CAAC;QAC5E,OAAO;YACL,SAAS,EAAE,SAAS,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC,UAAU,cAAc,SAAS,EAAE,CAAC,CAAC,CAAC,IAAI;YAC1E,SAAS;SACV,CAAC;IACJ,CAAC;CACF,CAAC;AAEF,+EAA+E;AAE/E,MAAM,CAAC,MAAM,wBAAwB,GAAG;IAEtC,2EAA2E;IAC3E,cAAc,EAAE;QACd,WAAW,EAAE,qDAAqD;QAClE,UAAU,EAAE;YACV,EAAE,IAAI,EAAE,YAAY,EAAE,QAAQ,EAAE,QAAQ,EAAE,WAAW,EAAE,qDAAqD,EAAE,aAAa,EAAE,MAAM,EAAE,QAAQ,EAAE,IAAI,EAAE;YACrJ,EAAE,IAAI,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,WAAW,EAAE,mCAAmC,EAAE,aAAa,EAAE,MAAM,EAAE,QAAQ,EAAE,IAAI,EAAE;YAC/H,EAAE,IAAI,EAAE,SAAS,EAAE,QAAQ,EAAE,QAAQ,EAAE,WAAW,EAAE,kCAAkC,EAAE,aAAa,EAAE,MAAM,EAAE,QAAQ,EAAE,KAAK,EAAE;SACjI;QACD,UAAU,EAAE,QAAQ;QACpB,iBAAiB,EAAE,sBAAsB;QACzC,OAAO,EAAE,gEAAgE;KAC1E;IAED,aAAa,EAAE;QACb,WAAW,EAAE,kEAAkE;QAC/E,UAAU,EAAE;YACV,EAAE,IAAI,EAAE,YAAY,EAAE,QAAQ,EAAE,QAAQ,EAAE,WAAW,EAAE,sBAAsB,EAAE,aAAa,EAAE,MAAM,EAAE,QAAQ,EAAE,IAAI,EAAE;YACtH,EAAE,IAAI,EAAE,YAAY,EAAE,QAAQ,EAAE,QAAQ,EAAE,WAAW,EAAE,2BAA2B,EAAE,aAAa,EAAE,MAAM,EAAE,QAAQ,EAAE,IAAI,EAAE;YAC3H,EAAE,IAAI,EAAE,SAAS,EAAE,QAAQ,EAAE,QAAQ,EAAE,WAAW,EAAE,kCAAkC,EAAE,aAAa,EAAE,MAAM,EAAE,QAAQ,EAAE,KAAK,EAAE;SACjI;QACD,UAAU,EAAE,QAAQ;QACpB,iBAAiB,EAAE,sBAAsB;QACzC,OAAO,EAAE,+DAA+D;KACzE;IAED,0EAA0E;IAE1E,MAAM,EAAE;QACN,WAAW,EAAE,0EAA0E;QACvF,UAAU,EAAE;YACV,EAAE,IAAI,EAAE,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE,WAAW,EAAE,YAAY,EAAE,aAAa,EAAE,MAAM,EAAE,QAAQ,EAAE,IAAI,EAAE;YACvG,EAAE,IAAI,EAAE,SAAS,EAAE,QAAQ,EAAE,QAAQ,EAAE,WAAW,EAAE,+CAA+C,EAAE,aAAa,EAAE,MAAM,EAAE,QAAQ,EAAE,KAAK,EAAE;YAC7I,EAAE,IAAI,EAAE,SAAS,EAAE,QAAQ,EAAE,QAAQ,EAAE,WAAW,EAAE,gGAAgG,EAAE,aAAa,EAAE,MAAM,EAAE,QAAQ,EAAE,KAAK,EAAE;SAC/L;QACD,UAAU,EAAE,OAAO;QACnB,iBAAiB,EAAE,wBAAwB;QAC3C,OAAO,EAAE,uEAAuE;KACjF;IAED,MAAM,EAAE;QACN,WAAW,EAAE,sCAAsC;QACnD,UAAU,EAAE;YACV,EAAE,IAAI,EAAE,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE,WAAW,EAAE,YAAY,EAAE,aAAa,EAAE,MAAM,EAAE,QAAQ,EAAE,IAAI,EAAE;YACvG,EAAE,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,QAAQ,EAAE,WAAW,EAAE,oCAAoC,EAAE,aAAa,EAAE,MAAM,EAAE,QAAQ,EAAE,IAAI,EAAE;YAC9H,EAAE,IAAI,EAAE,SAAS,EAAE,QAAQ,EAAE,QAAQ,EAAE,WAAW,EAAE,+DAA+D,EAAE,aAAa,EAAE,MAAM,EAAE,QAAQ,EAAE,KAAK,EAAE;SAC9J;QACD,UAAU,EAAE,OAAO;QACnB,iBAAiB,EAAE,+CAA+C;QAClE,OAAO,EAAE,yEAAyE;KACnF;IAED,MAAM,EAAE;QACN,WAAW,EAAE,8BAA8B;QAC3C,UAAU,EAAE;YACV,EAAE,IAAI,EAAE,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE,WAAW,EAAE,YAAY,EAAE,aAAa,EAAE,MAAM,EAAE,QAAQ,EAAE,IAAI,EAAE;YACvG,EAAE,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,QAAQ,EAAE,WAAW,EAAE,kBAAkB,EAAE,aAAa,EAAE,MAAM,EAAE,QAAQ,EAAE,IAAI,EAAE;YAC5G,EAAE,IAAI,EAAE,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE,WAAW,EAAE,8CAA8C,EAAE,aAAa,EAAE,MAAM,EAAE,QAAQ,EAAE,IAAI,EAAE;YACzI,EAAE,IAAI,EAAE,SAAS,EAAE,QAAQ,EAAE,QAAQ,EAAE,WAAW,EAAE,kBAAkB,EAAE,aAAa,EAAE,MAAM,EAAE,QAAQ,EAAE,KAAK,EAAE;SACjH;QACD,UAAU,EAAE,OAAO;QACnB,iBAAiB,EAAE,uBAAuB;QAC1C,OAAO,EAAE,2DAA2D;KACrE;IAED,MAAM,EAAE;QACN,WAAW,EAAE,2CAA2C;QACxD,UAAU,EAAE;YACV,EAAE,IAAI,EAAE,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE,WAAW,EAAE,YAAY,EAAE,aAAa,EAAE,MAAM,EAAE,QAAQ,EAAE,IAAI,EAAE;YACvG,EAAE,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,QAAQ,EAAE,WAAW,EAAE,oCAAoC,EAAE,aAAa,EAAE,MAAM,EAAE,QAAQ,EAAE,IAAI,EAAE;YAC9H,EAAE,IAAI,EAAE,SAAS,EAAE,QAAQ,EAAE,QAAQ,EAAE,WAAW,EAAE,gDAAgD,EAAE,aAAa,EAAE,MAAM,EAAE,QAAQ,EAAE,KAAK,EAAE;SAC/I;QACD,UAAU,EAAE,OAAO;QACnB,iBAAiB,EAAE,wBAAwB;QAC3C,OAAO,EAAE,yEAAyE;KACnF;IAED,MAAM,EAAE;QACN,WAAW,EAAE,8BAA8B;QAC3C,UAAU,EAAE;YACV,EAAE,IAAI,EAAE,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE,WAAW,EAAE,YAAY,EAAE,aAAa,EAAE,MAAM,EAAE,QAAQ,EAAE,IAAI,EAAE;YACvG,EAAE,IAAI,EAAE,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE,WAAW,EAAE,8CAA8C,EAAE,aAAa,EAAE,MAAM,EAAE,QAAQ,EAAE,IAAI,EAAE;YACzI,EAAE,IAAI,EAAE,SAAS,EAAE,QAAQ,EAAE,QAAQ,EAAE,WAAW,EAAE,kBAAkB,EAAE,aAAa,EAAE,MAAM,EAAE,QAAQ,EAAE,KAAK,EAAE;SACjH;QACD,UAAU,EAAE,OAAO;QACnB,iBAAiB,EAAE,uBAAuB;QAC1C,OAAO,EAAE,oCAAoC;KAC9C;IAED,GAAG,EAAE;QACH,WAAW,EAAE,kCAAkC;QAC/C,UAAU,EAAE;YACV,EAAE,IAAI,EAAE,cAAc,EAAE,QAAQ,EAAE,QAAQ,EAAE,WAAW,EAAE,+BAA+B,EAAE,aAAa,EAAE,MAAM,EAAE,QAAQ,EAAE,IAAI,EAAE;YACjI,EAAE,IAAI,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,WAAW,EAAE,oCAAoC,EAAE,aAAa,EAAE,MAAM,EAAE,QAAQ,EAAE,KAAK,EAAE;YACjI,EAAE,IAAI,EAAE,SAAS,EAAE,QAAQ,EAAE,QAAQ,EAAE,WAAW,EAAE,kBAAkB,EAAE,aAAa,EAAE,MAAM,EAAE,QAAQ,EAAE,KAAK,EAAE;SACjH;QACD,UAAU,EAAE,KAAK;QACjB,iBAAiB,EAAE,uBAAuB;QAC1C,OAAO,EAAE,qDAAqD;KAC/D;IAED,2EAA2E;IAE3E,MAAM,EAAE;QACN,WAAW,EAAE,4CAA4C;QACzD,UAAU,EAAE;YACV,EAAE,IAAI,EAAE,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE,WAAW,EAAE,oBAAoB,EAAE,aAAa,EAAE,MAAM,EAAE,QAAQ,EAAE,IAAI,EAAE;YAC/G,EAAE,IAAI,EAAE,UAAU,EAAE,QAAQ,EAAE,QAAQ,EAAE,WAAW,EAAE,eAAe,EAAE,aAAa,EAAE,MAAM,EAAE,QAAQ,EAAE,IAAI,EAAE;YAC7G,EAAE,IAAI,EAAE,SAAS,EAAE,QAAQ,EAAE,QAAQ,EAAE,WAAW,EAAE,wCAAwC,EAAE,aAAa,EAAE,MAAM,EAAE,QAAQ,EAAE,KAAK,EAAE;SACvI;QACD,UAAU,EAAE,QAAQ;QACpB,iBAAiB,EAAE,wCAAwC;QAC3D,OAAO,EAAE,wDAAwD;KAClE;IAED,MAAM,EAAE;QACN,WAAW,EAAE,wCAAwC;QACrD,UAAU,EAAE;YACV,EAAE,IAAI,EAAE,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE,WAAW,EAAE,oBAAoB,EAAE,aAAa,EAAE,MAAM,EAAE,QAAQ,EAAE,IAAI,EAAE;YAC/G,EAAE,IAAI,EAAE,UAAU,EAAE,QAAQ,EAAE,QAAQ,EAAE,WAAW,EAAE,eAAe,EAAE,aAAa,EAAE,MAAM,EAAE,QAAQ,EAAE,IAAI,EAAE;YAC7G,EAAE,IAAI,EAAE,SAAS,EAAE,QAAQ,EAAE,QAAQ,EAAE,WAAW,EAAE,kBAAkB,EAAE,aAAa,EAAE,MAAM,EAAE,QAAQ,EAAE,KAAK,EAAE;SACjH;QACD,UAAU,EAAE,QAAQ;QACpB,iBAAiB,EAAE,4DAA4D;QAC/E,OAAO,EAAE,wDAAwD;KAClE;IAED,aAAa,EAAE;QACb,WAAW,EAAE,gEAAgE;QAC7E,UAAU,EAAE;YACV,EAAE,IAAI,EAAE,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE,WAAW,EAAE,oBAAoB,EAAE,aAAa,EAAE,MAAM,EAAE,QAAQ,EAAE,IAAI,EAAE;YAC/G,EAAE,IAAI,EAAE,SAAS,EAAE,QAAQ,EAAE,QAAQ,EAAE,WAAW,EAAE,kBAAkB,EAAE,aAAa,EAAE,MAAM,EAAE,QAAQ,EAAE,KAAK,EAAE;SACjH;QACD,UAAU,EAAE,QAAQ;QACpB,iBAAiB,EAAE,uBAAuB;QAC1C,OAAO,EAAE,2CAA2C;KACrD;IAED,OAAO,EAAE;QACP,WAAW,EAAE,oDAAoD;QACjE,UAAU,EAAE;YACV,EAAE,IAAI,EAAE,aAAa,EAAE,QAAQ,EAAE,QAAQ,EAAE,WAAW,EAAE,qBAAqB,EAAE,aAAa,EAAE,MAAM,EAAE,QAAQ,EAAE,IAAI,EAAE;YACtH,EAAE,IAAI,EAAE,SAAS,EAAE,QAAQ,EAAE,QAAQ,EAAE,WAAW,EAAE,kBAAkB,EAAE,aAAa,EAAE,MAAM,EAAE,QAAQ,EAAE,KAAK,EAAE;SACjH;QACD,UAAU,EAAE,QAAQ;QACpB,iBAAiB,EAAE,uBAAuB;QAC1C,OAAO,EAAE,+BAA+B;KACzC;IAED,OAAO,EAAE;QACP,WAAW,EAAE,6CAA6C;QAC1D,UAAU,EAAE;YACV,EAAE,IAAI,EAAE,aAAa,EAAE,QAAQ,EAAE,QAAQ,EAAE,WAAW,EAAE,qBAAqB,EAAE,aAAa,EAAE,MAAM,EAAE,QAAQ,EAAE,IAAI,EAAE;YACtH,EAAE,IAAI,EAAE,SAAS,EAAE,QAAQ,EAAE,QAAQ,EAAE,WAAW,EAAE,kBAAkB,EAAE,aAAa,EAAE,MAAM,EAAE,QAAQ,EAAE,KAAK,EAAE;SACjH;QACD,UAAU,EAAE,QAAQ;QACpB,iBAAiB,EAAE,4CAA4C;QAC/D,OAAO,EAAE,+BAA+B;KACzC;IAED,UAAU,EAAE;QACV,WAAW,EAAE,oDAAoD;QACjE,UAAU,EAAE;YACV,EAAE,IAAI,EAAE,aAAa,EAAE,QAAQ,EAAE,QAAQ,EAAE,WAAW,EAAE,qBAAqB,EAAE,aAAa,EAAE,MAAM,EAAE,QAAQ,EAAE,IAAI,EAAE;YACtH,EAAE,IAAI,EAAE,YAAY,EAAE,QAAQ,EAAE,QAAQ,EAAE,WAAW,EAAE,wDAAwD,EAAE,aAAa,EAAE,MAAM,EAAE,QAAQ,EAAE,IAAI,EAAE;YACxJ,EAAE,IAAI,EAAE,SAAS,EAAE,QAAQ,EAAE,QAAQ,EAAE,WAAW,EAAE,kBAAkB,EAAE,aAAa,EAAE,MAAM,EAAE,QAAQ,EAAE,KAAK,EAAE;SACjH;QACD,UAAU,EAAE,QAAQ;QACpB,iBAAiB,EAAE,qBAAqB;QACxC,OAAO,EAAE,iEAAiE;KAC3E;IAED,SAAS,EAAE;QACT,WAAW,EAAE,mDAAmD;QAChE,UAAU,EAAE;YACV,EAAE,IAAI,EAAE,SAAS,EAAE,QAAQ,EAAE,QAAQ,EAAE,WAAW,EAAE,iCAAiC,EAAE,aAAa,EAAE,MAAM,EAAE,QAAQ,EAAE,KAAK,EAAE;SAChI;QACD,UAAU,EAAE,QAAQ;QACpB,iBAAiB,EAAE,yBAAyB;QAC5C,OAAO,EAAE,+CAA+C;KACzD;IAED,UAAU,EAAE;QACV,WAAW,EAAE,wDAAwD;QACrE,UAAU,EAAE;YACV,EAAE,IAAI,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,WAAW,EAAE,4BAA4B,EAAE,aAAa,EAAE,MAAM,EAAE,QAAQ,EAAE,IAAI,EAAE;YACxH,EAAE,IAAI,EAAE,SAAS,EAAE,QAAQ,EAAE,QAAQ,EAAE,WAAW,EAAE,kBAAkB,EAAE,aAAa,EAAE,MAAM,EAAE,QAAQ,EAAE,KAAK,EAAE;SACjH;QACD,UAAU,EAAE,QAAQ;QACpB,iBAAiB,EAAE,uBAAuB;QAC1C,OAAO,EAAE,oCAAoC;KAC9C;IAED,UAAU,EAAE;QACV,WAAW,EAAE,2DAA2D;QACxE,UAAU,EAAE;YACV,EAAE,IAAI,EAAE,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE,WAAW,EAAE,yBAAyB,EAAE,aAAa,EAAE,MAAM,EAAE,QAAQ,EAAE,IAAI,EAAE;YACpH,EAAE,IAAI,EAAE,SAAS,EAAE,QAAQ,EAAE,QAAQ,EAAE,WAAW,EAAE,kBAAkB,EAAE,aAAa,EAAE,MAAM,EAAE,QAAQ,EAAE,KAAK,EAAE;SACjH;QACD,UAAU,EAAE,QAAQ;QACpB,iBAAiB,EAAE,qBAAqB;QACxC,OAAO,EAAE,2CAA2C;KACrD;IAED,2EAA2E;IAE3E,WAAW,EAAE;QACX,WAAW,EAAE,0BAA0B;QACvC,UAAU,EAAE;YACV,EAAE,IAAI,EAAE,SAAS,EAAE,QAAQ,EAAE,QAAQ,EAAE,WAAW,EAAE,kBAAkB,EAAE,aAAa,EAAE,MAAM,EAAE,QAAQ,EAAE,KAAK,EAAE;SACjH;QACD,UAAU,EAAE,OAAO;QACnB,iBAAiB,EAAE,yBAAyB;QAC5C,OAAO,EAAE,sBAAsB;KAChC;IAED,YAAY,EAAE;QACZ,WAAW,EAAE,6BAA6B;QAC1C,UAAU,EAAE;YACV,EAAE,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,QAAQ,EAAE,WAAW,EAAE,aAAa,EAAE,aAAa,EAAE,MAAM,EAAE,QAAQ,EAAE,IAAI,EAAE;YACvG,EAAE,IAAI,EAAE,SAAS,EAAE,QAAQ,EAAE,QAAQ,EAAE,WAAW,EAAE,2DAA2D,EAAE,aAAa,EAAE,MAAM,EAAE,QAAQ,EAAE,KAAK,EAAE;SAC1J;QACD,UAAU,EAAE,QAAQ;QACpB,iBAAiB,EAAE,qBAAqB;QACxC,OAAO,EAAE,kDAAkD;KAC5D;IAED,YAAY,EAAE;QACZ,WAAW,EAAE,+CAA+C;QAC5D,UAAU,EAAE;YACV,EAAE,IAAI,EAAE,UAAU,EAAE,QAAQ,EAAE,QAAQ,EAAE,WAAW,EAAE,gBAAgB,EAAE,aAAa,EAAE,MAAM,EAAE,QAAQ,EAAE,IAAI,EAAE;YAC9G,EAAE,IAAI,EAAE,SAAS,EAAE,QAAQ,EAAE,QAAQ,EAAE,WAAW,EAAE,kBAAkB,EAAE,aAAa,EAAE,MAAM,EAAE,QAAQ,EAAE,KAAK,EAAE;SACjH;QACD,UAAU,EAAE,QAAQ;QACpB,iBAAiB,EAAE,uBAAuB;QAC1C,OAAO,EAAE,iCAAiC;KAC3C;IAED,WAAW,EAAE;QACX,WAAW,EAAE,wCAAwC;QACrD,UAAU,EAAE;YACV,EAAE,IAAI,EAAE,UAAU,EAAE,QAAQ,EAAE,QAAQ,EAAE,WAAW,EAAE,gBAAgB,EAAE,aAAa,EAAE,MAAM,EAAE,QAAQ,EAAE,IAAI,EAAE;YAC9G,EAAE,IAAI,EAAE,SAAS,EAAE,QAAQ,EAAE,QAAQ,EAAE,WAAW,EAAE,kBAAkB,EAAE,aAAa,EAAE,MAAM,EAAE,QAAQ,EAAE,KAAK,EAAE;SACjH;QACD,UAAU,EAAE,QAAQ;QACpB,iBAAiB,EAAE,oBAAoB;QACvC,OAAO,EAAE,gCAAgC;KAC1C;IAED,SAAS,EAAE;QACT,WAAW,EAAE,uCAAuC;QACpD,UAAU,EAAE;YACV,EAAE,IAAI,EAAE,UAAU,EAAE,QAAQ,EAAE,QAAQ,EAAE,WAAW,EAAE,gBAAgB,EAAE,aAAa,EAAE,MAAM,EAAE,QAAQ,EAAE,IAAI,EAAE;YAC9G,EAAE,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,QAAQ,EAAE,WAAW,EAAE,0CAA0C,EAAE,aAAa,EAAE,MAAM,EAAE,QAAQ,EAAE,KAAK,EAAE;YACrI,EAAE,IAAI,EAAE,SAAS,EAAE,QAAQ,EAAE,QAAQ,EAAE,WAAW,EAAE,iDAAiD,EAAE,aAAa,EAAE,MAAM,EAAE,QAAQ,EAAE,KAAK,EAAE;SAChJ;QACD,UAAU,EAAE,OAAO;QACnB,iBAAiB,EAAE,8BAA8B;QACjD,OAAO,EAAE,uCAAuC;KACjD;IAED,UAAU,EAAE;QACV,WAAW,EAAE,mCAAmC;QAChD,UAAU,EAAE;YACV,EAAE,IAAI,EAAE,UAAU,EAAE,QAAQ,EAAE,QAAQ,EAAE,WAAW,EAAE,gBAAgB,EAAE,aAAa,EAAE,MAAM,EAAE,QAAQ,EAAE,IAAI,EAAE;YAC9G,EAAE,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,QAAQ,EAAE,WAAW,EAAE,yBAAyB,EAAE,aAAa,EAAE,MAAM,EAAE,QAAQ,EAAE,IAAI,EAAE;YACnH,EAAE,IAAI,EAAE,SAAS,EAAE,QAAQ,EAAE,QAAQ,EAAE,WAAW,EAAE,iCAAiC,EAAE,aAAa,EAAE,UAAU,EAAE,QAAQ,EAAE,IAAI,EAAE;YAClI,EAAE,IAAI,EAAE,SAAS,EAAE,QAAQ,EAAE,QAAQ,EAAE,WAAW,EAAE,uCAAuC,EAAE,aAAa,EAAE,MAAM,EAAE,QAAQ,EAAE,KAAK,EAAE;SACtI;QACD,UAAU,EAAE,QAAQ;QACpB,iBAAiB,EAAE,wBAAwB;QAC3C,OAAO,EAAE,qFAAqF;KAC/F;IAED,YAAY,EAAE;QACZ,WAAW,EAAE,uCAAuC;QACpD,UAAU,EAAE;YACV,EAAE,IAAI,EAAE,UAAU,EAAE,QAAQ,EAAE,QAAQ,EAAE,WAAW,EAAE,gBAAgB,EAAE,aAAa,EAAE,MAAM,EAAE,QAAQ,EAAE,IAAI,EAAE;YAC9G,EAAE,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,QAAQ,EAAE,WAAW,EAAE,yBAAyB,EAAE,aAAa,EAAE,MAAM,EAAE,QAAQ,EAAE,IAAI,EAAE;YACnH,EAAE,IAAI,EAAE,SAAS,EAAE,QAAQ,EAAE,QAAQ,EAAE,WAAW,EAAE,kBAAkB,EAAE,aAAa,EAAE,MAAM,EAAE,QAAQ,EAAE,KAAK,EAAE;SACjH;QACD,UAAU,EAAE,QAAQ;QACpB,iBAAiB,EAAE,wBAAwB;QAC3C,OAAO,EAAE,gDAAgD;KAC1D;IAED,UAAU,EAAE;QACV,WAAW,EAAE,gDAAgD;QAC7D,UAAU,EAAE;YACV,EAAE,IAAI,EAAE,UAAU,EAAE,QAAQ,EAAE,QAAQ,EAAE,WAAW,EAAE,gBAAgB,EAAE,aAAa,EAAE,MAAM,EAAE,QAAQ,EAAE,IAAI,EAAE;YAC9G,EAAE,IAAI,EAAE,OAAO,EAAE,QAAQ,EAAE,OAAO,EAAE,WAAW,EAAE,+BAA+B,EAAE,aAAa,EAAE,MAAM,EAAE,QAAQ,EAAE,IAAI,EAAE;YACzH,EAAE,IAAI,EAAE,SAAS,EAAE,QAAQ,EAAE,QAAQ,EAAE,WAAW,EAAE,kBAAkB,EAAE,aAAa,EAAE,MAAM,EAAE,QAAQ,EAAE,KAAK,EAAE;SACjH;QACD,UAAU,EAAE,QAAQ;QACpB,iBAAiB,EAAE,iBAAiB;QACpC,OAAO,EAAE,0DAA0D;KACpE;IAED,YAAY,EAAE;QACZ,WAAW,EAAE,kDAAkD;QAC/D,UAAU,EAAE;YACV,EAAE,IAAI,EAAE,UAAU,EAAE,QAAQ,EAAE,QAAQ,EAAE,WAAW,EAAE,gBAAgB,EAAE,aAAa,EAAE,MAAM,EAAE,QAAQ,EAAE,IAAI,EAAE;YAC9G,EAAE,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,QAAQ,EAAE,WAAW,EAAE,yBAAyB,EAAE,aAAa,EAAE,MAAM,EAAE,QAAQ,EAAE,IAAI,EAAE;YACnH,EAAE,IAAI,EAAE,SAAS,EAAE,QAAQ,EAAE,QAAQ,EAAE,WAAW,EAAE,kBAAkB,EAAE,aAAa,EAAE,MAAM,EAAE,QAAQ,EAAE,KAAK,EAAE;SACjH;QACD,UAAU,EAAE,QAAQ;QACpB,iBAAiB,EAAE,eAAe;QAClC,OAAO,EAAE,6CAA6C;KACvD;IAED,eAAe,EAAE;QACf,WAAW,EAAE,4DAA4D;QACzE,UAAU,EAAE;YACV,EAAE,IAAI,EAAE,UAAU,EAAE,QAAQ,EAAE,QAAQ,EAAE,WAAW,EAAE,gBAAgB,EAAE,aAAa,EAAE,MAAM,EAAE,QAAQ,EAAE,IAAI,EAAE;YAC9G,EAAE,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,QAAQ,EAAE,WAAW,EAAE,yBAAyB,EAAE,aAAa,EAAE,MAAM,EAAE,QAAQ,EAAE,IAAI,EAAE;YACnH,EAAE,IAAI,EAAE,WAAW,EAAE,QAAQ,EAAE,QAAQ,EAAE,WAAW,EAAE,wBAAwB,EAAE,aAAa,EAAE,QAAQ,EAAE,QAAQ,EAAE,IAAI,EAAE;YACzH,EAAE,IAAI,EAAE,SAAS,EAAE,QAAQ,EAAE,QAAQ,EAAE,WAAW,EAAE,kBAAkB,EAAE,aAAa,EAAE,MAAM,EAAE,QAAQ,EAAE,KAAK,EAAE;SACjH;QACD,UAAU,EAAE,QAAQ;QACpB,iBAAiB,EAAE,0BAA0B;QAC7C,OAAO,EAAE,wDAAwD;KAClE;CACF,CAAC;AAEF,+EAA+E;AAE/E,MAAM,CAAC,MAAM,sBAAsB,GAAG;IACpC,WAAW,EAAE,kFAAkF;IAC/F,OAAO,EAAE,MAAM,CAAC,IAAI,CAAC,iBAAiB,CAAC;IACvC,QAAQ,EAAE,OAAO;CAClB,CAAC"}
package/package.json ADDED
@@ -0,0 +1,13 @@
1
+ {
2
+ "name": "@robinpath/supabase",
3
+ "version": "0.1.0",
4
+ "publishConfig": { "access": "public" },
5
+ "type": "module",
6
+ "main": "dist/index.js",
7
+ "types": "dist/index.d.ts",
8
+ "exports": { ".": { "import": "./dist/index.js", "types": "./dist/index.d.ts" } },
9
+ "files": ["dist"],
10
+ "scripts": { "build": "tsc" },
11
+ "peerDependencies": { "@wiredwp/robinpath": ">=0.20.0" },
12
+ "devDependencies": { "@wiredwp/robinpath": "^0.30.1", "typescript": "^5.6.0" }
13
+ }