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 @@
|
|
|
1
|
+
{"version":3,"file":"factory.test.d.ts","sourceRoot":"","sources":["../../src/lib/__tests__/factory.test.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
// factory.test.ts verifies the createHazoConnect factory behavior across configuration inputs.
|
|
4
|
+
const factory_1 = require("../factory");
|
|
5
|
+
const postgrest_adapter_1 = require("../adapters/postgrest-adapter");
|
|
6
|
+
describe("createHazoConnect", () => {
|
|
7
|
+
it("returns a PostgrestAdapter when using a config provider", async () => {
|
|
8
|
+
const base_url = process.env.POSTGREST_URL;
|
|
9
|
+
const config_provider = {
|
|
10
|
+
get: (section, key) => {
|
|
11
|
+
if (section === "postgrest" && key === "base_url") {
|
|
12
|
+
return base_url;
|
|
13
|
+
}
|
|
14
|
+
return undefined;
|
|
15
|
+
},
|
|
16
|
+
getSection: (section) => {
|
|
17
|
+
if (section === "postgrest") {
|
|
18
|
+
return { base_url };
|
|
19
|
+
}
|
|
20
|
+
return undefined;
|
|
21
|
+
}
|
|
22
|
+
};
|
|
23
|
+
const adapter = (0, factory_1.createHazoConnect)({
|
|
24
|
+
type: "postgrest",
|
|
25
|
+
configProvider: config_provider
|
|
26
|
+
});
|
|
27
|
+
expect(adapter).toBeInstanceOf(postgrest_adapter_1.PostgrestAdapter);
|
|
28
|
+
const adapter_config = await adapter.getConfig();
|
|
29
|
+
expect(adapter_config.base_url).toBe(base_url);
|
|
30
|
+
expect(adapter_config.api_key).toBe(process.env.POSTGREST_API_KEY);
|
|
31
|
+
});
|
|
32
|
+
it("merges direct config with environment API key", async () => {
|
|
33
|
+
const base_url = process.env.POSTGREST_URL;
|
|
34
|
+
const adapter = (0, factory_1.createHazoConnect)({
|
|
35
|
+
type: "postgrest",
|
|
36
|
+
postgrest: {
|
|
37
|
+
base_url
|
|
38
|
+
}
|
|
39
|
+
});
|
|
40
|
+
const adapter_config = await adapter.getConfig();
|
|
41
|
+
expect(adapter_config.base_url).toBe(base_url);
|
|
42
|
+
expect(adapter_config.api_key).toBe(process.env.POSTGREST_API_KEY);
|
|
43
|
+
});
|
|
44
|
+
});
|
|
45
|
+
//# sourceMappingURL=factory.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"factory.test.js","sourceRoot":"","sources":["../../src/lib/__tests__/factory.test.ts"],"names":[],"mappings":";;AAAA,+FAA+F;AAC/F,wCAA+C;AAC/C,qEAAiE;AAEjE,QAAQ,CAAC,mBAAmB,EAAE,GAAG,EAAE;IACjC,EAAE,CAAC,yDAAyD,EAAE,KAAK,IAAI,EAAE;QACvE,MAAM,QAAQ,GAAG,OAAO,CAAC,GAAG,CAAC,aAAuB,CAAC;QAErD,MAAM,eAAe,GAAG;YACtB,GAAG,EAAE,CAAC,OAAe,EAAE,GAAW,EAAE,EAAE;gBACpC,IAAI,OAAO,KAAK,WAAW,IAAI,GAAG,KAAK,UAAU,EAAE,CAAC;oBAClD,OAAO,QAAQ,CAAC;gBAClB,CAAC;gBACD,OAAO,SAAS,CAAC;YACnB,CAAC;YACD,UAAU,EAAE,CAAC,OAAe,EAAE,EAAE;gBAC9B,IAAI,OAAO,KAAK,WAAW,EAAE,CAAC;oBAC5B,OAAO,EAAE,QAAQ,EAAE,CAAC;gBACtB,CAAC;gBACD,OAAO,SAAS,CAAC;YACnB,CAAC;SACF,CAAC;QAEF,MAAM,OAAO,GAAG,IAAA,2BAAiB,EAAC;YAChC,IAAI,EAAE,WAAW;YACjB,cAAc,EAAE,eAAsB;SACvC,CAAC,CAAC;QAEH,MAAM,CAAC,OAAO,CAAC,CAAC,cAAc,CAAC,oCAAgB,CAAC,CAAC;QACjD,MAAM,cAAc,GAAG,MAAM,OAAO,CAAC,SAAS,EAAE,CAAC;QACjD,MAAM,CAAC,cAAc,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;QAC/C,MAAM,CAAC,cAAc,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,iBAAiB,CAAC,CAAC;IACrE,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,+CAA+C,EAAE,KAAK,IAAI,EAAE;QAC7D,MAAM,QAAQ,GAAG,OAAO,CAAC,GAAG,CAAC,aAAuB,CAAC;QAErD,MAAM,OAAO,GAAG,IAAA,2BAAiB,EAAC;YAChC,IAAI,EAAE,WAAW;YACjB,SAAS,EAAE;gBACT,QAAQ;aACT;SACF,CAAC,CAAC;QAEH,MAAM,cAAc,GAAG,MAAM,OAAO,CAAC,SAAS,EAAE,CAAC;QACjD,MAAM,CAAC,cAAc,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;QAC/C,MAAM,CAAC,cAAc,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,iBAAiB,CAAC,CAAC;IACrE,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"postgrest_adapter.test.d.ts","sourceRoot":"","sources":["../../src/lib/__tests__/postgrest_adapter.test.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
// postgrest_adapter.test.ts ensures PostgREST adapter surfaces helpful error messages.
|
|
4
|
+
const postgrest_adapter_1 = require("../adapters/postgrest-adapter");
|
|
5
|
+
const originalFetch = global.fetch;
|
|
6
|
+
const buildAdapter = () => new postgrest_adapter_1.PostgrestAdapter({
|
|
7
|
+
postgrest: {
|
|
8
|
+
base_url: "https://example.supabase.co/rest/v1",
|
|
9
|
+
api_key: "valid-key"
|
|
10
|
+
}
|
|
11
|
+
});
|
|
12
|
+
describe("PostgrestAdapter error handling", () => {
|
|
13
|
+
afterEach(() => {
|
|
14
|
+
global.fetch = originalFetch;
|
|
15
|
+
});
|
|
16
|
+
it("produces a descriptive message when the table is missing", async () => {
|
|
17
|
+
const mockResponse = {
|
|
18
|
+
ok: false,
|
|
19
|
+
status: 404,
|
|
20
|
+
statusText: "Not Found",
|
|
21
|
+
text: jest.fn().mockResolvedValue(JSON.stringify({
|
|
22
|
+
message: "relation \"missing_table\" does not exist"
|
|
23
|
+
}))
|
|
24
|
+
};
|
|
25
|
+
const fetchMock = jest.fn().mockResolvedValue(mockResponse);
|
|
26
|
+
global.fetch = fetchMock;
|
|
27
|
+
const adapter = buildAdapter();
|
|
28
|
+
await expect(adapter.rawQuery("/missing_table", { method: "GET" })).rejects.toThrow("PostgREST could not find resource 'missing_table'");
|
|
29
|
+
expect(fetchMock).toHaveBeenCalledTimes(1);
|
|
30
|
+
});
|
|
31
|
+
});
|
|
32
|
+
//# sourceMappingURL=postgrest_adapter.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"postgrest_adapter.test.js","sourceRoot":"","sources":["../../src/lib/__tests__/postgrest_adapter.test.ts"],"names":[],"mappings":";;AAAA,uFAAuF;AACvF,qEAAiE;AAEjE,MAAM,aAAa,GAAG,MAAM,CAAC,KAAK,CAAC;AAEnC,MAAM,YAAY,GAAG,GAAG,EAAE,CACxB,IAAI,oCAAgB,CAAC;IACnB,SAAS,EAAE;QACT,QAAQ,EAAE,qCAAqC;QAC/C,OAAO,EAAE,WAAW;KACrB;CACF,CAAC,CAAC;AAEL,QAAQ,CAAC,iCAAiC,EAAE,GAAG,EAAE;IAC/C,SAAS,CAAC,GAAG,EAAE;QACb,MAAM,CAAC,KAAK,GAAG,aAAa,CAAC;IAC/B,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,0DAA0D,EAAE,KAAK,IAAI,EAAE;QACxE,MAAM,YAAY,GAAG;YACnB,EAAE,EAAE,KAAK;YACT,MAAM,EAAE,GAAG;YACX,UAAU,EAAE,WAAW;YACvB,IAAI,EAAE,IAAI,CAAC,EAAE,EAAE,CAAC,iBAAiB,CAC/B,IAAI,CAAC,SAAS,CAAC;gBACb,OAAO,EAAE,2CAA2C;aACrD,CAAC,CACH;SACF,CAAC;QAEF,MAAM,SAAS,GAAG,IAAI,CAAC,EAAE,EAAE,CAAC,iBAAiB,CAAC,YAAmB,CAAC,CAAC;QAClE,MAAc,CAAC,KAAK,GAAG,SAAS,CAAC;QAElC,MAAM,OAAO,GAAG,YAAY,EAAE,CAAC;QAE/B,MAAM,MAAM,CAAC,OAAO,CAAC,QAAQ,CAAC,gBAAgB,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,OAAO,CACjF,mDAAmD,CACpD,CAAC;QAEF,MAAM,CAAC,SAAS,CAAC,CAAC,qBAAqB,CAAC,CAAC,CAAC,CAAC;IAC7C,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"query_builder.test.d.ts","sourceRoot":"","sources":["../../src/lib/__tests__/query_builder.test.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
// query_builder.test.ts validates QueryBuilder behaviors for select and join configuration.
|
|
4
|
+
const query_builder_1 = require("../query-builder");
|
|
5
|
+
const query_settings_1 = require("../../../tests/config/query_settings");
|
|
6
|
+
describe("QueryBuilder", () => {
|
|
7
|
+
it("persists the configured table and selection values", () => {
|
|
8
|
+
const tableName = query_settings_1.test_table_name || "example_table";
|
|
9
|
+
const builder = new query_builder_1.QueryBuilder()
|
|
10
|
+
.from(tableName)
|
|
11
|
+
.select(["id", "name"])
|
|
12
|
+
.limit(25)
|
|
13
|
+
.offset(5);
|
|
14
|
+
expect(builder.getTable()).toBe(tableName);
|
|
15
|
+
expect(builder.getSelectFields()).toEqual(["id", "name"]);
|
|
16
|
+
expect(builder.getLimit()).toBe(25);
|
|
17
|
+
expect(builder.getOffset()).toBe(5);
|
|
18
|
+
});
|
|
19
|
+
it("records join metadata using the configured values", () => {
|
|
20
|
+
const tableName = query_settings_1.test_table_name || "example_table";
|
|
21
|
+
const joinTable = query_settings_1.test_join_table || "related_items";
|
|
22
|
+
const joinCondition = query_settings_1.test_join_condition || `${joinTable}.parent_id=${tableName}.id`;
|
|
23
|
+
const builder = new query_builder_1.QueryBuilder()
|
|
24
|
+
.from(tableName)
|
|
25
|
+
.join(joinTable, joinCondition, "left");
|
|
26
|
+
const joins = builder.getJoins();
|
|
27
|
+
expect(joins).toHaveLength(1);
|
|
28
|
+
expect(joins[0]).toEqual({
|
|
29
|
+
table: joinTable,
|
|
30
|
+
on: joinCondition,
|
|
31
|
+
type: "left"
|
|
32
|
+
});
|
|
33
|
+
});
|
|
34
|
+
});
|
|
35
|
+
//# sourceMappingURL=query_builder.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"query_builder.test.js","sourceRoot":"","sources":["../../src/lib/__tests__/query_builder.test.ts"],"names":[],"mappings":";;AAAA,4FAA4F;AAC5F,oDAAgD;AAChD,yEAA6G;AAE7G,QAAQ,CAAC,cAAc,EAAE,GAAG,EAAE;IAC5B,EAAE,CAAC,oDAAoD,EAAE,GAAG,EAAE;QAC5D,MAAM,SAAS,GAAG,gCAAe,IAAI,eAAe,CAAC;QACrD,MAAM,OAAO,GAAG,IAAI,4BAAY,EAAE;aAC/B,IAAI,CAAC,SAAS,CAAC;aACf,MAAM,CAAC,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;aACtB,KAAK,CAAC,EAAE,CAAC;aACT,MAAM,CAAC,CAAC,CAAC,CAAC;QAEb,MAAM,CAAC,OAAO,CAAC,QAAQ,EAAE,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;QAC3C,MAAM,CAAC,OAAO,CAAC,eAAe,EAAE,CAAC,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC,CAAC;QAC1D,MAAM,CAAC,OAAO,CAAC,QAAQ,EAAE,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QACpC,MAAM,CAAC,OAAO,CAAC,SAAS,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IACtC,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,mDAAmD,EAAE,GAAG,EAAE;QAC3D,MAAM,SAAS,GAAG,gCAAe,IAAI,eAAe,CAAC;QACrD,MAAM,SAAS,GAAG,gCAAe,IAAI,eAAe,CAAC;QACrD,MAAM,aAAa,GACjB,oCAAmB,IAAI,GAAG,SAAS,cAAc,SAAS,KAAK,CAAC;QAElE,MAAM,OAAO,GAAG,IAAI,4BAAY,EAAE;aAC/B,IAAI,CAAC,SAAS,CAAC;aACf,IAAI,CAAC,SAAS,EAAE,aAAa,EAAE,MAAM,CAAC,CAAC;QAE1C,MAAM,KAAK,GAAG,OAAO,CAAC,QAAQ,EAAE,CAAC;QACjC,MAAM,CAAC,KAAK,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC;QAC9B,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC;YACvB,KAAK,EAAE,SAAS;YAChB,EAAE,EAAE,aAAa;YACjB,IAAI,EAAE,MAAM;SACb,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
|
|
@@ -0,0 +1,69 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Purpose: Abstract base adapter class with common error handling
|
|
3
|
+
*
|
|
4
|
+
* This file provides a base class for all database adapters.
|
|
5
|
+
* Includes common error handling and optional logger support.
|
|
6
|
+
* Zero dependencies - only Node.js built-ins and types.
|
|
7
|
+
*/
|
|
8
|
+
import type { Logger, HazoConnectError } from '../types';
|
|
9
|
+
import { ErrorCode } from '../types';
|
|
10
|
+
/**
|
|
11
|
+
* Abstract base adapter class
|
|
12
|
+
* All adapters should extend this class
|
|
13
|
+
*/
|
|
14
|
+
export declare abstract class BaseAdapter {
|
|
15
|
+
protected logger: Logger;
|
|
16
|
+
protected config: any;
|
|
17
|
+
/**
|
|
18
|
+
* Constructor
|
|
19
|
+
* @param config - Adapter-specific configuration
|
|
20
|
+
* @param logger - Optional logger instance
|
|
21
|
+
*/
|
|
22
|
+
constructor(config: any, logger?: Logger);
|
|
23
|
+
/**
|
|
24
|
+
* Create a standardized error object
|
|
25
|
+
* @param code - Error code
|
|
26
|
+
* @param message - Error message
|
|
27
|
+
* @param statusCode - Optional HTTP status code
|
|
28
|
+
* @param originalError - Optional original error
|
|
29
|
+
* @returns HazoConnectError object
|
|
30
|
+
*/
|
|
31
|
+
protected createError(code: ErrorCode, message: string, statusCode?: number, originalError?: any): HazoConnectError;
|
|
32
|
+
/**
|
|
33
|
+
* Throw a standardized error
|
|
34
|
+
* @param code - Error code
|
|
35
|
+
* @param message - Error message
|
|
36
|
+
* @param statusCode - Optional HTTP status code
|
|
37
|
+
* @param originalError - Optional original error
|
|
38
|
+
*/
|
|
39
|
+
protected throwError(code: ErrorCode, message: string, statusCode?: number, originalError?: any): never;
|
|
40
|
+
/**
|
|
41
|
+
* Detect if an error is a connection failure
|
|
42
|
+
* @param error - Error to check
|
|
43
|
+
* @returns True if connection failure
|
|
44
|
+
*/
|
|
45
|
+
protected isConnectionError(error: any): boolean;
|
|
46
|
+
/**
|
|
47
|
+
* Handle connection errors
|
|
48
|
+
* @param error - Error to handle
|
|
49
|
+
*/
|
|
50
|
+
protected handleConnectionError(error: any): never;
|
|
51
|
+
/**
|
|
52
|
+
* Validate configuration
|
|
53
|
+
* @param requiredFields - Array of required field names
|
|
54
|
+
* @throws Error if validation fails
|
|
55
|
+
*/
|
|
56
|
+
protected validateConfig(requiredFields: string[]): void;
|
|
57
|
+
/**
|
|
58
|
+
* Log a query operation
|
|
59
|
+
* @param operation - Operation name
|
|
60
|
+
* @param details - Operation details
|
|
61
|
+
*/
|
|
62
|
+
protected logQuery(operation: string, details: any): void;
|
|
63
|
+
/**
|
|
64
|
+
* Get the adapter's configuration
|
|
65
|
+
* @returns Promise with adapter-specific config
|
|
66
|
+
*/
|
|
67
|
+
abstract getConfig(): Promise<any>;
|
|
68
|
+
}
|
|
69
|
+
//# sourceMappingURL=base-adapter.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"base-adapter.d.ts","sourceRoot":"","sources":["../../src/lib/adapters/base-adapter.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,KAAK,EAAE,MAAM,EAAE,gBAAgB,EAAE,MAAM,UAAU,CAAA;AACxD,OAAO,EAAc,SAAS,EAAE,MAAM,UAAU,CAAA;AAEhD;;;GAGG;AACH,8BAAsB,WAAW;IAC/B,SAAS,CAAC,MAAM,EAAE,MAAM,CAAA;IACxB,SAAS,CAAC,MAAM,EAAE,GAAG,CAAA;IAErB;;;;OAIG;gBACS,MAAM,EAAE,GAAG,EAAE,MAAM,CAAC,EAAE,MAAM;IAKxC;;;;;;;OAOG;IACH,SAAS,CAAC,WAAW,CACnB,IAAI,EAAE,SAAS,EACf,OAAO,EAAE,MAAM,EACf,UAAU,CAAC,EAAE,MAAM,EACnB,aAAa,CAAC,EAAE,GAAG,GAClB,gBAAgB;IAsBnB;;;;;;OAMG;IACH,SAAS,CAAC,UAAU,CAClB,IAAI,EAAE,SAAS,EACf,OAAO,EAAE,MAAM,EACf,UAAU,CAAC,EAAE,MAAM,EACnB,aAAa,CAAC,EAAE,GAAG,GAClB,KAAK;IAaR;;;;OAIG;IACH,SAAS,CAAC,iBAAiB,CAAC,KAAK,EAAE,GAAG,GAAG,OAAO;IAahD;;;OAGG;IACH,SAAS,CAAC,qBAAqB,CAAC,KAAK,EAAE,GAAG,GAAG,KAAK;IAYlD;;;;OAIG;IACH,SAAS,CAAC,cAAc,CAAC,cAAc,EAAE,MAAM,EAAE,GAAG,IAAI;IAWxD;;;;OAIG;IACH,SAAS,CAAC,QAAQ,CAAC,SAAS,EAAE,MAAM,EAAE,OAAO,EAAE,GAAG,GAAG,IAAI;IAOzD;;;OAGG;IACH,QAAQ,CAAC,SAAS,IAAI,OAAO,CAAC,GAAG,CAAC;CACnC"}
|
|
@@ -0,0 +1,121 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* Purpose: Abstract base adapter class with common error handling
|
|
4
|
+
*
|
|
5
|
+
* This file provides a base class for all database adapters.
|
|
6
|
+
* Includes common error handling and optional logger support.
|
|
7
|
+
* Zero dependencies - only Node.js built-ins and types.
|
|
8
|
+
*/
|
|
9
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
10
|
+
exports.BaseAdapter = void 0;
|
|
11
|
+
const types_1 = require("../types");
|
|
12
|
+
/**
|
|
13
|
+
* Abstract base adapter class
|
|
14
|
+
* All adapters should extend this class
|
|
15
|
+
*/
|
|
16
|
+
class BaseAdapter {
|
|
17
|
+
/**
|
|
18
|
+
* Constructor
|
|
19
|
+
* @param config - Adapter-specific configuration
|
|
20
|
+
* @param logger - Optional logger instance
|
|
21
|
+
*/
|
|
22
|
+
constructor(config, logger) {
|
|
23
|
+
this.config = config;
|
|
24
|
+
this.logger = logger || types_1.noOpLogger;
|
|
25
|
+
}
|
|
26
|
+
/**
|
|
27
|
+
* Create a standardized error object
|
|
28
|
+
* @param code - Error code
|
|
29
|
+
* @param message - Error message
|
|
30
|
+
* @param statusCode - Optional HTTP status code
|
|
31
|
+
* @param originalError - Optional original error
|
|
32
|
+
* @returns HazoConnectError object
|
|
33
|
+
*/
|
|
34
|
+
createError(code, message, statusCode, originalError) {
|
|
35
|
+
// Convert enum to string to ensure it's serializable
|
|
36
|
+
const codeString = String(code);
|
|
37
|
+
const error = {
|
|
38
|
+
code: codeString,
|
|
39
|
+
message,
|
|
40
|
+
statusCode,
|
|
41
|
+
originalError
|
|
42
|
+
};
|
|
43
|
+
// Log the error
|
|
44
|
+
this.logger.error(`[${codeString}] ${message}`, {
|
|
45
|
+
code: codeString,
|
|
46
|
+
message,
|
|
47
|
+
statusCode,
|
|
48
|
+
originalError: originalError instanceof Error ? originalError.message : String(originalError)
|
|
49
|
+
});
|
|
50
|
+
return error;
|
|
51
|
+
}
|
|
52
|
+
/**
|
|
53
|
+
* Throw a standardized error
|
|
54
|
+
* @param code - Error code
|
|
55
|
+
* @param message - Error message
|
|
56
|
+
* @param statusCode - Optional HTTP status code
|
|
57
|
+
* @param originalError - Optional original error
|
|
58
|
+
*/
|
|
59
|
+
throwError(code, message, statusCode, originalError) {
|
|
60
|
+
const error = this.createError(code, message, statusCode, originalError);
|
|
61
|
+
const err = new Error(message);
|
|
62
|
+
// Convert enum to string to ensure it's serializable
|
|
63
|
+
err.code = String(code);
|
|
64
|
+
err.statusCode = statusCode;
|
|
65
|
+
// Only include serializable error info
|
|
66
|
+
err.originalError = originalError instanceof Error
|
|
67
|
+
? originalError.message
|
|
68
|
+
: (typeof originalError === 'object' ? JSON.stringify(originalError) : String(originalError));
|
|
69
|
+
throw err;
|
|
70
|
+
}
|
|
71
|
+
/**
|
|
72
|
+
* Detect if an error is a connection failure
|
|
73
|
+
* @param error - Error to check
|
|
74
|
+
* @returns True if connection failure
|
|
75
|
+
*/
|
|
76
|
+
isConnectionError(error) {
|
|
77
|
+
if (!error)
|
|
78
|
+
return false;
|
|
79
|
+
const message = error.message || String(error);
|
|
80
|
+
return (message.includes('fetch failed') ||
|
|
81
|
+
message.includes('ECONNREFUSED') ||
|
|
82
|
+
message.includes('ENOTFOUND') ||
|
|
83
|
+
message.includes('ETIMEDOUT') ||
|
|
84
|
+
message.includes('Lost connection'));
|
|
85
|
+
}
|
|
86
|
+
/**
|
|
87
|
+
* Handle connection errors
|
|
88
|
+
* @param error - Error to handle
|
|
89
|
+
*/
|
|
90
|
+
handleConnectionError(error) {
|
|
91
|
+
if (this.isConnectionError(error)) {
|
|
92
|
+
this.throwError(types_1.ErrorCode.CONNECTION_FAILED, 'Lost connection to database', undefined, error);
|
|
93
|
+
}
|
|
94
|
+
throw error;
|
|
95
|
+
}
|
|
96
|
+
/**
|
|
97
|
+
* Validate configuration
|
|
98
|
+
* @param requiredFields - Array of required field names
|
|
99
|
+
* @throws Error if validation fails
|
|
100
|
+
*/
|
|
101
|
+
validateConfig(requiredFields) {
|
|
102
|
+
for (const field of requiredFields) {
|
|
103
|
+
if (!this.config || !this.config[field]) {
|
|
104
|
+
this.throwError(types_1.ErrorCode.CONFIG_ERROR, `Missing required configuration field: ${field}`);
|
|
105
|
+
}
|
|
106
|
+
}
|
|
107
|
+
}
|
|
108
|
+
/**
|
|
109
|
+
* Log a query operation
|
|
110
|
+
* @param operation - Operation name
|
|
111
|
+
* @param details - Operation details
|
|
112
|
+
*/
|
|
113
|
+
logQuery(operation, details) {
|
|
114
|
+
this.logger.info(`[Query] ${operation}`, {
|
|
115
|
+
operation,
|
|
116
|
+
...details
|
|
117
|
+
});
|
|
118
|
+
}
|
|
119
|
+
}
|
|
120
|
+
exports.BaseAdapter = BaseAdapter;
|
|
121
|
+
//# sourceMappingURL=base-adapter.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"base-adapter.js","sourceRoot":"","sources":["../../src/lib/adapters/base-adapter.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Purpose: File-based storage adapter stub
|
|
3
|
+
*
|
|
4
|
+
* This adapter will support file-based storage (JSON files).
|
|
5
|
+
* Currently returns NotImplementedError.
|
|
6
|
+
*
|
|
7
|
+
* Expected config structure:
|
|
8
|
+
* {
|
|
9
|
+
* file: {
|
|
10
|
+
* base_path: string, // Base directory for data files
|
|
11
|
+
* file_format: 'json', // File format (currently only JSON)
|
|
12
|
+
* table_to_file?: (table: string) => string // Optional function to map table to filename
|
|
13
|
+
* }
|
|
14
|
+
* }
|
|
15
|
+
*/
|
|
16
|
+
import type { HazoConnectAdapter, Logger } from '../types';
|
|
17
|
+
import { BaseAdapter } from './base-adapter';
|
|
18
|
+
import { QueryBuilder } from '../query-builder';
|
|
19
|
+
/**
|
|
20
|
+
* File adapter implementation (stub)
|
|
21
|
+
*/
|
|
22
|
+
export declare class FileAdapter extends BaseAdapter implements HazoConnectAdapter {
|
|
23
|
+
/**
|
|
24
|
+
* Constructor
|
|
25
|
+
* @param config - File storage 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 (not applicable for file storage)
|
|
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=file-adapter.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"file-adapter.d.ts","sourceRoot":"","sources":["../../src/lib/adapters/file-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,WAAY,SAAQ,WAAY,YAAW,kBAAkB;IACxE;;;;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: File-based storage adapter stub
|
|
4
|
+
*
|
|
5
|
+
* This adapter will support file-based storage (JSON files).
|
|
6
|
+
* Currently returns NotImplementedError.
|
|
7
|
+
*
|
|
8
|
+
* Expected config structure:
|
|
9
|
+
* {
|
|
10
|
+
* file: {
|
|
11
|
+
* base_path: string, // Base directory for data files
|
|
12
|
+
* file_format: 'json', // File format (currently only JSON)
|
|
13
|
+
* table_to_file?: (table: string) => string // Optional function to map table to filename
|
|
14
|
+
* }
|
|
15
|
+
* }
|
|
16
|
+
*/
|
|
17
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
18
|
+
exports.FileAdapter = void 0;
|
|
19
|
+
const base_adapter_1 = require("./base-adapter");
|
|
20
|
+
const types_1 = require("../types");
|
|
21
|
+
/**
|
|
22
|
+
* File adapter implementation (stub)
|
|
23
|
+
*/
|
|
24
|
+
class FileAdapter extends base_adapter_1.BaseAdapter {
|
|
25
|
+
/**
|
|
26
|
+
* Constructor
|
|
27
|
+
* @param config - File storage configuration
|
|
28
|
+
* @param logger - Optional logger instance
|
|
29
|
+
*/
|
|
30
|
+
constructor(config, logger) {
|
|
31
|
+
super(config, logger);
|
|
32
|
+
// TODO: Validate file 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, 'File adapter is not yet implemented. Please use PostgREST adapter for now.');
|
|
43
|
+
}
|
|
44
|
+
/**
|
|
45
|
+
* Execute a raw query
|
|
46
|
+
* @param endpoint - Raw endpoint string (not applicable for file storage)
|
|
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, 'File 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.file || this.config);
|
|
59
|
+
}
|
|
60
|
+
}
|
|
61
|
+
exports.FileAdapter = FileAdapter;
|
|
62
|
+
//# sourceMappingURL=file-adapter.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"file-adapter.js","sourceRoot":"","sources":["../../src/lib/adapters/file-adapter.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;;GAcG;;;AAGH,iDAA4C;AAE5C,oCAAoC;AAEpC;;GAEG;AACH,MAAa,WAAY,SAAQ,0BAAW;IAC1C;;;;OAIG;IACH,YAAY,MAAW,EAAE,MAAe;QACtC,KAAK,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;QACrB,8CAA8C;IAChD,CAAC;IAED;;;;;;OAMG;IACH,KAAK,CAAC,KAAK,CACT,OAAqB,EACrB,SAAsD,KAAK,EAC3D,IAAU;QAEV,IAAI,CAAC,UAAU,CACb,iBAAS,CAAC,eAAe,EACzB,4EAA4E,CAC7E,CAAA;IACH,CAAC;IAED;;;;;OAKG;IACH,KAAK,CAAC,QAAQ,CAAC,QAAgB,EAAE,UAAuB,EAAE;QACxD,IAAI,CAAC,UAAU,CACb,iBAAS,CAAC,eAAe,EACzB,4EAA4E,CAC7E,CAAA;IACH,CAAC;IAED;;;OAGG;IACH,KAAK,CAAC,SAAS;QACb,OAAO,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,IAAI,IAAI,CAAC,MAAM,CAAC,CAAA;IACzD,CAAC;CACF;AAjDD,kCAiDC"}
|
|
@@ -0,0 +1,60 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Purpose: PostgREST adapter implementation
|
|
3
|
+
*
|
|
4
|
+
* This adapter converts QueryBuilder to PostgREST URL format and executes queries.
|
|
5
|
+
* Uses injected config and logger (no file reading or project dependencies).
|
|
6
|
+
* Zero dependencies - only Node.js built-ins (fetch) and types.
|
|
7
|
+
*/
|
|
8
|
+
import type { HazoConnectAdapter, Logger } from '../types';
|
|
9
|
+
import { BaseAdapter } from './base-adapter';
|
|
10
|
+
import { QueryBuilder } from '../query-builder';
|
|
11
|
+
/**
|
|
12
|
+
* PostgREST adapter configuration
|
|
13
|
+
*/
|
|
14
|
+
interface PostgrestConfig {
|
|
15
|
+
base_url: string;
|
|
16
|
+
api_key: string;
|
|
17
|
+
}
|
|
18
|
+
/**
|
|
19
|
+
* PostgREST adapter implementation
|
|
20
|
+
*/
|
|
21
|
+
export declare class PostgrestAdapter extends BaseAdapter implements HazoConnectAdapter {
|
|
22
|
+
private postgrestConfig;
|
|
23
|
+
/**
|
|
24
|
+
* Constructor
|
|
25
|
+
* @param config - PostgREST configuration (must include postgrest.base_url and postgrest.api_key)
|
|
26
|
+
* @param logger - Optional logger instance
|
|
27
|
+
*/
|
|
28
|
+
constructor(config: any, logger?: Logger);
|
|
29
|
+
/**
|
|
30
|
+
* Convert QueryBuilder to PostgREST URL
|
|
31
|
+
* @param builder - QueryBuilder instance
|
|
32
|
+
* @returns PostgREST endpoint URL with query parameters
|
|
33
|
+
*/
|
|
34
|
+
private buildPostgrestUrl;
|
|
35
|
+
/**
|
|
36
|
+
* Execute a query using the query builder
|
|
37
|
+
* @param builder - QueryBuilder instance
|
|
38
|
+
* @param method - HTTP method
|
|
39
|
+
* @param body - Request body for POST/PUT/PATCH
|
|
40
|
+
* @returns Promise with query results
|
|
41
|
+
*/
|
|
42
|
+
query(builder: QueryBuilder, method?: 'GET' | 'POST' | 'PUT' | 'PATCH' | 'DELETE', body?: any): Promise<any>;
|
|
43
|
+
/**
|
|
44
|
+
* Execute a raw query (for backward compatibility)
|
|
45
|
+
* @param endpoint - Raw endpoint string (e.g., '/table?id=eq.123')
|
|
46
|
+
* @param options - Request options
|
|
47
|
+
* @returns Promise with query results
|
|
48
|
+
*/
|
|
49
|
+
rawQuery(endpoint: string, options?: RequestInit): Promise<any>;
|
|
50
|
+
/**
|
|
51
|
+
* Get the adapter's configuration
|
|
52
|
+
* @returns Promise with adapter-specific config
|
|
53
|
+
*/
|
|
54
|
+
getConfig(): Promise<PostgrestConfig>;
|
|
55
|
+
private parseErrorPayload;
|
|
56
|
+
private buildFriendlyErrorMessage;
|
|
57
|
+
private sanitizeUrl;
|
|
58
|
+
}
|
|
59
|
+
export {};
|
|
60
|
+
//# sourceMappingURL=postgrest-adapter.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"postgrest-adapter.d.ts","sourceRoot":"","sources":["../../src/lib/adapters/postgrest-adapter.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;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,UAAU,eAAe;IACvB,QAAQ,EAAE,MAAM,CAAA;IAChB,OAAO,EAAE,MAAM,CAAA;CAChB;AAED;;GAEG;AACH,qBAAa,gBAAiB,SAAQ,WAAY,YAAW,kBAAkB;IAC7E,OAAO,CAAC,eAAe,CAAiB;IAExC;;;;OAIG;gBACS,MAAM,EAAE,GAAG,EAAE,MAAM,CAAC,EAAE,MAAM;IAoBxC;;;;OAIG;IACH,OAAO,CAAC,iBAAiB;IAoGzB;;;;;;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;IAoBf;;;;;OAKG;IACG,QAAQ,CAAC,QAAQ,EAAE,MAAM,EAAE,OAAO,GAAE,WAAgB,GAAG,OAAO,CAAC,GAAG,CAAC;IAwFzE;;;OAGG;IACG,SAAS,IAAI,OAAO,CAAC,eAAe,CAAC;IAG3C,OAAO,CAAC,iBAAiB;IAYzB,OAAO,CAAC,yBAAyB;IAyBjC,OAAO,CAAC,WAAW;CAKpB"}
|