hazo_connect 1.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (53) hide show
  1. package/dist/__tests__/factory.test.d.ts +2 -0
  2. package/dist/__tests__/factory.test.d.ts.map +1 -0
  3. package/dist/__tests__/factory.test.js +45 -0
  4. package/dist/__tests__/factory.test.js.map +1 -0
  5. package/dist/__tests__/postgrest_adapter.test.d.ts +2 -0
  6. package/dist/__tests__/postgrest_adapter.test.d.ts.map +1 -0
  7. package/dist/__tests__/postgrest_adapter.test.js +32 -0
  8. package/dist/__tests__/postgrest_adapter.test.js.map +1 -0
  9. package/dist/__tests__/query_builder.test.d.ts +2 -0
  10. package/dist/__tests__/query_builder.test.d.ts.map +1 -0
  11. package/dist/__tests__/query_builder.test.js +35 -0
  12. package/dist/__tests__/query_builder.test.js.map +1 -0
  13. package/dist/adapters/base-adapter.d.ts +69 -0
  14. package/dist/adapters/base-adapter.d.ts.map +1 -0
  15. package/dist/adapters/base-adapter.js +121 -0
  16. package/dist/adapters/base-adapter.js.map +1 -0
  17. package/dist/adapters/file-adapter.d.ts +50 -0
  18. package/dist/adapters/file-adapter.d.ts.map +1 -0
  19. package/dist/adapters/file-adapter.js +62 -0
  20. package/dist/adapters/file-adapter.js.map +1 -0
  21. package/dist/adapters/postgrest-adapter.d.ts +60 -0
  22. package/dist/adapters/postgrest-adapter.d.ts.map +1 -0
  23. package/dist/adapters/postgrest-adapter.js +252 -0
  24. package/dist/adapters/postgrest-adapter.js.map +1 -0
  25. package/dist/adapters/sqlite-adapter.d.ts +49 -0
  26. package/dist/adapters/sqlite-adapter.d.ts.map +1 -0
  27. package/dist/adapters/sqlite-adapter.js +61 -0
  28. package/dist/adapters/sqlite-adapter.js.map +1 -0
  29. package/dist/adapters/supabase-adapter.d.ts +50 -0
  30. package/dist/adapters/supabase-adapter.d.ts.map +1 -0
  31. package/dist/adapters/supabase-adapter.js +62 -0
  32. package/dist/adapters/supabase-adapter.js.map +1 -0
  33. package/dist/factory.d.ts +15 -0
  34. package/dist/factory.d.ts.map +1 -0
  35. package/dist/factory.js +89 -0
  36. package/dist/factory.js.map +1 -0
  37. package/dist/helpers.d.ts +76 -0
  38. package/dist/helpers.d.ts.map +1 -0
  39. package/dist/helpers.js +151 -0
  40. package/dist/helpers.js.map +1 -0
  41. package/dist/index.d.ts +15 -0
  42. package/dist/index.d.ts.map +1 -0
  43. package/dist/index.js +30 -0
  44. package/dist/index.js.map +1 -0
  45. package/dist/query-builder.d.ts +143 -0
  46. package/dist/query-builder.d.ts.map +1 -0
  47. package/dist/query-builder.js +216 -0
  48. package/dist/query-builder.js.map +1 -0
  49. package/dist/types.d.ts +117 -0
  50. package/dist/types.d.ts.map +1 -0
  51. package/dist/types.js +33 -0
  52. package/dist/types.js.map +1 -0
  53. package/package.json +73 -0
