supabase-dataobject-core 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/README.md ADDED
@@ -0,0 +1,324 @@
1
+ # Supabase DataObject Core
2
+
3
+ A TypeScript library for creating reactive data objects from Supabase tables and views. This package provides a clean, type-safe way to interact with your Supabase data with built-in reactivity, CRUD operations, and advanced querying capabilities.
4
+
5
+ ## Features
6
+
7
+ - 🔄 **Reactive Data Objects**: Automatically update when data changes
8
+ - 🛡️ **Type Safety**: Full TypeScript support with proper type definitions
9
+ - 🔍 **Advanced Querying**: Support for filtering, sorting, field selection, and pagination
10
+ - ✅ **CRUD Operations**: Built-in Create, Read, Update, Delete functionality
11
+ - 🎯 **Named Objects**: Create named data objects that can be accessed globally
12
+ - 🔧 **Configurable**: Flexible configuration options for different use cases
13
+ - 📦 **Zero Dependencies**: Only depends on @supabase/supabase-js
14
+
15
+ ## Installation
16
+
17
+ ```bash
18
+ npm install supabase-dataobject-core
19
+ ```
20
+
21
+ ## Quick Start
22
+
23
+ ### Basic Usage
24
+
25
+ ```typescript
26
+ import {
27
+ initializeDataObjectManager,
28
+ createDataObject,
29
+ getDataObjectById
30
+ } from 'supabase-dataobject-core';
31
+
32
+ // Initialize the manager with your Supabase config
33
+ initializeDataObjectManager({
34
+ supabaseConfig: {
35
+ url: 'https://your-project.supabase.co',
36
+ anonKey: 'your-anon-key'
37
+ }
38
+ });
39
+
40
+ // Create a data object
41
+ const userDataObject = await createDataObject('users', {
42
+ viewName: 'users',
43
+ canInsert: true,
44
+ canUpdate: true,
45
+ canDelete: false
46
+ });
47
+
48
+ // Listen for data changes
49
+ userDataObject?.onDataChanged((users) => {
50
+ console.log('Users updated:', users);
51
+ });
52
+
53
+ // Access the data object from anywhere
54
+ const users = getDataObjectById('users');
55
+ if (users) {
56
+ const data = users.getData();
57
+ console.log('Current users:', data);
58
+ }
59
+ ```
60
+
61
+ ### Advanced Configuration
62
+
63
+ ```typescript
64
+ import { createDataObject } from 'supabase-dataobject-core';
65
+
66
+ const ordersDataObject = await createDataObject('pendingOrders', {
67
+ viewName: 'orders',
68
+ fields: [
69
+ { name: 'id', type: 'number' },
70
+ { name: 'customer_name', type: 'string' },
71
+ { name: 'total_amount', type: 'number' },
72
+ { name: 'status', type: 'string' }
73
+ ],
74
+ whereClauses: [
75
+ { field: 'status', operator: 'equals', value: 'pending' },
76
+ { field: 'total_amount', operator: 'greaterthan', value: 100 }
77
+ ],
78
+ sort: { field: 'created_at', direction: 'desc' },
79
+ recordLimit: 50,
80
+ canInsert: true,
81
+ canUpdate: true,
82
+ canDelete: true
83
+ });
84
+ ```
85
+
86
+ ## API Reference
87
+
88
+ ### Core Functions
89
+
90
+ #### `initializeDataObjectManager(config)`
91
+ Initialize the global data object manager.
92
+
93
+ ```typescript
94
+ initializeDataObjectManager({
95
+ supabaseConfig: {
96
+ url: 'https://your-project.supabase.co',
97
+ anonKey: 'your-anon-key'
98
+ },
99
+ errorHandler: {
100
+ onError: (error) => console.error(error),
101
+ onWarning: (warning) => console.warn(warning),
102
+ onInfo: (info) => console.info(info)
103
+ }
104
+ });
105
+ ```
106
+
107
+ #### `createDataObject(name, options)`
108
+ Create a new named data object.
109
+
110
+ ```typescript
111
+ const dataObject = await createDataObject('myData', {
112
+ viewName: 'table_name',
113
+ // ... other options
114
+ });
115
+ ```
116
+
117
+ #### `getDataObjectById(id)`
118
+ Retrieve a data object by its name/ID.
119
+
120
+ ```typescript
121
+ const dataObject = getDataObjectById('myData');
122
+ ```
123
+
124
+ #### `getAllDataObjects()`
125
+ Get all created data objects.
126
+
127
+ ```typescript
128
+ const allObjects = getAllDataObjects();
129
+ ```
130
+
131
+ #### `removeDataObject(id)`
132
+ Remove a data object by its name/ID.
133
+
134
+ ```typescript
135
+ const removed = removeDataObject('myData');
136
+ ```
137
+
138
+ #### `refreshDataObject(id)`
139
+ Refresh a data object's data from Supabase.
140
+
141
+ ```typescript
142
+ await refreshDataObject('myData');
143
+ ```
144
+
145
+ ### DataObject Class
146
+
147
+ #### Methods
148
+
149
+ - `getData()`: Get current data as an array
150
+ - `refresh()`: Manually refresh data from Supabase
151
+ - `insert(record)`: Insert a new record
152
+ - `update(id, updates)`: Update an existing record
153
+ - `delete(id)`: Delete a record
154
+ - `dispose()`: Clean up the data object
155
+ - `onDataChanged(callback)`: Listen for data changes
156
+
157
+ #### Example
158
+
159
+ ```typescript
160
+ const dataObject = getDataObjectById('users');
161
+
162
+ if (dataObject) {
163
+ // Get current data
164
+ const users = dataObject.getData();
165
+
166
+ // Insert new user
167
+ await dataObject.insert({
168
+ name: 'John Doe',
169
+ email: 'john@example.com'
170
+ });
171
+
172
+ // Update user
173
+ await dataObject.update(1, { name: 'Jane Doe' });
174
+
175
+ // Delete user
176
+ await dataObject.delete(1);
177
+
178
+ // Listen for changes
179
+ const unsubscribe = dataObject.onDataChanged((data) => {
180
+ console.log('Data updated:', data);
181
+ });
182
+
183
+ // Clean up listener
184
+ unsubscribe();
185
+ }
186
+ ```
187
+
188
+ ## Configuration Options
189
+
190
+ ### DataObjectOptions
191
+
192
+ ```typescript
193
+ interface DataObjectOptions {
194
+ viewName: string; // Table or view name
195
+ fields?: DataObjectField[]; // Specific fields to select
196
+ whereClauses?: WhereClause[]; // Filter conditions
197
+ sort?: SortConfig; // Sorting configuration
198
+ recordLimit?: number; // Maximum records to fetch
199
+ canInsert?: boolean; // Allow insert operations
200
+ canUpdate?: boolean; // Allow update operations
201
+ canDelete?: boolean; // Allow delete operations
202
+ }
203
+ ```
204
+
205
+ ### WhereClause
206
+
207
+ ```typescript
208
+ interface WhereClause {
209
+ field: string;
210
+ operator: 'equals' | 'notequals' | 'greaterthan' | 'lessthan';
211
+ value: any;
212
+ }
213
+ ```
214
+
215
+ ### SortConfig
216
+
217
+ ```typescript
218
+ interface SortConfig {
219
+ field: string;
220
+ direction: 'asc' | 'desc';
221
+ }
222
+ ```
223
+
224
+ ## Error Handling
225
+
226
+ You can provide custom error handlers when initializing the manager:
227
+
228
+ ```typescript
229
+ initializeDataObjectManager({
230
+ supabaseConfig: { /* ... */ },
231
+ errorHandler: {
232
+ onError: (error) => {
233
+ // Handle errors (e.g., show toast notification)
234
+ console.error('DataObject Error:', error);
235
+ },
236
+ onWarning: (warning) => {
237
+ // Handle warnings
238
+ console.warn('DataObject Warning:', warning);
239
+ },
240
+ onInfo: (info) => {
241
+ // Handle info messages
242
+ console.info('DataObject Info:', info);
243
+ }
244
+ }
245
+ });
246
+ ```
247
+
248
+ ## TypeScript Support
249
+
250
+ This package is written in TypeScript and provides full type safety:
251
+
252
+ ```typescript
253
+ import type {
254
+ DataObjectOptions,
255
+ DataObjectRecord,
256
+ SupabaseConfig
257
+ } from 'supabase-dataobject-core';
258
+
259
+ // Your data will be properly typed
260
+ const users: DataObjectRecord[] = dataObject.getData();
261
+ ```
262
+
263
+ ## Examples
264
+
265
+ ### Service Class Pattern
266
+
267
+ ```typescript
268
+ class UserService {
269
+ private getUserDataObject() {
270
+ return getDataObjectById('users');
271
+ }
272
+
273
+ async getAllUsers() {
274
+ const dataObject = this.getUserDataObject();
275
+ return dataObject ? dataObject.getData() : [];
276
+ }
277
+
278
+ async createUser(userData: any) {
279
+ const dataObject = this.getUserDataObject();
280
+ return dataObject ? await dataObject.insert(userData) : false;
281
+ }
282
+
283
+ async updateUser(id: number, updates: any) {
284
+ const dataObject = this.getUserDataObject();
285
+ return dataObject ? await dataObject.update(id, updates) : false;
286
+ }
287
+ }
288
+ ```
289
+
290
+ ### React Hook Pattern
291
+
292
+ ```typescript
293
+ import { useEffect, useState } from 'react';
294
+ import { getDataObjectById } from 'supabase-dataobject-core';
295
+
296
+ function useDataObject(id: string) {
297
+ const [data, setData] = useState([]);
298
+ const [loading, setLoading] = useState(true);
299
+
300
+ useEffect(() => {
301
+ const dataObject = getDataObjectById(id);
302
+ if (dataObject) {
303
+ setData(dataObject.getData());
304
+ setLoading(false);
305
+
306
+ const unsubscribe = dataObject.onDataChanged((newData) => {
307
+ setData(newData);
308
+ });
309
+
310
+ return unsubscribe;
311
+ }
312
+ }, [id]);
313
+
314
+ return { data, loading };
315
+ }
316
+ ```
317
+
318
+ ## License
319
+
320
+ MIT
321
+
322
+ ## Contributing
323
+
324
+ Contributions are welcome! Please feel free to submit a Pull Request.
@@ -0,0 +1,30 @@
1
+ import { SupabaseClient } from '@supabase/supabase-js';
2
+ import { DataObjectOptions, DataObjectRecord, SupabaseConfig } from './types';
3
+ export interface DataObjectErrorHandler {
4
+ onError?: (error: string) => void;
5
+ onWarning?: (warning: string) => void;
6
+ onInfo?: (info: string) => void;
7
+ }
8
+ export declare class DataObject {
9
+ private supabase;
10
+ private options;
11
+ private data;
12
+ private eventEmitter;
13
+ private errorHandler?;
14
+ readonly onDataChanged: (listener: (data: DataObjectRecord[]) => void) => () => void;
15
+ constructor(supabaseConfig: SupabaseConfig, options: DataObjectOptions, errorHandler?: DataObjectErrorHandler);
16
+ private handleError;
17
+ private handleWarning;
18
+ private handleInfo;
19
+ private loadData;
20
+ getData(): DataObjectRecord[];
21
+ refresh(): Promise<void>;
22
+ insert(record: Partial<DataObjectRecord>): Promise<boolean>;
23
+ update(id: any, updates: Partial<DataObjectRecord>): Promise<boolean>;
24
+ delete(id: any): Promise<boolean>;
25
+ dispose(): void;
26
+ getOptions(): DataObjectOptions;
27
+ getSupabaseClient(): SupabaseClient;
28
+ }
29
+ export declare function createDataObject(supabaseConfig: SupabaseConfig, options: DataObjectOptions, errorHandler?: DataObjectErrorHandler): Promise<DataObject>;
30
+ //# sourceMappingURL=dataObject.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"dataObject.d.ts","sourceRoot":"","sources":["../src/dataObject.ts"],"names":[],"mappings":"AAAA,OAAO,EAAgB,cAAc,EAAE,MAAM,uBAAuB,CAAC;AACrE,OAAO,EAAE,iBAAiB,EAAE,gBAAgB,EAAkC,cAAc,EAAE,MAAM,SAAS,CAAC;AAG9G,MAAM,WAAW,sBAAsB;IACnC,OAAO,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;IAClC,SAAS,CAAC,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,IAAI,CAAC;IACtC,MAAM,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAC;CACnC;AAED,qBAAa,UAAU;IACnB,OAAO,CAAC,QAAQ,CAAiB;IACjC,OAAO,CAAC,OAAO,CAAoB;IACnC,OAAO,CAAC,IAAI,CAA0B;IACtC,OAAO,CAAC,YAAY,CAA0C;IAC9D,OAAO,CAAC,YAAY,CAAC,CAAyB;IAE9C,SAAgB,aAAa,+DAA2B;gBAE5C,cAAc,EAAE,cAAc,EAAE,OAAO,EAAE,iBAAiB,EAAE,YAAY,CAAC,EAAE,sBAAsB;IAO7G,OAAO,CAAC,WAAW;IAQnB,OAAO,CAAC,aAAa;IAQrB,OAAO,CAAC,UAAU;YAQJ,QAAQ;IA2Df,OAAO,IAAI,gBAAgB,EAAE;IAIvB,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC;IAIxB,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,gBAAgB,CAAC,GAAG,OAAO,CAAC,OAAO,CAAC;IA2B3D,MAAM,CAAC,EAAE,EAAE,GAAG,EAAE,OAAO,EAAE,OAAO,CAAC,gBAAgB,CAAC,GAAG,OAAO,CAAC,OAAO,CAAC;IA2BrE,MAAM,CAAC,EAAE,EAAE,GAAG,GAAG,OAAO,CAAC,OAAO,CAAC;IA2BvC,OAAO,IAAI,IAAI;IAIf,UAAU,IAAI,iBAAiB;IAI/B,iBAAiB,IAAI,cAAc;CAG7C;AAED,wBAAsB,gBAAgB,CAClC,cAAc,EAAE,cAAc,EAC9B,OAAO,EAAE,iBAAiB,EAC1B,YAAY,CAAC,EAAE,sBAAsB,GACtC,OAAO,CAAC,UAAU,CAAC,CAErB"}
@@ -0,0 +1,186 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.DataObject = void 0;
4
+ exports.createDataObject = createDataObject;
5
+ const supabase_js_1 = require("@supabase/supabase-js");
6
+ const eventEmitter_1 = require("./eventEmitter");
7
+ class DataObject {
8
+ constructor(supabaseConfig, options, errorHandler) {
9
+ this.data = [];
10
+ this.eventEmitter = new eventEmitter_1.EventEmitter();
11
+ this.onDataChanged = this.eventEmitter.event;
12
+ this.supabase = (0, supabase_js_1.createClient)(supabaseConfig.url, supabaseConfig.anonKey);
13
+ this.options = options;
14
+ this.errorHandler = errorHandler;
15
+ this.loadData();
16
+ }
17
+ handleError(message) {
18
+ if (this.errorHandler?.onError) {
19
+ this.errorHandler.onError(message);
20
+ }
21
+ else {
22
+ console.error(message);
23
+ }
24
+ }
25
+ handleWarning(message) {
26
+ if (this.errorHandler?.onWarning) {
27
+ this.errorHandler.onWarning(message);
28
+ }
29
+ else {
30
+ console.warn(message);
31
+ }
32
+ }
33
+ handleInfo(message) {
34
+ if (this.errorHandler?.onInfo) {
35
+ this.errorHandler.onInfo(message);
36
+ }
37
+ else {
38
+ console.info(message);
39
+ }
40
+ }
41
+ async loadData() {
42
+ try {
43
+ // Start with base query
44
+ let query = this.supabase.from(this.options.viewName);
45
+ // Apply select fields
46
+ if (this.options.fields && this.options.fields.length > 0) {
47
+ const fieldNames = this.options.fields.map(f => f.name).join(',');
48
+ query = query.select(fieldNames);
49
+ }
50
+ else {
51
+ query = query.select('*');
52
+ }
53
+ // Apply where clauses
54
+ if (this.options.whereClauses) {
55
+ for (const whereClause of this.options.whereClauses) {
56
+ switch (whereClause.operator) {
57
+ case 'equals':
58
+ query = query.eq(whereClause.field, whereClause.value);
59
+ break;
60
+ case 'notequals':
61
+ query = query.neq(whereClause.field, whereClause.value);
62
+ break;
63
+ case 'greaterthan':
64
+ query = query.gt(whereClause.field, whereClause.value);
65
+ break;
66
+ case 'lessthan':
67
+ query = query.lt(whereClause.field, whereClause.value);
68
+ break;
69
+ }
70
+ }
71
+ }
72
+ // Apply sorting
73
+ if (this.options.sort) {
74
+ query = query.order(this.options.sort.field, {
75
+ ascending: this.options.sort.direction === 'asc'
76
+ });
77
+ }
78
+ // Apply record limit
79
+ if (this.options.recordLimit) {
80
+ query = query.limit(this.options.recordLimit);
81
+ }
82
+ const { data, error } = await query;
83
+ if (error) {
84
+ this.handleError(`Error loading data: ${error.message}`);
85
+ return;
86
+ }
87
+ this.data = data || [];
88
+ this.eventEmitter.fire(this.data);
89
+ }
90
+ catch (error) {
91
+ this.handleError(`Error loading data: ${error}`);
92
+ }
93
+ }
94
+ getData() {
95
+ return [...this.data];
96
+ }
97
+ async refresh() {
98
+ await this.loadData();
99
+ }
100
+ async insert(record) {
101
+ if (!this.options.canInsert) {
102
+ this.handleWarning('Insert operation is not allowed for this data object');
103
+ return false;
104
+ }
105
+ try {
106
+ const { data, error } = await this.supabase
107
+ .from(this.options.viewName)
108
+ .insert(record)
109
+ .select();
110
+ if (error) {
111
+ this.handleError(`Error inserting record: ${error.message}`);
112
+ return false;
113
+ }
114
+ // Refresh data to get the latest state
115
+ await this.refresh();
116
+ this.handleInfo('Record inserted successfully');
117
+ return true;
118
+ }
119
+ catch (error) {
120
+ this.handleError(`Error inserting record: ${error}`);
121
+ return false;
122
+ }
123
+ }
124
+ async update(id, updates) {
125
+ if (!this.options.canUpdate) {
126
+ this.handleWarning('Update operation is not allowed for this data object');
127
+ return false;
128
+ }
129
+ try {
130
+ const { error } = await this.supabase
131
+ .from(this.options.viewName)
132
+ .update(updates)
133
+ .eq('id', id);
134
+ if (error) {
135
+ this.handleError(`Error updating record: ${error.message}`);
136
+ return false;
137
+ }
138
+ // Refresh data to get the latest state
139
+ await this.refresh();
140
+ this.handleInfo('Record updated successfully');
141
+ return true;
142
+ }
143
+ catch (error) {
144
+ this.handleError(`Error updating record: ${error}`);
145
+ return false;
146
+ }
147
+ }
148
+ async delete(id) {
149
+ if (!this.options.canDelete) {
150
+ this.handleWarning('Delete operation is not allowed for this data object');
151
+ return false;
152
+ }
153
+ try {
154
+ const { error } = await this.supabase
155
+ .from(this.options.viewName)
156
+ .delete()
157
+ .eq('id', id);
158
+ if (error) {
159
+ this.handleError(`Error deleting record: ${error.message}`);
160
+ return false;
161
+ }
162
+ // Refresh data to get the latest state
163
+ await this.refresh();
164
+ this.handleInfo('Record deleted successfully');
165
+ return true;
166
+ }
167
+ catch (error) {
168
+ this.handleError(`Error deleting record: ${error}`);
169
+ return false;
170
+ }
171
+ }
172
+ dispose() {
173
+ this.eventEmitter.dispose();
174
+ }
175
+ getOptions() {
176
+ return { ...this.options };
177
+ }
178
+ getSupabaseClient() {
179
+ return this.supabase;
180
+ }
181
+ }
182
+ exports.DataObject = DataObject;
183
+ async function createDataObject(supabaseConfig, options, errorHandler) {
184
+ return new DataObject(supabaseConfig, options, errorHandler);
185
+ }
186
+ //# sourceMappingURL=dataObject.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"dataObject.js","sourceRoot":"","sources":["../src/dataObject.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,31 @@
1
+ import { DataObject, DataObjectErrorHandler } from './dataObject';
2
+ import { DataObjectOptions, SupabaseConfig, StoredDataObject } from './types';
3
+ export interface DataObjectManagerConfig {
4
+ supabaseConfig: SupabaseConfig;
5
+ errorHandler?: DataObjectErrorHandler;
6
+ }
7
+ export declare class DataObjectManager {
8
+ private static instance;
9
+ private dataObjects;
10
+ private config;
11
+ private eventEmitter;
12
+ readonly onDataObjectsChanged: (listener: (data: StoredDataObject[]) => void) => () => void;
13
+ private constructor();
14
+ static getInstance(config?: DataObjectManagerConfig): DataObjectManager;
15
+ static setConfig(config: DataObjectManagerConfig): void;
16
+ createDataObject(name: string, options: DataObjectOptions): Promise<DataObject | null>;
17
+ getDataObjectById(id: string): DataObject | null;
18
+ getAllDataObjects(): StoredDataObject[];
19
+ removeDataObject(id: string): boolean;
20
+ refreshDataObject(id: string): Promise<boolean>;
21
+ clearAllDataObjects(): void;
22
+ dispose(): void;
23
+ updateConfig(config: DataObjectManagerConfig): void;
24
+ getConfig(): DataObjectManagerConfig;
25
+ }
26
+ export declare function getDataObjectById(id: string): DataObject | null;
27
+ export declare function createDataObject(name: string, options: DataObjectOptions): Promise<DataObject | null>;
28
+ export declare function getAllDataObjects(): StoredDataObject[];
29
+ export declare function removeDataObject(id: string): boolean;
30
+ export declare function refreshDataObject(id: string): Promise<boolean>;
31
+ //# sourceMappingURL=dataObjectManager.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"dataObjectManager.d.ts","sourceRoot":"","sources":["../src/dataObjectManager.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,sBAAsB,EAAE,MAAM,cAAc,CAAC;AAClE,OAAO,EAAE,iBAAiB,EAAE,cAAc,EAAE,gBAAgB,EAAE,MAAM,SAAS,CAAC;AAG9E,MAAM,WAAW,uBAAuB;IACpC,cAAc,EAAE,cAAc,CAAC;IAC/B,YAAY,CAAC,EAAE,sBAAsB,CAAC;CACzC;AAED,qBAAa,iBAAiB;IAC1B,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAoB;IAC3C,OAAO,CAAC,WAAW,CAA4C;IAC/D,OAAO,CAAC,MAAM,CAA0B;IACxC,OAAO,CAAC,YAAY,CAA0C;IAE9D,SAAgB,oBAAoB,+DAA2B;IAE/D,OAAO;WAIO,WAAW,CAAC,MAAM,CAAC,EAAE,uBAAuB,GAAG,iBAAiB;WAUhE,SAAS,CAAC,MAAM,EAAE,uBAAuB,GAAG,IAAI;IAMjD,gBAAgB,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,iBAAiB,GAAG,OAAO,CAAC,UAAU,GAAG,IAAI,CAAC;IA4C5F,iBAAiB,CAAC,EAAE,EAAE,MAAM,GAAG,UAAU,GAAG,IAAI;IAKhD,iBAAiB,IAAI,gBAAgB,EAAE;IAIvC,gBAAgB,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO;IAkB/B,iBAAiB,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IAmBrD,mBAAmB,IAAI,IAAI;IAQ3B,OAAO,IAAI,IAAI;IAKf,YAAY,CAAC,MAAM,EAAE,uBAAuB,GAAG,IAAI;IAInD,SAAS,IAAI,uBAAuB;CAG9C;AAGD,wBAAgB,iBAAiB,CAAC,EAAE,EAAE,MAAM,GAAG,UAAU,GAAG,IAAI,CAQ/D;AAED,wBAAsB,gBAAgB,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,iBAAiB,GAAG,OAAO,CAAC,UAAU,GAAG,IAAI,CAAC,CAQ3G;AAED,wBAAgB,iBAAiB,IAAI,gBAAgB,EAAE,CAQtD;AAED,wBAAgB,gBAAgB,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAQpD;AAED,wBAAsB,iBAAiB,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAQpE"}
@@ -0,0 +1,189 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.DataObjectManager = void 0;
4
+ exports.getDataObjectById = getDataObjectById;
5
+ exports.createDataObject = createDataObject;
6
+ exports.getAllDataObjects = getAllDataObjects;
7
+ exports.removeDataObject = removeDataObject;
8
+ exports.refreshDataObject = refreshDataObject;
9
+ const dataObject_1 = require("./dataObject");
10
+ const eventEmitter_1 = require("./eventEmitter");
11
+ class DataObjectManager {
12
+ constructor(config) {
13
+ this.dataObjects = new Map();
14
+ this.eventEmitter = new eventEmitter_1.EventEmitter();
15
+ this.onDataObjectsChanged = this.eventEmitter.event;
16
+ this.config = config;
17
+ }
18
+ static getInstance(config) {
19
+ if (!DataObjectManager.instance) {
20
+ if (!config) {
21
+ throw new Error('DataObjectManager must be initialized with config first');
22
+ }
23
+ DataObjectManager.instance = new DataObjectManager(config);
24
+ }
25
+ return DataObjectManager.instance;
26
+ }
27
+ static setConfig(config) {
28
+ if (DataObjectManager.instance) {
29
+ DataObjectManager.instance.config = config;
30
+ }
31
+ }
32
+ async createDataObject(name, options) {
33
+ // Check if name already exists
34
+ if (this.dataObjects.has(name)) {
35
+ const errorMsg = `Data object with name '${name}' already exists. Please choose a different name.`;
36
+ if (this.config.errorHandler?.onError) {
37
+ this.config.errorHandler.onError(errorMsg);
38
+ }
39
+ else {
40
+ console.error(errorMsg);
41
+ }
42
+ return null;
43
+ }
44
+ try {
45
+ const dataObject = new dataObject_1.DataObject(this.config.supabaseConfig, options, this.config.errorHandler);
46
+ const storedDataObject = {
47
+ id: name,
48
+ name,
49
+ options,
50
+ dataObject,
51
+ createdAt: new Date()
52
+ };
53
+ this.dataObjects.set(name, storedDataObject);
54
+ this.eventEmitter.fire(Array.from(this.dataObjects.values()));
55
+ const successMsg = `Data object '${name}' created successfully!`;
56
+ if (this.config.errorHandler?.onInfo) {
57
+ this.config.errorHandler.onInfo(successMsg);
58
+ }
59
+ else {
60
+ console.info(successMsg);
61
+ }
62
+ return dataObject;
63
+ }
64
+ catch (error) {
65
+ const errorMsg = `Error creating data object '${name}': ${error}`;
66
+ if (this.config.errorHandler?.onError) {
67
+ this.config.errorHandler.onError(errorMsg);
68
+ }
69
+ else {
70
+ console.error(errorMsg);
71
+ }
72
+ return null;
73
+ }
74
+ }
75
+ getDataObjectById(id) {
76
+ const storedDataObject = this.dataObjects.get(id);
77
+ return storedDataObject ? storedDataObject.dataObject : null;
78
+ }
79
+ getAllDataObjects() {
80
+ return Array.from(this.dataObjects.values());
81
+ }
82
+ removeDataObject(id) {
83
+ const storedDataObject = this.dataObjects.get(id);
84
+ if (storedDataObject) {
85
+ storedDataObject.dataObject.dispose();
86
+ this.dataObjects.delete(id);
87
+ this.eventEmitter.fire(Array.from(this.dataObjects.values()));
88
+ const successMsg = `Data object '${id}' removed successfully!`;
89
+ if (this.config.errorHandler?.onInfo) {
90
+ this.config.errorHandler.onInfo(successMsg);
91
+ }
92
+ else {
93
+ console.info(successMsg);
94
+ }
95
+ return true;
96
+ }
97
+ return false;
98
+ }
99
+ async refreshDataObject(id) {
100
+ const storedDataObject = this.dataObjects.get(id);
101
+ if (storedDataObject) {
102
+ try {
103
+ await storedDataObject.dataObject.refresh();
104
+ return true;
105
+ }
106
+ catch (error) {
107
+ const errorMsg = `Error refreshing data object '${id}': ${error}`;
108
+ if (this.config.errorHandler?.onError) {
109
+ this.config.errorHandler.onError(errorMsg);
110
+ }
111
+ else {
112
+ console.error(errorMsg);
113
+ }
114
+ return false;
115
+ }
116
+ }
117
+ return false;
118
+ }
119
+ clearAllDataObjects() {
120
+ this.dataObjects.forEach(storedDataObject => {
121
+ storedDataObject.dataObject.dispose();
122
+ });
123
+ this.dataObjects.clear();
124
+ this.eventEmitter.fire([]);
125
+ }
126
+ dispose() {
127
+ this.clearAllDataObjects();
128
+ this.eventEmitter.dispose();
129
+ }
130
+ updateConfig(config) {
131
+ this.config = config;
132
+ }
133
+ getConfig() {
134
+ return { ...this.config };
135
+ }
136
+ }
137
+ exports.DataObjectManager = DataObjectManager;
138
+ // Global functions that can be used anywhere
139
+ function getDataObjectById(id) {
140
+ try {
141
+ const manager = DataObjectManager.getInstance();
142
+ return manager.getDataObjectById(id);
143
+ }
144
+ catch (error) {
145
+ console.error('DataObjectManager not initialized:', error);
146
+ return null;
147
+ }
148
+ }
149
+ async function createDataObject(name, options) {
150
+ try {
151
+ const manager = DataObjectManager.getInstance();
152
+ return await manager.createDataObject(name, options);
153
+ }
154
+ catch (error) {
155
+ console.error('DataObjectManager not initialized:', error);
156
+ return null;
157
+ }
158
+ }
159
+ function getAllDataObjects() {
160
+ try {
161
+ const manager = DataObjectManager.getInstance();
162
+ return manager.getAllDataObjects();
163
+ }
164
+ catch (error) {
165
+ console.error('DataObjectManager not initialized:', error);
166
+ return [];
167
+ }
168
+ }
169
+ function removeDataObject(id) {
170
+ try {
171
+ const manager = DataObjectManager.getInstance();
172
+ return manager.removeDataObject(id);
173
+ }
174
+ catch (error) {
175
+ console.error('DataObjectManager not initialized:', error);
176
+ return false;
177
+ }
178
+ }
179
+ async function refreshDataObject(id) {
180
+ try {
181
+ const manager = DataObjectManager.getInstance();
182
+ return await manager.refreshDataObject(id);
183
+ }
184
+ catch (error) {
185
+ console.error('DataObjectManager not initialized:', error);
186
+ return false;
187
+ }
188
+ }
189
+ //# sourceMappingURL=dataObjectManager.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"dataObjectManager.js","sourceRoot":"","sources":["../src/dataObjectManager.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,23 @@
1
+ /**
2
+ * Simple event emitter implementation to replace VSCode's EventEmitter
3
+ */
4
+ export declare class EventEmitter<T> {
5
+ private listeners;
6
+ /**
7
+ * Add a listener for the event
8
+ */
9
+ on(listener: (data: T) => void): () => void;
10
+ /**
11
+ * Fire the event to all listeners
12
+ */
13
+ fire(data: T): void;
14
+ /**
15
+ * Remove all listeners
16
+ */
17
+ dispose(): void;
18
+ /**
19
+ * Get the event interface for external use
20
+ */
21
+ get event(): (listener: (data: T) => void) => () => void;
22
+ }
23
+ //# sourceMappingURL=eventEmitter.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"eventEmitter.d.ts","sourceRoot":"","sources":["../src/eventEmitter.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,qBAAa,YAAY,CAAC,CAAC;IACvB,OAAO,CAAC,SAAS,CAAgC;IAEjD;;OAEG;IACI,EAAE,CAAC,QAAQ,EAAE,CAAC,IAAI,EAAE,CAAC,KAAK,IAAI,GAAG,MAAM,IAAI;IAYlD;;OAEG;IACI,IAAI,CAAC,IAAI,EAAE,CAAC,GAAG,IAAI;IAU1B;;OAEG;IACI,OAAO,IAAI,IAAI;IAItB;;OAEG;IACH,IAAW,KAAK,IAAI,CAAC,QAAQ,EAAE,CAAC,IAAI,EAAE,CAAC,KAAK,IAAI,KAAK,MAAM,IAAI,CAE9D;CACJ"}
@@ -0,0 +1,51 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.EventEmitter = void 0;
4
+ /**
5
+ * Simple event emitter implementation to replace VSCode's EventEmitter
6
+ */
7
+ class EventEmitter {
8
+ constructor() {
9
+ this.listeners = [];
10
+ }
11
+ /**
12
+ * Add a listener for the event
13
+ */
14
+ on(listener) {
15
+ this.listeners.push(listener);
16
+ // Return a dispose function
17
+ return () => {
18
+ const index = this.listeners.indexOf(listener);
19
+ if (index !== -1) {
20
+ this.listeners.splice(index, 1);
21
+ }
22
+ };
23
+ }
24
+ /**
25
+ * Fire the event to all listeners
26
+ */
27
+ fire(data) {
28
+ this.listeners.forEach(listener => {
29
+ try {
30
+ listener(data);
31
+ }
32
+ catch (error) {
33
+ console.error('Error in event listener:', error);
34
+ }
35
+ });
36
+ }
37
+ /**
38
+ * Remove all listeners
39
+ */
40
+ dispose() {
41
+ this.listeners = [];
42
+ }
43
+ /**
44
+ * Get the event interface for external use
45
+ */
46
+ get event() {
47
+ return this.on.bind(this);
48
+ }
49
+ }
50
+ exports.EventEmitter = EventEmitter;
51
+ //# sourceMappingURL=eventEmitter.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"eventEmitter.js","sourceRoot":"","sources":["../src/eventEmitter.ts"],"names":[],"mappings":";;;AAAA;;GAEG;AACH,MAAa,YAAY;IAAzB;QACY,cAAS,GAA6B,EAAE,CAAC;IA2CrD,CAAC;IAzCG;;OAEG;IACI,EAAE,CAAC,QAA2B;QACjC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;QAE9B,4BAA4B;QAC5B,OAAO,GAAG,EAAE;YACR,MAAM,KAAK,GAAG,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;YAC/C,IAAI,KAAK,KAAK,CAAC,CAAC,EAAE,CAAC;gBACf,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC;YACpC,CAAC;QACL,CAAC,CAAC;IACN,CAAC;IAED;;OAEG;IACI,IAAI,CAAC,IAAO;QACf,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,QAAQ,CAAC,EAAE;YAC9B,IAAI,CAAC;gBACD,QAAQ,CAAC,IAAI,CAAC,CAAC;YACnB,CAAC;YAAC,OAAO,KAAK,EAAE,CAAC;gBACb,OAAO,CAAC,KAAK,CAAC,0BAA0B,EAAE,KAAK,CAAC,CAAC;YACrD,CAAC;QACL,CAAC,CAAC,CAAC;IACP,CAAC;IAED;;OAEG;IACI,OAAO;QACV,IAAI,CAAC,SAAS,GAAG,EAAE,CAAC;IACxB,CAAC;IAED;;OAEG;IACH,IAAW,KAAK;QACZ,OAAO,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAC9B,CAAC;CACJ;AA5CD,oCA4CC"}
@@ -0,0 +1,10 @@
1
+ export { DataObject, createDataObject as createDataObjectDirect } from './dataObject';
2
+ export { DataObjectManager, DataObjectManagerConfig } from './dataObjectManager';
3
+ export { EventEmitter } from './eventEmitter';
4
+ export { getDataObjectById, createDataObject, getAllDataObjects, removeDataObject, refreshDataObject } from './dataObjectManager';
5
+ export type { DataObjectFieldType, SupportedOperator, DataObjectField, SortConfig, WhereClause, DataObjectOptions, SupabaseConfig, DataObjectRecord, NamedDataObjectOptions, StoredDataObject } from './types';
6
+ export type { DataObjectErrorHandler } from './dataObject';
7
+ import { DataObjectManager, DataObjectManagerConfig } from './dataObjectManager';
8
+ export declare function initializeDataObjectManager(config: DataObjectManagerConfig): DataObjectManager;
9
+ export declare function updateDataObjectManagerConfig(config: DataObjectManagerConfig): void;
10
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,UAAU,EAAE,gBAAgB,IAAI,sBAAsB,EAAE,MAAM,cAAc,CAAC;AACtF,OAAO,EAAE,iBAAiB,EAAE,uBAAuB,EAAE,MAAM,qBAAqB,CAAC;AACjF,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAG9C,OAAO,EACH,iBAAiB,EACjB,gBAAgB,EAChB,iBAAiB,EACjB,gBAAgB,EAChB,iBAAiB,EACpB,MAAM,qBAAqB,CAAC;AAG7B,YAAY,EACR,mBAAmB,EACnB,iBAAiB,EACjB,eAAe,EACf,UAAU,EACV,WAAW,EACX,iBAAiB,EACjB,cAAc,EACd,gBAAgB,EAChB,sBAAsB,EACtB,gBAAgB,EACnB,MAAM,SAAS,CAAC;AAEjB,YAAY,EAAE,sBAAsB,EAAE,MAAM,cAAc,CAAC;AAG3D,OAAO,EAAE,iBAAiB,EAAE,uBAAuB,EAAE,MAAM,qBAAqB,CAAC;AAEjF,wBAAgB,2BAA2B,CAAC,MAAM,EAAE,uBAAuB,GAAG,iBAAiB,CAE9F;AAED,wBAAgB,6BAA6B,CAAC,MAAM,EAAE,uBAAuB,GAAG,IAAI,CAEnF"}
package/dist/index.js ADDED
@@ -0,0 +1,30 @@
1
+ "use strict";
2
+ // Main exports for the supabase-dataobject-core package
3
+ Object.defineProperty(exports, "__esModule", { value: true });
4
+ exports.refreshDataObject = exports.removeDataObject = exports.getAllDataObjects = exports.createDataObject = exports.getDataObjectById = exports.EventEmitter = exports.DataObjectManager = exports.createDataObjectDirect = exports.DataObject = void 0;
5
+ exports.initializeDataObjectManager = initializeDataObjectManager;
6
+ exports.updateDataObjectManagerConfig = updateDataObjectManagerConfig;
7
+ // Core classes
8
+ var dataObject_1 = require("./dataObject");
9
+ Object.defineProperty(exports, "DataObject", { enumerable: true, get: function () { return dataObject_1.DataObject; } });
10
+ Object.defineProperty(exports, "createDataObjectDirect", { enumerable: true, get: function () { return dataObject_1.createDataObject; } });
11
+ var dataObjectManager_1 = require("./dataObjectManager");
12
+ Object.defineProperty(exports, "DataObjectManager", { enumerable: true, get: function () { return dataObjectManager_1.DataObjectManager; } });
13
+ var eventEmitter_1 = require("./eventEmitter");
14
+ Object.defineProperty(exports, "EventEmitter", { enumerable: true, get: function () { return eventEmitter_1.EventEmitter; } });
15
+ // Global convenience functions
16
+ var dataObjectManager_2 = require("./dataObjectManager");
17
+ Object.defineProperty(exports, "getDataObjectById", { enumerable: true, get: function () { return dataObjectManager_2.getDataObjectById; } });
18
+ Object.defineProperty(exports, "createDataObject", { enumerable: true, get: function () { return dataObjectManager_2.createDataObject; } });
19
+ Object.defineProperty(exports, "getAllDataObjects", { enumerable: true, get: function () { return dataObjectManager_2.getAllDataObjects; } });
20
+ Object.defineProperty(exports, "removeDataObject", { enumerable: true, get: function () { return dataObjectManager_2.removeDataObject; } });
21
+ Object.defineProperty(exports, "refreshDataObject", { enumerable: true, get: function () { return dataObjectManager_2.refreshDataObject; } });
22
+ // Utility functions for initialization
23
+ const dataObjectManager_3 = require("./dataObjectManager");
24
+ function initializeDataObjectManager(config) {
25
+ return dataObjectManager_3.DataObjectManager.getInstance(config);
26
+ }
27
+ function updateDataObjectManagerConfig(config) {
28
+ dataObjectManager_3.DataObjectManager.setConfig(config);
29
+ }
30
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AAAA,wDAAwD;;;AAmCxD,kEAEC;AAED,sEAEC;AAvCD,eAAe;AACf,2CAAsF;AAA7E,wGAAA,UAAU,OAAA;AAAE,oHAAA,gBAAgB,OAA0B;AAC/D,yDAAiF;AAAxE,sHAAA,iBAAiB,OAAA;AAC1B,+CAA8C;AAArC,4GAAA,YAAY,OAAA;AAErB,+BAA+B;AAC/B,yDAM6B;AALzB,sHAAA,iBAAiB,OAAA;AACjB,qHAAA,gBAAgB,OAAA;AAChB,sHAAA,iBAAiB,OAAA;AACjB,qHAAA,gBAAgB,OAAA;AAChB,sHAAA,iBAAiB,OAAA;AAmBrB,uCAAuC;AACvC,2DAAiF;AAEjF,SAAgB,2BAA2B,CAAC,MAA+B;IACvE,OAAO,qCAAiB,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC;AACjD,CAAC;AAED,SAAgB,6BAA6B,CAAC,MAA+B;IACzE,qCAAiB,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC;AACxC,CAAC"}
@@ -0,0 +1,44 @@
1
+ export type DataObjectFieldType = 'string' | 'bit' | 'Date' | 'number';
2
+ export type SupportedOperator = 'equals' | 'notequals' | 'greaterthan' | 'lessthan';
3
+ export interface DataObjectField {
4
+ name: string;
5
+ type: DataObjectFieldType;
6
+ }
7
+ export interface SortConfig {
8
+ field: string;
9
+ direction: 'asc' | 'desc';
10
+ }
11
+ export interface WhereClause {
12
+ field: string;
13
+ operator: SupportedOperator;
14
+ value: any;
15
+ }
16
+ export interface DataObjectOptions {
17
+ viewName: string;
18
+ fields?: DataObjectField[];
19
+ whereClauses?: WhereClause[];
20
+ sort?: SortConfig;
21
+ recordLimit?: number;
22
+ canInsert?: boolean;
23
+ canUpdate?: boolean;
24
+ canDelete?: boolean;
25
+ }
26
+ export interface SupabaseConfig {
27
+ url: string;
28
+ anonKey: string;
29
+ projectName?: string;
30
+ }
31
+ export interface DataObjectRecord {
32
+ [key: string]: any;
33
+ }
34
+ export interface NamedDataObjectOptions extends DataObjectOptions {
35
+ name: string;
36
+ }
37
+ export interface StoredDataObject {
38
+ id: string;
39
+ name: string;
40
+ options: DataObjectOptions;
41
+ dataObject: any;
42
+ createdAt: Date;
43
+ }
44
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,mBAAmB,GAAG,QAAQ,GAAG,KAAK,GAAG,MAAM,GAAG,QAAQ,CAAC;AAEvE,MAAM,MAAM,iBAAiB,GAAG,QAAQ,GAAG,WAAW,GAAG,aAAa,GAAG,UAAU,CAAC;AAEpF,MAAM,WAAW,eAAe;IAC5B,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,mBAAmB,CAAC;CAC7B;AAED,MAAM,WAAW,UAAU;IACvB,KAAK,EAAE,MAAM,CAAC;IACd,SAAS,EAAE,KAAK,GAAG,MAAM,CAAC;CAC7B;AAED,MAAM,WAAW,WAAW;IACxB,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,EAAE,iBAAiB,CAAC;IAC5B,KAAK,EAAE,GAAG,CAAC;CACd;AAED,MAAM,WAAW,iBAAiB;IAC9B,QAAQ,EAAE,MAAM,CAAC;IACjB,MAAM,CAAC,EAAE,eAAe,EAAE,CAAC;IAC3B,YAAY,CAAC,EAAE,WAAW,EAAE,CAAC;IAC7B,IAAI,CAAC,EAAE,UAAU,CAAC;IAClB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,SAAS,CAAC,EAAE,OAAO,CAAC;CACvB;AAED,MAAM,WAAW,cAAc;IAC3B,GAAG,EAAE,MAAM,CAAC;IACZ,OAAO,EAAE,MAAM,CAAC;IAChB,WAAW,CAAC,EAAE,MAAM,CAAC;CACxB;AAED,MAAM,WAAW,gBAAgB;IAC7B,CAAC,GAAG,EAAE,MAAM,GAAG,GAAG,CAAC;CACtB;AAED,MAAM,WAAW,sBAAuB,SAAQ,iBAAiB;IAC7D,IAAI,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,WAAW,gBAAgB;IAC7B,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,iBAAiB,CAAC;IAC3B,UAAU,EAAE,GAAG,CAAC;IAChB,SAAS,EAAE,IAAI,CAAC;CACnB"}
package/dist/types.js ADDED
@@ -0,0 +1,3 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":""}
package/package.json ADDED
@@ -0,0 +1,54 @@
1
+ {
2
+ "name": "supabase-dataobject-core",
3
+ "version": "1.0.0",
4
+ "description": "Core library for creating reactive data objects from Supabase tables and views",
5
+ "main": "dist/index.js",
6
+ "types": "dist/index.d.ts",
7
+ "scripts": {
8
+ "build": "tsc",
9
+ "watch": "tsc --watch",
10
+ "prepublishOnly": "npm run build",
11
+ "test": "jest",
12
+ "lint": "eslint src --ext .ts",
13
+ "clean": "rimraf dist"
14
+ },
15
+ "keywords": [
16
+ "supabase",
17
+ "database",
18
+ "reactive",
19
+ "data",
20
+ "crud",
21
+ "typescript",
22
+ "orm"
23
+ ],
24
+ "author": "BHDesign",
25
+ "license": "MIT",
26
+ "repository": {
27
+ "type": "git",
28
+ "url": "https://github.com/Baileyhall3/supabase-dataobject-core"
29
+ },
30
+ "bugs": {
31
+ "url": "https://github.com/Baileyhall3/supabase-dataobject-core/issues"
32
+ },
33
+ "homepage": "https://github.com/Baileyhall3/supabase-dataobject-core#readme",
34
+ "files": [
35
+ "dist",
36
+ "README.md",
37
+ "LICENSE"
38
+ ],
39
+ "dependencies": {
40
+ "@supabase/supabase-js": "^2.50.0"
41
+ },
42
+ "devDependencies": {
43
+ "@types/node": "^20.0.0",
44
+ "@typescript-eslint/eslint-plugin": "^6.0.0",
45
+ "@typescript-eslint/parser": "^6.0.0",
46
+ "eslint": "^8.0.0",
47
+ "jest": "^29.0.0",
48
+ "rimraf": "^5.0.0",
49
+ "typescript": "^5.0.0"
50
+ },
51
+ "engines": {
52
+ "node": ">=16.0.0"
53
+ }
54
+ }