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,117 @@
1
+ /**
2
+ * Purpose: Core TypeScript types and interfaces for Hazo Connect
3
+ *
4
+ * This file defines all types used throughout the hazo_connect component.
5
+ * Zero dependencies - only TypeScript types.
6
+ *
7
+ * Note: ConfigProvider is imported from hazo_config npm package.
8
+ * Components can work with either direct config or ConfigProvider.
9
+ */
10
+ import type { ConfigProvider } from 'hazo_config';
11
+ /**
12
+ * Optional logger interface for dependency injection
13
+ * If not provided, a no-op logger will be used
14
+ */
15
+ export interface Logger {
16
+ debug(message: string, data?: Record<string, unknown>): void;
17
+ info(message: string, data?: Record<string, unknown>): void;
18
+ warn(message: string, data?: Record<string, unknown>): void;
19
+ error(message: string, data?: Record<string, unknown>): void;
20
+ }
21
+ /**
22
+ * No-op logger implementation (default when no logger provided)
23
+ */
24
+ export declare const noOpLogger: Logger;
25
+ /**
26
+ * Connection types supported by Hazo Connect
27
+ */
28
+ export type ConnectionType = 'postgrest' | 'supabase' | 'sqlite' | 'file';
29
+ /**
30
+ * Main configuration interface for Hazo Connect
31
+ * Logger is optional - defaults to no-op if not provided
32
+ *
33
+ * Can accept either:
34
+ * - Direct config object with type and provider-specific config
35
+ * - ConfigProvider instance (from hazo_config) for dependency injection
36
+ */
37
+ export interface HazoConnectConfig {
38
+ type: ConnectionType;
39
+ logger?: Logger;
40
+ configProvider?: ConfigProvider;
41
+ [key: string]: any;
42
+ }
43
+ /**
44
+ * Query operator types supported by the query builder
45
+ */
46
+ export type QueryOperator = 'eq' | 'neq' | 'gt' | 'gte' | 'lt' | 'lte' | 'like' | 'ilike' | 'in' | 'is' | 'or';
47
+ /**
48
+ * Where condition structure
49
+ */
50
+ export interface WhereCondition {
51
+ field: string;
52
+ operator: QueryOperator;
53
+ value: any;
54
+ }
55
+ /**
56
+ * Order direction
57
+ */
58
+ export type OrderDirection = 'asc' | 'desc';
59
+ /**
60
+ * Join type
61
+ */
62
+ export type JoinType = 'inner' | 'left' | 'right';
63
+ /**
64
+ * Nested select structure for PostgREST syntax
65
+ */
66
+ export interface NestedSelect {
67
+ table: string;
68
+ fields: string[];
69
+ }
70
+ /**
71
+ * Database adapter interface
72
+ * All adapters must implement this interface
73
+ */
74
+ export interface HazoConnectAdapter {
75
+ /**
76
+ * Execute a query using the query builder
77
+ * @param builder - The query builder instance
78
+ * @param method - HTTP method (GET, POST, PUT, PATCH, DELETE)
79
+ * @param body - Request body for POST/PUT/PATCH
80
+ * @returns Promise with query results
81
+ */
82
+ query(builder: any, // QueryBuilder type (avoid circular dependency)
83
+ method?: 'GET' | 'POST' | 'PUT' | 'PATCH' | 'DELETE', body?: any): Promise<any>;
84
+ /**
85
+ * Execute a raw query (for backward compatibility)
86
+ * @param endpoint - Raw endpoint string (e.g., '/table?id=eq.123')
87
+ * @param options - Request options
88
+ * @returns Promise with query results
89
+ */
90
+ rawQuery(endpoint: string, options?: RequestInit): Promise<any>;
91
+ /**
92
+ * Get the adapter's configuration
93
+ * @returns Promise with adapter-specific config
94
+ */
95
+ getConfig(): Promise<any>;
96
+ }
97
+ /**
98
+ * Standardized error response
99
+ * Note: code is a string (ErrorCode enum values are strings)
100
+ */
101
+ export interface HazoConnectError {
102
+ code: string;
103
+ message: string;
104
+ statusCode?: number;
105
+ originalError?: any;
106
+ }
107
+ /**
108
+ * Error codes
109
+ */
110
+ export declare enum ErrorCode {
111
+ CONFIG_ERROR = "HAZO_CONNECT_CONFIG_ERROR",
112
+ CONNECTION_FAILED = "HAZO_CONNECT_CONNECTION_FAILED",
113
+ QUERY_ERROR = "HAZO_CONNECT_QUERY_ERROR",
114
+ NOT_IMPLEMENTED = "HAZO_CONNECT_NOT_IMPLEMENTED",
115
+ VALIDATION_ERROR = "HAZO_CONNECT_VALIDATION_ERROR"
116
+ }
117
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/lib/types.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAGH,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,aAAa,CAAA;AAEjD;;;GAGG;AACH,MAAM,WAAW,MAAM;IACrB,KAAK,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI,CAAA;IAC5D,IAAI,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI,CAAA;IAC3D,IAAI,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI,CAAA;IAC3D,KAAK,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI,CAAA;CAC7D;AAED;;GAEG;AACH,eAAO,MAAM,UAAU,EAAE,MAKxB,CAAA;AAED;;GAEG;AACH,MAAM,MAAM,cAAc,GAAG,WAAW,GAAG,UAAU,GAAG,QAAQ,GAAG,MAAM,CAAA;AAEzE;;;;;;;GAOG;AACH,MAAM,WAAW,iBAAiB;IAChC,IAAI,EAAE,cAAc,CAAA;IACpB,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,cAAc,CAAC,EAAE,cAAc,CAAA;IAC/B,CAAC,GAAG,EAAE,MAAM,GAAG,GAAG,CAAA;CACnB;AAED;;GAEG;AACH,MAAM,MAAM,aAAa,GACrB,IAAI,GACJ,KAAK,GACL,IAAI,GACJ,KAAK,GACL,IAAI,GACJ,KAAK,GACL,MAAM,GACN,OAAO,GACP,IAAI,GACJ,IAAI,GACJ,IAAI,CAAA;AAER;;GAEG;AACH,MAAM,WAAW,cAAc;IAC7B,KAAK,EAAE,MAAM,CAAA;IACb,QAAQ,EAAE,aAAa,CAAA;IACvB,KAAK,EAAE,GAAG,CAAA;CACX;AAED;;GAEG;AACH,MAAM,MAAM,cAAc,GAAG,KAAK,GAAG,MAAM,CAAA;AAE3C;;GAEG;AACH,MAAM,MAAM,QAAQ,GAAG,OAAO,GAAG,MAAM,GAAG,OAAO,CAAA;AAEjD;;GAEG;AACH,MAAM,WAAW,YAAY;IAC3B,KAAK,EAAE,MAAM,CAAA;IACb,MAAM,EAAE,MAAM,EAAE,CAAA;CACjB;AAED;;;GAGG;AACH,MAAM,WAAW,kBAAkB;IACjC;;;;;;OAMG;IACH,KAAK,CACH,OAAO,EAAE,GAAG,EAAE,gDAAgD;IAC9D,MAAM,CAAC,EAAE,KAAK,GAAG,MAAM,GAAG,KAAK,GAAG,OAAO,GAAG,QAAQ,EACpD,IAAI,CAAC,EAAE,GAAG,GACT,OAAO,CAAC,GAAG,CAAC,CAAA;IAEf;;;;;OAKG;IACH,QAAQ,CAAC,QAAQ,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,WAAW,GAAG,OAAO,CAAC,GAAG,CAAC,CAAA;IAE/D;;;OAGG;IACH,SAAS,IAAI,OAAO,CAAC,GAAG,CAAC,CAAA;CAC1B;AAED;;;GAGG;AACH,MAAM,WAAW,gBAAgB;IAC/B,IAAI,EAAE,MAAM,CAAA;IACZ,OAAO,EAAE,MAAM,CAAA;IACf,UAAU,CAAC,EAAE,MAAM,CAAA;IACnB,aAAa,CAAC,EAAE,GAAG,CAAA;CACpB;AAED;;GAEG;AACH,oBAAY,SAAS;IACnB,YAAY,8BAA8B;IAC1C,iBAAiB,mCAAmC;IACpD,WAAW,6BAA6B;IACxC,eAAe,iCAAiC;IAChD,gBAAgB,kCAAkC;CACnD"}
package/dist/types.js ADDED
@@ -0,0 +1,33 @@
1
+ "use strict";
2
+ /**
3
+ * Purpose: Core TypeScript types and interfaces for Hazo Connect
4
+ *
5
+ * This file defines all types used throughout the hazo_connect component.
6
+ * Zero dependencies - only TypeScript types.
7
+ *
8
+ * Note: ConfigProvider is imported from hazo_config npm package.
9
+ * Components can work with either direct config or ConfigProvider.
10
+ */
11
+ Object.defineProperty(exports, "__esModule", { value: true });
12
+ exports.ErrorCode = exports.noOpLogger = void 0;
13
+ /**
14
+ * No-op logger implementation (default when no logger provided)
15
+ */
16
+ exports.noOpLogger = {
17
+ debug: () => { },
18
+ info: () => { },
19
+ warn: () => { },
20
+ error: () => { }
21
+ };
22
+ /**
23
+ * Error codes
24
+ */
25
+ var ErrorCode;
26
+ (function (ErrorCode) {
27
+ ErrorCode["CONFIG_ERROR"] = "HAZO_CONNECT_CONFIG_ERROR";
28
+ ErrorCode["CONNECTION_FAILED"] = "HAZO_CONNECT_CONNECTION_FAILED";
29
+ ErrorCode["QUERY_ERROR"] = "HAZO_CONNECT_QUERY_ERROR";
30
+ ErrorCode["NOT_IMPLEMENTED"] = "HAZO_CONNECT_NOT_IMPLEMENTED";
31
+ ErrorCode["VALIDATION_ERROR"] = "HAZO_CONNECT_VALIDATION_ERROR";
32
+ })(ErrorCode || (exports.ErrorCode = ErrorCode = {}));
33
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../src/lib/types.ts"],"names":[],"mappings":";AAAA;;;;;;;;GAQG;;;AAgBH;;GAEG;AACU,QAAA,UAAU,GAAW;IAChC,KAAK,EAAE,GAAG,EAAE,GAAE,CAAC;IACf,IAAI,EAAE,GAAG,EAAE,GAAE,CAAC;IACd,IAAI,EAAE,GAAG,EAAE,GAAE,CAAC;IACd,KAAK,EAAE,GAAG,EAAE,GAAE,CAAC;CAChB,CAAA;AA6GD;;GAEG;AACH,IAAY,SAMX;AAND,WAAY,SAAS;IACnB,uDAA0C,CAAA;IAC1C,iEAAoD,CAAA;IACpD,qDAAwC,CAAA;IACxC,6DAAgD,CAAA;IAChD,+DAAkD,CAAA;AACpD,CAAC,EANW,SAAS,yBAAT,SAAS,QAMpB"}
package/package.json ADDED
@@ -0,0 +1,73 @@
1
+ {
2
+ "name": "hazo_connect",
3
+ "version": "1.0.0",
4
+ "description": "Module to connect to the data store (postgres via postgrest, supabase, etc)",
5
+ "main": "dist/index.js",
6
+ "types": "dist/index.d.ts",
7
+ "files": [
8
+ "dist",
9
+ "README.md"
10
+ ],
11
+ "scripts": {
12
+ "dev": "next dev",
13
+ "build": "next build",
14
+ "build:lib": "tsc --project tsconfig.lib.json",
15
+ "start": "next start",
16
+ "lint": "next lint",
17
+ "storybook": "storybook dev -p 6006",
18
+ "build_storybook": "storybook build",
19
+ "demo:test": "cd apps/test_app && tsx main.ts",
20
+ "test": "jest",
21
+ "test:watch": "jest --watch",
22
+ "test:coverage": "jest --coverage",
23
+ "test:integration": "POSTGREST_INTEGRATION=true jest --runInBand tests/integration/postgrest.integration.test.ts",
24
+ "prepublishOnly": "npm run build:lib",
25
+ "postinstall": "patch-package"
26
+ },
27
+ "repository": {
28
+ "type": "git",
29
+ "url": "git+https://github.com/pub12/hazo_connect.git"
30
+ },
31
+ "keywords": [
32
+ "database",
33
+ "connection",
34
+ "postgrest"
35
+ ],
36
+ "author": "Pubs Abayasiri",
37
+ "license": "MIT",
38
+ "bugs": {
39
+ "url": "https://github.com/pub12/hazo_connect/issues"
40
+ },
41
+ "homepage": "https://github.com/pub12/hazo_connect#readme",
42
+ "dependencies": {
43
+ "dotenv": "^16.4.5",
44
+ "hazo_config": "^1.3.0",
45
+ "next": "14.2.5",
46
+ "react": "18.3.1",
47
+ "react-dom": "18.3.1"
48
+ },
49
+ "devDependencies": {
50
+ "@storybook/addon-essentials": "^8.2.6",
51
+ "@storybook/addon-interactions": "^8.2.6",
52
+ "@storybook/experimental-nextjs-vite": "^8.6.14",
53
+ "@storybook/nextjs": "^8.2.6",
54
+ "@storybook/react": "^8.2.6",
55
+ "@storybook/test": "^8.2.6",
56
+ "@types/jest": "^30.0.0",
57
+ "@types/node": "^20.14.10",
58
+ "@types/react": "^18.3.3",
59
+ "@types/react-dom": "^18.3.0",
60
+ "autoprefixer": "^10.4.19",
61
+ "eslint": "^8.57.0",
62
+ "eslint-config-next": "14.2.5",
63
+ "jest": "^30.2.0",
64
+ "jest-environment-node": "^30.2.0",
65
+ "patch-package": "^8.0.1",
66
+ "postcss": "^8.4.39",
67
+ "storybook": "^8.2.6",
68
+ "tailwindcss": "^3.4.10",
69
+ "ts-jest": "^29.4.5",
70
+ "tsx": "^4.17.0",
71
+ "typescript": "^5.5.4"
72
+ }
73
+ }