@@ -0,0 +1,252 @@
1
+ "use strict";
2
+ /**
3
+ * Purpose: PostgREST adapter implementation
4
+ *
5
+ * This adapter converts QueryBuilder to PostgREST URL format and executes queries.
6
+ * Uses injected config and logger (no file reading or project dependencies).
7
+ * Zero dependencies - only Node.js built-ins (fetch) and types.
8
+ */
9
+ Object.defineProperty(exports, "__esModule", { value: true });
10
+ exports.PostgrestAdapter = void 0;
11
+ const base_adapter_1 = require("./base-adapter");
12
+ const types_1 = require("../types");
13
+ /**
14
+ * PostgREST adapter implementation
15
+ */
16
+ class PostgrestAdapter extends base_adapter_1.BaseAdapter {
17
+ /**
18
+ * Constructor
19
+ * @param config - PostgREST configuration (must include postgrest.base_url and postgrest.api_key)
20
+ * @param logger - Optional logger instance
21
+ */
22
+ constructor(config, logger) {
23
+ super(config, logger);
24
+ // Extract PostgREST-specific config
25
+ this.postgrestConfig = config.postgrest || config;
26
+ // Validate required fields in postgrestConfig, not the main config
27
+ if (!this.postgrestConfig.base_url || !this.postgrestConfig.api_key) {
28
+ this.throwError(types_1.ErrorCode.CONFIG_ERROR, 'PostgREST base_url and api_key are required in configuration');
29
+ }
30
+ // Ensure base_url doesn't end with /
31
+ if (this.postgrestConfig.base_url.endsWith('/')) {
32
+ this.postgrestConfig.base_url = this.postgrestConfig.base_url.slice(0, -1);
33
+ }
34
+ }
35
+ /**
36
+ * Convert QueryBuilder to PostgREST URL
37
+ * @param builder - QueryBuilder instance
38
+ * @returns PostgREST endpoint URL with query parameters
39
+ */
40
+ buildPostgrestUrl(builder) {
41
+ const table = builder.getTable();
42
+ if (!table) {
43
+ this.throwError(types_1.ErrorCode.VALIDATION_ERROR, 'Table name is required');
44
+ }
45
+ const params = [];
46
+ // Select fields
47
+ const selectFields = builder.getSelectFields();
48
+ const nestedSelects = builder.getNestedSelects();
49
+ if (selectFields.length > 0 || nestedSelects.length > 0) {
50
+ const selectParts = [];
51
+ // Add regular select fields
52
+ if (selectFields.length > 0) {
53
+ selectParts.push(...selectFields);
54
+ }
55
+ // Add nested selects (PostgREST syntax: table:related_table(field1,field2))
56
+ if (nestedSelects.length > 0) {
57
+ const nestedParts = nestedSelects.map(ns => {
58
+ const fields = ns.fields.join(',');
59
+ return `${table}:${ns.table}(${fields})`;
60
+ });
61
+ selectParts.push(...nestedParts);
62
+ }
63
+ if (selectParts.length > 0) {
64
+ params.push(`select=${encodeURIComponent(selectParts.join(','))}`);
65
+ }
66
+ }
67
+ // Where conditions
68
+ const whereConditions = builder.getWhereConditions();
69
+ for (const condition of whereConditions) {
70
+ const { field, operator, value } = condition;
71
+ let paramValue;
72
+ if (operator === 'in') {
73
+ // IN operator: field=in.(value1,value2)
74
+ const values = Array.isArray(value) ? value : [value];
75
+ paramValue = `in.(${values.map(v => String(v)).join(',')})`;
76
+ }
77
+ else if (operator === 'is') {
78
+ // IS operator: field=is.null or field=is.not.null
79
+ paramValue = value === null || value === 'null' ? 'is.null' : 'is.not.null';
80
+ }
81
+ else {
82
+ // Standard operators: field=operator.value
83
+ paramValue = `${operator}.${String(value)}`;
84
+ }
85
+ params.push(`${field}=${encodeURIComponent(paramValue)}`);
86
+ }
87
+ // OR conditions
88
+ const whereOrConditions = builder.getWhereOrConditions();
89
+ if (whereOrConditions.length > 0) {
90
+ const orParts = [];
91
+ for (const orGroup of whereOrConditions) {
92
+ const groupParts = orGroup.map(condition => {
93
+ const { field, operator, value } = condition;
94
+ if (operator === 'in') {
95
+ const values = Array.isArray(value) ? value : [value];
96
+ return `${field}.in.(${values.map(v => String(v)).join(',')})`;
97
+ }
98
+ else if (operator === 'is') {
99
+ return `${field}.is.${value === null || value === 'null' ? 'null' : 'not.null'}`;
100
+ }
101
+ else {
102
+ return `${field}.${operator}.${String(value)}`;
103
+ }
104
+ });
105
+ orParts.push(`(${groupParts.join(',')})`);
106
+ }
107
+ params.push(`or=${encodeURIComponent(orParts.join(','))}`);
108
+ }
109
+ // Order by
110
+ const orderBy = builder.getOrderBy();
111
+ if (orderBy.length > 0) {
112
+ const orderParts = orderBy.map(o => `${o.field}.${o.direction}`);
113
+ params.push(`order=${encodeURIComponent(orderParts.join(','))}`);
114
+ }
115
+ // Limit
116
+ const limit = builder.getLimit();
117
+ if (limit !== null) {
118
+ params.push(`limit=${limit}`);
119
+ }
120
+ // Offset
121
+ const offset = builder.getOffset();
122
+ if (offset !== null) {
123
+ params.push(`offset=${offset}`);
124
+ }
125
+ // Build final URL
126
+ const queryString = params.length > 0 ? `?${params.join('&')}` : '';
127
+ return `/${table}${queryString}`;
128
+ }
129
+ /**
130
+ * Execute a query using the query builder
131
+ * @param builder - QueryBuilder instance
132
+ * @param method - HTTP method
133
+ * @param body - Request body for POST/PUT/PATCH
134
+ * @returns Promise with query results
135
+ */
136
+ async query(builder, method = 'GET', body) {
137
+ const endpoint = this.buildPostgrestUrl(builder);
138
+ this.logQuery('PostgREST query', {
139
+ method,
140
+ endpoint,
141
+ hasBody: !!body,
142
+ bodySize: body ? JSON.stringify(body).length : 0
143
+ });
144
+ return this.rawQuery(endpoint, {
145
+ method,
146
+ body: body ? JSON.stringify(body) : undefined,
147
+ headers: {
148
+ 'Content-Type': 'application/json',
149
+ 'Prefer': 'return=representation'
150
+ }
151
+ });
152
+ }
153
+ /**
154
+ * Execute a raw query (for backward compatibility)
155
+ * @param endpoint - Raw endpoint string (e.g., '/table?id=eq.123')
156
+ * @param options - Request options
157
+ * @returns Promise with query results
158
+ */
159
+ async rawQuery(endpoint, options = {}) {
160
+ const url = `${this.postgrestConfig.base_url}${endpoint}`;
161
+ const headers = {
162
+ 'Content-Type': 'application/json',
163
+ 'Authorization': `Bearer ${this.postgrestConfig.api_key}`,
164
+ ...options.headers,
165
+ };
166
+ // Log request (redact sensitive data)
167
+ this.logQuery('PostgREST raw query', {
168
+ url: url.replace(this.postgrestConfig.api_key, '...REDACTED...'),
169
+ method: options.method || 'GET',
170
+ hasBody: !!options.body
171
+ });
172
+ try {
173
+ const response = await fetch(url, { ...options, headers });
174
+ if (!response.ok) {
175
+ const errorData = await response.text();
176
+ const parsedDetails = this.parseErrorPayload(errorData);
177
+ const sanitizedUrl = this.sanitizeUrl(url);
178
+ const friendlyMessage = this.buildFriendlyErrorMessage(response.status, response.statusText, endpoint, parsedDetails, sanitizedUrl);
179
+ this.logger.error('PostgREST request failed', {
180
+ status: response.status,
181
+ statusText: response.statusText,
182
+ error: parsedDetails ?? errorData,
183
+ url: sanitizedUrl
184
+ });
185
+ this.throwError(types_1.ErrorCode.QUERY_ERROR, friendlyMessage, response.status, parsedDetails ?? errorData);
186
+ }
187
+ // Handle empty response
188
+ const responseBody = await response.text();
189
+ if (!responseBody) {
190
+ return null;
191
+ }
192
+ const parsedData = JSON.parse(responseBody);
193
+ // Log successful response
194
+ this.logger.info('PostgREST request succeeded', {
195
+ status: response.status,
196
+ dataType: Array.isArray(parsedData) ? 'array' : typeof parsedData,
197
+ dataLength: Array.isArray(parsedData) ? parsedData.length : 1
198
+ });
199
+ return parsedData;
200
+ }
201
+ catch (error) {
202
+ // Handle connection errors
203
+ if (this.isConnectionError(error)) {
204
+ this.throwError(types_1.ErrorCode.CONNECTION_FAILED, 'Lost connection to database', undefined, error);
205
+ }
206
+ // Re-throw with error code if not already set
207
+ if (error.code) {
208
+ throw error;
209
+ }
210
+ this.throwError(types_1.ErrorCode.QUERY_ERROR, `PostgREST request error: ${error.message || String(error)}`, undefined, error);
211
+ }
212
+ }
213
+ /**
214
+ * Get the adapter's configuration
215
+ * @returns Promise with adapter-specific config
216
+ */
217
+ async getConfig() {
218
+ return Promise.resolve(this.postgrestConfig);
219
+ }
220
+ parseErrorPayload(raw) {
221
+ if (!raw) {
222
+ return undefined;
223
+ }
224
+ try {
225
+ return JSON.parse(raw);
226
+ }
227
+ catch {
228
+ return raw;
229
+ }
230
+ }
231
+ buildFriendlyErrorMessage(status, statusText, endpoint, parsedDetails, sanitizedUrl) {
232
+ const resource = endpoint.replace(/^\//, '').split('?')[0] || 'resource';
233
+ const detailMessage = parsedDetails && typeof parsedDetails === 'object' && parsedDetails.message
234
+ ? ` Details: ${parsedDetails.message}`
235
+ : '';
236
+ const requestInfo = ` Request: ${sanitizedUrl}`;
237
+ if (status === 404) {
238
+ return `PostgREST could not find resource '${resource}'. Verify the table or view name and ensure the schema is correct. (${statusText}).${detailMessage}${requestInfo}`;
239
+ }
240
+ if (status === 401) {
241
+ return `PostgREST rejected the request (401 Unauthorized). Check that the provided API key has access to '${resource}'.${detailMessage}${requestInfo}`;
242
+ }
243
+ return `PostgREST request failed (${status} ${statusText}).${detailMessage}${requestInfo}`;
244
+ }
245
+ sanitizeUrl(url) {
246
+ return this.postgrestConfig.api_key
247
+ ? url.replace(this.postgrestConfig.api_key, '...REDACTED...')
248
+ : url;
249
+ }
250
+ }
251
+ exports.PostgrestAdapter = PostgrestAdapter;
252
+ //# sourceMappingURL=postgrest-adapter.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"postgrest-adapter.js","sourceRoot":"","sources":["../../src/lib/adapters/postgrest-adapter.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,49 @@
1
+ /**
2
+ * Purpose: SQLite adapter stub
3
+ *
4
+ * This adapter will support SQLite database connections.
5
+ * Currently returns NotImplementedError.
6
+ *
7
+ * Expected config structure:
8
+ * {
9
+ * sqlite: {
10
+ * database_path: string, // Path to SQLite database file
11
+ * read_only?: boolean // Optional read-only mode
12
+ * }
13
+ * }
14
+ */
15
+ import type { HazoConnectAdapter, Logger } from '../types';
16
+ import { BaseAdapter } from './base-adapter';
17
+ import { QueryBuilder } from '../query-builder';
18
+ /**
19
+ * SQLite adapter implementation (stub)
20
+ */
21
+ export declare class SqliteAdapter extends BaseAdapter implements HazoConnectAdapter {
22
+ /**
23
+ * Constructor
24
+ * @param config - SQLite configuration
25
+ * @param logger - Optional logger instance
26
+ */
27
+ constructor(config: any, logger?: Logger);
28
+ /**
29
+ * Execute a query using the query builder
30
+ * @param builder - QueryBuilder instance
31
+ * @param method - HTTP method
32
+ * @param body - Request body
33
+ * @returns Promise with query results
34
+ */
35
+ query(builder: QueryBuilder, method?: 'GET' | 'POST' | 'PUT' | 'PATCH' | 'DELETE', body?: any): Promise<any>;
36
+ /**
37
+ * Execute a raw query
38
+ * @param endpoint - Raw endpoint string (not applicable for SQLite)
39
+ * @param options - Request options
40
+ * @returns Promise with query results
41
+ */
42
+ rawQuery(endpoint: string, options?: RequestInit): Promise<any>;
43
+ /**
44
+ * Get the adapter's configuration
45
+ * @returns Promise with adapter-specific config
46
+ */
47
+ getConfig(): Promise<any>;
48
+ }
49
+ //# sourceMappingURL=sqlite-adapter.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sqlite-adapter.d.ts","sourceRoot":"","sources":["../../src/lib/adapters/sqlite-adapter.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAEH,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,EAAE,MAAM,UAAU,CAAA;AAC1D,OAAO,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAA;AAC5C,OAAO,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAA;AAG/C;;GAEG;AACH,qBAAa,aAAc,SAAQ,WAAY,YAAW,kBAAkB;IAC1E;;;;OAIG;gBACS,MAAM,EAAE,GAAG,EAAE,MAAM,CAAC,EAAE,MAAM;IAKxC;;;;;;OAMG;IACG,KAAK,CACT,OAAO,EAAE,YAAY,EACrB,MAAM,GAAE,KAAK,GAAG,MAAM,GAAG,KAAK,GAAG,OAAO,GAAG,QAAgB,EAC3D,IAAI,CAAC,EAAE,GAAG,GACT,OAAO,CAAC,GAAG,CAAC;IAOf;;;;;OAKG;IACG,QAAQ,CAAC,QAAQ,EAAE,MAAM,EAAE,OAAO,GAAE,WAAgB,GAAG,OAAO,CAAC,GAAG,CAAC;IAOzE;;;OAGG;IACG,SAAS,IAAI,OAAO,CAAC,GAAG,CAAC;CAGhC"}
@@ -0,0 +1,61 @@
1
+ "use strict";
2
+ /**
3
+ * Purpose: SQLite adapter stub
4
+ *
5
+ * This adapter will support SQLite database connections.
6
+ * Currently returns NotImplementedError.
7
+ *
8
+ * Expected config structure:
9
+ * {
10
+ * sqlite: {
11
+ * database_path: string, // Path to SQLite database file
12
+ * read_only?: boolean // Optional read-only mode
13
+ * }
14
+ * }
15
+ */
16
+ Object.defineProperty(exports, "__esModule", { value: true });
17
+ exports.SqliteAdapter = void 0;
18
+ const base_adapter_1 = require("./base-adapter");
19
+ const types_1 = require("../types");
20
+ /**
21
+ * SQLite adapter implementation (stub)
22
+ */
23
+ class SqliteAdapter extends base_adapter_1.BaseAdapter {
24
+ /**
25
+ * Constructor
26
+ * @param config - SQLite configuration
27
+ * @param logger - Optional logger instance
28
+ */
29
+ constructor(config, logger) {
30
+ super(config, logger);
31
+ // TODO: Validate SQLite config when implemented
32
+ }
33
+ /**
34
+ * Execute a query using the query builder
35
+ * @param builder - QueryBuilder instance
36
+ * @param method - HTTP method
37
+ * @param body - Request body
38
+ * @returns Promise with query results
39
+ */
40
+ async query(builder, method = 'GET', body) {
41
+ this.throwError(types_1.ErrorCode.NOT_IMPLEMENTED, 'SQLite adapter is not yet implemented. Please use PostgREST adapter for now.');
42
+ }
43
+ /**
44
+ * Execute a raw query
45
+ * @param endpoint - Raw endpoint string (not applicable for SQLite)
46
+ * @param options - Request options
47
+ * @returns Promise with query results
48
+ */
49
+ async rawQuery(endpoint, options = {}) {
50
+ this.throwError(types_1.ErrorCode.NOT_IMPLEMENTED, 'SQLite adapter is not yet implemented. Please use PostgREST adapter for now.');
51
+ }
52
+ /**
53
+ * Get the adapter's configuration
54
+ * @returns Promise with adapter-specific config
55
+ */
56
+ async getConfig() {
57
+ return Promise.resolve(this.config.sqlite || this.config);
58
+ }
59
+ }
60
+ exports.SqliteAdapter = SqliteAdapter;
61
+ //# sourceMappingURL=sqlite-adapter.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sqlite-adapter.js","sourceRoot":"","sources":["../../src/lib/adapters/sqlite-adapter.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;GAaG;;;AAGH,iDAA4C;AAE5C,oCAAoC;AAEpC;;GAEG;AACH,MAAa,aAAc,SAAQ,0BAAW;IAC5C;;;;OAIG;IACH,YAAY,MAAW,EAAE,MAAe;QACtC,KAAK,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;QACrB,gDAAgD;IAClD,CAAC;IAED;;;;;;OAMG;IACH,KAAK,CAAC,KAAK,CACT,OAAqB,EACrB,SAAsD,KAAK,EAC3D,IAAU;QAEV,IAAI,CAAC,UAAU,CACb,iBAAS,CAAC,eAAe,EACzB,8EAA8E,CAC/E,CAAA;IACH,CAAC;IAED;;;;;OAKG;IACH,KAAK,CAAC,QAAQ,CAAC,QAAgB,EAAE,UAAuB,EAAE;QACxD,IAAI,CAAC,UAAU,CACb,iBAAS,CAAC,eAAe,EACzB,8EAA8E,CAC/E,CAAA;IACH,CAAC;IAED;;;OAGG;IACH,KAAK,CAAC,SAAS;QACb,OAAO,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,IAAI,IAAI,CAAC,MAAM,CAAC,CAAA;IAC3D,CAAC;CACF;AAjDD,sCAiDC"}
@@ -0,0 +1,50 @@
1
+ /**
2
+ * Purpose: Supabase adapter stub
3
+ *
4
+ * This adapter will support Supabase database connections.
5
+ * Currently returns NotImplementedError.
6
+ *
7
+ * Expected config structure:
8
+ * {
9
+ * supabase: {
10
+ * url: string, // Supabase project URL
11
+ * anon_key: string, // Supabase anonymous key
12
+ * service_role_key?: string // Optional service role key
13
+ * }
14
+ * }
15
+ */
16
+ import type { HazoConnectAdapter, Logger } from '../types';
17
+ import { BaseAdapter } from './base-adapter';
18
+ import { QueryBuilder } from '../query-builder';
19
+ /**
20
+ * Supabase adapter implementation (stub)
21
+ */
22
+ export declare class SupabaseAdapter extends BaseAdapter implements HazoConnectAdapter {
23
+ /**
24
+ * Constructor
25
+ * @param config - Supabase configuration
26
+ * @param logger - Optional logger instance
27
+ */
28
+ constructor(config: any, logger?: Logger);
29
+ /**
30
+ * Execute a query using the query builder
31
+ * @param builder - QueryBuilder instance
32
+ * @param method - HTTP method
33
+ * @param body - Request body
34
+ * @returns Promise with query results
35
+ */
36
+ query(builder: QueryBuilder, method?: 'GET' | 'POST' | 'PUT' | 'PATCH' | 'DELETE', body?: any): Promise<any>;
37
+ /**
38
+ * Execute a raw query
39
+ * @param endpoint - Raw endpoint string
40
+ * @param options - Request options
41
+ * @returns Promise with query results
42
+ */
43
+ rawQuery(endpoint: string, options?: RequestInit): Promise<any>;
44
+ /**
45
+ * Get the adapter's configuration
46
+ * @returns Promise with adapter-specific config
47
+ */
48
+ getConfig(): Promise<any>;
49
+ }
50
+ //# sourceMappingURL=supabase-adapter.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"supabase-adapter.d.ts","sourceRoot":"","sources":["../../src/lib/adapters/supabase-adapter.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAEH,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,EAAE,MAAM,UAAU,CAAA;AAC1D,OAAO,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAA;AAC5C,OAAO,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAA;AAG/C;;GAEG;AACH,qBAAa,eAAgB,SAAQ,WAAY,YAAW,kBAAkB;IAC5E;;;;OAIG;gBACS,MAAM,EAAE,GAAG,EAAE,MAAM,CAAC,EAAE,MAAM;IAKxC;;;;;;OAMG;IACG,KAAK,CACT,OAAO,EAAE,YAAY,EACrB,MAAM,GAAE,KAAK,GAAG,MAAM,GAAG,KAAK,GAAG,OAAO,GAAG,QAAgB,EAC3D,IAAI,CAAC,EAAE,GAAG,GACT,OAAO,CAAC,GAAG,CAAC;IAOf;;;;;OAKG;IACG,QAAQ,CAAC,QAAQ,EAAE,MAAM,EAAE,OAAO,GAAE,WAAgB,GAAG,OAAO,CAAC,GAAG,CAAC;IAOzE;;;OAGG;IACG,SAAS,IAAI,OAAO,CAAC,GAAG,CAAC;CAGhC"}
@@ -0,0 +1,62 @@
1
+ "use strict";
2
+ /**
3
+ * Purpose: Supabase adapter stub
4
+ *
5
+ * This adapter will support Supabase database connections.
6
+ * Currently returns NotImplementedError.
7
+ *
8
+ * Expected config structure:
9
+ * {
10
+ * supabase: {
11
+ * url: string, // Supabase project URL
12
+ * anon_key: string, // Supabase anonymous key
13
+ * service_role_key?: string // Optional service role key
14
+ * }
15
+ * }
16
+ */
17
+ Object.defineProperty(exports, "__esModule", { value: true });
18
+ exports.SupabaseAdapter = void 0;
19
+ const base_adapter_1 = require("./base-adapter");
20
+ const types_1 = require("../types");
21
+ /**
22
+ * Supabase adapter implementation (stub)
23
+ */
24
+ class SupabaseAdapter extends base_adapter_1.BaseAdapter {
25
+ /**
26
+ * Constructor
27
+ * @param config - Supabase configuration
28
+ * @param logger - Optional logger instance
29
+ */
30
+ constructor(config, logger) {
31
+ super(config, logger);
32
+ // TODO: Validate Supabase config when implemented
33
+ }
34
+ /**
35
+ * Execute a query using the query builder
36
+ * @param builder - QueryBuilder instance
37
+ * @param method - HTTP method
38
+ * @param body - Request body
39
+ * @returns Promise with query results
40
+ */
41
+ async query(builder, method = 'GET', body) {
42
+ this.throwError(types_1.ErrorCode.NOT_IMPLEMENTED, 'Supabase adapter is not yet implemented. Please use PostgREST adapter for now.');
43
+ }
44
+ /**
45
+ * Execute a raw query
46
+ * @param endpoint - Raw endpoint string
47
+ * @param options - Request options
48
+ * @returns Promise with query results
49
+ */
50
+ async rawQuery(endpoint, options = {}) {
51
+ this.throwError(types_1.ErrorCode.NOT_IMPLEMENTED, 'Supabase adapter is not yet implemented. Please use PostgREST adapter for now.');
52
+ }
53
+ /**
54
+ * Get the adapter's configuration
55
+ * @returns Promise with adapter-specific config
56
+ */
57
+ async getConfig() {
58
+ return Promise.resolve(this.config.supabase || this.config);
59
+ }
60
+ }
61
+ exports.SupabaseAdapter = SupabaseAdapter;
62
+ //# sourceMappingURL=supabase-adapter.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"supabase-adapter.js","sourceRoot":"","sources":["../../src/lib/adapters/supabase-adapter.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;;GAcG;;;AAGH,iDAA4C;AAE5C,oCAAoC;AAEpC;;GAEG;AACH,MAAa,eAAgB,SAAQ,0BAAW;IAC9C;;;;OAIG;IACH,YAAY,MAAW,EAAE,MAAe;QACtC,KAAK,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;QACrB,kDAAkD;IACpD,CAAC;IAED;;;;;;OAMG;IACH,KAAK,CAAC,KAAK,CACT,OAAqB,EACrB,SAAsD,KAAK,EAC3D,IAAU;QAEV,IAAI,CAAC,UAAU,CACb,iBAAS,CAAC,eAAe,EACzB,gFAAgF,CACjF,CAAA;IACH,CAAC;IAED;;;;;OAKG;IACH,KAAK,CAAC,QAAQ,CAAC,QAAgB,EAAE,UAAuB,EAAE;QACxD,IAAI,CAAC,UAAU,CACb,iBAAS,CAAC,eAAe,EACzB,gFAAgF,CACjF,CAAA;IACH,CAAC;IAED;;;OAGG;IACH,KAAK,CAAC,SAAS;QACb,OAAO,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,QAAQ,IAAI,IAAI,CAAC,MAAM,CAAC,CAAA;IAC7D,CAAC;CACF;AAjDD,0CAiDC"}
@@ -0,0 +1,15 @@
1
+ /**
2
+ * Purpose: Factory function to create Hazo Connect adapter instances
3
+ *
4
+ * This file provides the factory function that creates the appropriate
5
+ * adapter based on configuration type.
6
+ * Zero dependencies - only uses types and adapters.
7
+ */
8
+ import type { HazoConnectConfig, HazoConnectAdapter } from './types';
9
+ /**
10
+ * Create a Hazo Connect adapter instance based on configuration
11
+ * @param config - Hazo Connect configuration (can include ConfigProvider or direct config)
12
+ * @returns Adapter instance implementing HazoConnectAdapter
13
+ */
14
+ export declare function createHazoConnect(config: HazoConnectConfig): HazoConnectAdapter;
15
+ //# sourceMappingURL=factory.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"factory.d.ts","sourceRoot":"","sources":["../src/lib/factory.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAIH,OAAO,KAAK,EAAE,iBAAiB,EAAE,kBAAkB,EAAE,MAAM,SAAS,CAAA;AAuCpE;;;;GAIG;AACH,wBAAgB,iBAAiB,CAAC,MAAM,EAAE,iBAAiB,GAAG,kBAAkB,CAqC/E"}
@@ -0,0 +1,89 @@
1
+ "use strict";
2
+ /**
3
+ * Purpose: Factory function to create Hazo Connect adapter instances
4
+ *
5
+ * This file provides the factory function that creates the appropriate
6
+ * adapter based on configuration type.
7
+ * Zero dependencies - only uses types and adapters.
8
+ */
9
+ var __importDefault = (this && this.__importDefault) || function (mod) {
10
+ return (mod && mod.__esModule) ? mod : { "default": mod };
11
+ };
12
+ Object.defineProperty(exports, "__esModule", { value: true });
13
+ exports.createHazoConnect = createHazoConnect;
14
+ const path_1 = __importDefault(require("path"));
15
+ const dotenv_1 = __importDefault(require("dotenv"));
16
+ const postgrest_adapter_1 = require("./adapters/postgrest-adapter");
17
+ const supabase_adapter_1 = require("./adapters/supabase-adapter");
18
+ const sqlite_adapter_1 = require("./adapters/sqlite-adapter");
19
+ const file_adapter_1 = require("./adapters/file-adapter");
20
+ // Ensure environment variables from .env.local are loaded before resolving configuration
21
+ dotenv_1.default.config({ path: path_1.default.resolve(process.cwd(), '.env.local') });
22
+ /**
23
+ * Extract configuration from ConfigProvider if provided
24
+ * @param configProvider - ConfigProvider instance
25
+ * @param type - Connection type
26
+ * @returns Provider-specific configuration object
27
+ */
28
+ function extractConfigFromProvider(configProvider, type) {
29
+ const providerConfig = {};
30
+ if (type === 'postgrest') {
31
+ const envApiKey = process.env.postgrest_api_key || process.env.POSTGREST_API_KEY || '';
32
+ if (!envApiKey) {
33
+ throw new Error('Environment variable postgrest_api_key is required for PostgREST connections');
34
+ }
35
+ providerConfig.postgrest = {
36
+ base_url: configProvider.get('postgrest', 'base_url') || '',
37
+ api_key: envApiKey
38
+ };
39
+ }
40
+ else if (type === 'supabase') {
41
+ providerConfig.supabase = configProvider.getSection('supabase') || {};
42
+ }
43
+ else if (type === 'sqlite') {
44
+ providerConfig.sqlite = configProvider.getSection('sqlite') || {};
45
+ }
46
+ else if (type === 'file') {
47
+ providerConfig.file = configProvider.getSection('file') || {};
48
+ }
49
+ return providerConfig;
50
+ }
51
+ /**
52
+ * Create a Hazo Connect adapter instance based on configuration
53
+ * @param config - Hazo Connect configuration (can include ConfigProvider or direct config)
54
+ * @returns Adapter instance implementing HazoConnectAdapter
55
+ */
56
+ function createHazoConnect(config) {
57
+ const { type, logger, configProvider, ...directProviderConfig } = config;
58
+ // Extract config from ConfigProvider if provided, otherwise use direct config
59
+ let providerConfig;
60
+ if (configProvider) {
61
+ providerConfig = extractConfigFromProvider(configProvider, type);
62
+ }
63
+ else {
64
+ providerConfig = directProviderConfig;
65
+ if (type === 'postgrest') {
66
+ const envApiKey = process.env.postgrest_api_key || process.env.POSTGREST_API_KEY || '';
67
+ if (!envApiKey) {
68
+ throw new Error('Environment variable postgrest_api_key is required for PostgREST connections');
69
+ }
70
+ providerConfig.postgrest = {
71
+ ...(providerConfig.postgrest || {}),
72
+ api_key: envApiKey
73
+ };
74
+ }
75
+ }
76
+ switch (type) {
77
+ case 'postgrest':
78
+ return new postgrest_adapter_1.PostgrestAdapter(providerConfig, logger);
79
+ case 'supabase':
80
+ return new supabase_adapter_1.SupabaseAdapter(providerConfig, logger);
81
+ case 'sqlite':
82
+ return new sqlite_adapter_1.SqliteAdapter(providerConfig, logger);
83
+ case 'file':
84
+ return new file_adapter_1.FileAdapter(providerConfig, logger);
85
+ default:
86
+ throw new Error(`Unsupported connection type: ${type}`);
87
+ }
88
+ }
89
+ //# sourceMappingURL=factory.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"factory.js","sourceRoot":"","sources":["../src/lib/factory.ts"],"names":[],"mappings":"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"}