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.
- package/dist/__tests__/factory.test.d.ts +2 -0
- package/dist/__tests__/factory.test.d.ts.map +1 -0
- package/dist/__tests__/factory.test.js +45 -0
- package/dist/__tests__/factory.test.js.map +1 -0
- package/dist/__tests__/postgrest_adapter.test.d.ts +2 -0
- package/dist/__tests__/postgrest_adapter.test.d.ts.map +1 -0
- package/dist/__tests__/postgrest_adapter.test.js +32 -0
- package/dist/__tests__/postgrest_adapter.test.js.map +1 -0
- package/dist/__tests__/query_builder.test.d.ts +2 -0
- package/dist/__tests__/query_builder.test.d.ts.map +1 -0
- package/dist/__tests__/query_builder.test.js +35 -0
- package/dist/__tests__/query_builder.test.js.map +1 -0
- package/dist/adapters/base-adapter.d.ts +69 -0
- package/dist/adapters/base-adapter.d.ts.map +1 -0
- package/dist/adapters/base-adapter.js +121 -0
- package/dist/adapters/base-adapter.js.map +1 -0
- package/dist/adapters/file-adapter.d.ts +50 -0
- package/dist/adapters/file-adapter.d.ts.map +1 -0
- package/dist/adapters/file-adapter.js +62 -0
- package/dist/adapters/file-adapter.js.map +1 -0
- package/dist/adapters/postgrest-adapter.d.ts +60 -0
- package/dist/adapters/postgrest-adapter.d.ts.map +1 -0
- package/dist/adapters/postgrest-adapter.js +252 -0
- package/dist/adapters/postgrest-adapter.js.map +1 -0
- package/dist/adapters/sqlite-adapter.d.ts +49 -0
- package/dist/adapters/sqlite-adapter.d.ts.map +1 -0
- package/dist/adapters/sqlite-adapter.js +61 -0
- package/dist/adapters/sqlite-adapter.js.map +1 -0
- package/dist/adapters/supabase-adapter.d.ts +50 -0
- package/dist/adapters/supabase-adapter.d.ts.map +1 -0
- package/dist/adapters/supabase-adapter.js +62 -0
- package/dist/adapters/supabase-adapter.js.map +1 -0
- package/dist/factory.d.ts +15 -0
- package/dist/factory.d.ts.map +1 -0
- package/dist/factory.js +89 -0
- package/dist/factory.js.map +1 -0
- package/dist/helpers.d.ts +76 -0
- package/dist/helpers.d.ts.map +1 -0
- package/dist/helpers.js +151 -0
- package/dist/helpers.js.map +1 -0
- package/dist/index.d.ts +15 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +30 -0
- package/dist/index.js.map +1 -0
- package/dist/query-builder.d.ts +143 -0
- package/dist/query-builder.d.ts.map +1 -0
- package/dist/query-builder.js +216 -0
- package/dist/query-builder.js.map +1 -0
- package/dist/types.d.ts +117 -0
- package/dist/types.d.ts.map +1 -0
- package/dist/types.js +33 -0
- package/dist/types.js.map +1 -0
- 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"}
|
package/dist/factory.js
ADDED
|
@@ -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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"}
|