hazo_connect 2.4.5 → 2.4.7

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md CHANGED
@@ -470,7 +470,7 @@ const hazo = createHazoConnect({
470
470
  | Variable | Description | Default |
471
471
  |----------|-------------|---------|
472
472
  | `HAZO_CONNECT_TYPE` | Database type (`sqlite`, `postgrest`, `supabase`) | `sqlite` |
473
- | `HAZO_CONNECT_SQLITE_PATH` | Path to SQLite database file | `./database.sqlite` |
473
+ | `HAZO_CONNECT_SQLITE_PATH` | Path to SQLite database file. Ignored when the config object supplies `sqlite.initial_sql` (so test seeds aren't overridden by ambient env). | `./database.sqlite` |
474
474
  | `HAZO_CONNECT_SQLITE_READONLY` | Enable read-only mode | `false` |
475
475
  | `HAZO_CONNECT_SQLITE_WASM_DIR` | Path to sql-wasm.wasm directory | Auto-detected |
476
476
  | `HAZO_CONNECT_ENABLE_ADMIN_UI` | Enable SQLite admin UI | `false` |
@@ -524,6 +524,47 @@ const hazo = createHazoConnect({
524
524
 
525
525
  See [docs/logging.md](docs/logging.md) for detailed configuration options.
526
526
 
527
+ ### Debug Integration (hazo_debug)
528
+
529
+ hazo_connect emits structured `query_executed` and `query_failed` log entries at DEBUG level with timing data. You can forward these to [hazo_debug](https://github.com/pub12/hazo_debug)'s SQL tab by passing a custom logger:
530
+
531
+ ```typescript
532
+ import { createCrudService } from 'hazo_connect/server';
533
+ import { use_debug_query } from 'hazo_debug/client';
534
+
535
+ // In your React component or provider:
536
+ const { log_query } = use_debug_query();
537
+
538
+ const debug_logger = {
539
+ debug: (msg: string, data?: Record<string, unknown>) => {
540
+ if (msg === 'query_executed') log_query(data);
541
+ },
542
+ info: () => {},
543
+ warn: () => {},
544
+ error: (msg: string, data?: Record<string, unknown>) => {
545
+ if (msg === 'query_failed') log_query(data);
546
+ },
547
+ };
548
+
549
+ const service = createCrudService(adapter, 'hazo_users', {
550
+ logger: debug_logger,
551
+ });
552
+ ```
553
+
554
+ The structured log entries include:
555
+
556
+ | Field | Type | Description |
557
+ |-------|------|-------------|
558
+ | `operation` | `string` | `SELECT`, `INSERT`, `UPDATE`, or `DELETE` |
559
+ | `table` | `string` | Table name being queried |
560
+ | `duration_ms` | `number` | Query execution time in milliseconds |
561
+ | `rows_returned` | `number?` | Number of rows returned (SELECT) |
562
+ | `rows_affected` | `number?` | Number of rows affected (INSERT/UPDATE/DELETE) |
563
+ | `adapter` | `string?` | Adapter class name (e.g., `SqliteAdapter`) |
564
+ | `error` | `string?` | Error message (only on `query_failed`) |
565
+
566
+ **Note:** hazo_debug is an optional peer dependency. hazo_connect does NOT import it — the integration works entirely through the Logger interface.
567
+
527
568
  ---
528
569
 
529
570
  ## Key Interfaces
package/dist/factory.js CHANGED
@@ -138,7 +138,7 @@ function createHazoConnect(config) {
138
138
  providerConfig.sqlite.database_path = path_1.default.resolve(process.cwd(), dbPath);
139
139
  }
140
140
  }
141
- else if (process.env.HAZO_CONNECT_SQLITE_PATH || process.env.SQLITE_DATABASE_PATH) {
141
+ else if (!providerConfig.sqlite?.initial_sql?.length && (process.env.HAZO_CONNECT_SQLITE_PATH || process.env.SQLITE_DATABASE_PATH)) {
142
142
  const envPath = process.env.HAZO_CONNECT_SQLITE_PATH || process.env.SQLITE_DATABASE_PATH || '';
143
143
  providerConfig.sqlite = providerConfig.sqlite || {};
144
144
  if (path_1.default.isAbsolute(envPath)) {
@@ -1 +1 @@
1
- {"version":3,"file":"factory.js","sourceRoot":"","sources":["../src/lib/factory.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"factory.js","sourceRoot":"","sources":["../src/lib/factory.ts"],"names":[],"mappings":";AAAA;;;;;;GAMG;;;;;AA0FH,8CA8FC;AAtLD,gDAAuB;AACvB,oDAA2B;AAG3B,0EAAkE;AAClE,wEAAgE;AAChE,oEAA4D;AAC5D,gEAAwD;AACxD,gEAAiE;AAEjE,yFAAyF;AACzF,gBAAM,CAAC,MAAM,CAAC,EAAE,IAAI,EAAE,cAAI,CAAC,OAAO,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,YAAY,CAAC,EAAE,CAAC,CAAA;AAElE;;;GAGG;AACH,SAAS,sBAAsB;IAC7B,OAAO,OAAO,CAAC,GAAG,CAAC,iBAAiB,IAAI,OAAO,CAAC,GAAG,CAAC,iBAAiB,IAAI,EAAE,CAAA;AAC7E,CAAC;AAED;;;GAGG;AACH,SAAS,4BAA4B;IACnC,MAAM,GAAG,GAAG,OAAO,CAAC,GAAG,CAAC,YAAY,IAAI,OAAO,CAAC,GAAG,CAAC,wBAAwB,IAAI,EAAE,CAAA;IAClF,MAAM,OAAO,GAAG,OAAO,CAAC,GAAG,CAAC,iBAAiB,IAAI,OAAO,CAAC,GAAG,CAAC,6BAA6B,IAAI,EAAE,CAAA;IAChG,MAAM,cAAc,GAAG,OAAO,CAAC,GAAG,CAAC,yBAAyB,IAAI,EAAE,CAAA;IAElE,OAAO;QACL,QAAQ,EAAE;YACR,GAAG;YACH,QAAQ,EAAE,OAAO;YACjB,gBAAgB,EAAE,cAAc,IAAI,SAAS;SAC9C;KACF,CAAA;AACH,CAAC;AAED;;;;GAIG;AACH,SAAS,sBAAsB,CAAC,cAA+B;IAC7D,MAAM,SAAS,GAAG,sBAAsB,EAAE,CAAA;IAC1C,IAAI,CAAC,SAAS,EAAE,CAAC;QACf,MAAM,IAAI,KAAK,CAAC,8EAA8E,CAAC,CAAA;IACjG,CAAC;IAED,MAAM,OAAO,GAAG,cAAc;QAC5B,CAAC,CAAC,cAAc,CAAC,GAAG,CAAC,WAAW,EAAE,UAAU,CAAC,IAAI,EAAE;QACnD,CAAC,CAAC,EAAE,CAAA;IAEN,OAAO;QACL,SAAS,EAAE;YACT,QAAQ,EAAE,OAAO;YACjB,OAAO,EAAE,SAAS;SACnB;KACF,CAAA;AACH,CAAC;AAED;;;;;GAKG;AACH,SAAS,yBAAyB,CAAC,cAA8B,EAAE,IAAY;IAC7E,IAAI,IAAI,KAAK,WAAW,EAAE,CAAC;QACzB,OAAO,sBAAsB,CAAC,cAAc,CAAC,CAAA;IAC/C,CAAC;SAAM,IAAI,IAAI,KAAK,UAAU,EAAE,CAAC;QAC/B,OAAO,EAAE,QAAQ,EAAE,cAAc,CAAC,UAAU,CAAC,UAAU,CAAC,IAAI,EAAE,EAAE,CAAA;IAClE,CAAC;SAAM,IAAI,IAAI,KAAK,QAAQ,EAAE,CAAC;QAC7B,OAAO,EAAE,MAAM,EAAE,cAAc,CAAC,UAAU,CAAC,QAAQ,CAAC,IAAI,EAAE,EAAE,CAAA;IAC9D,CAAC;SAAM,IAAI,IAAI,KAAK,MAAM,EAAE,CAAC;QAC3B,OAAO,EAAE,IAAI,EAAE,cAAc,CAAC,UAAU,CAAC,MAAM,CAAC,IAAI,EAAE,EAAE,CAAA;IAC1D,CAAC;IAED,OAAO,EAAE,CAAA;AACX,CAAC;AAED;;;;;GAKG;AACH,SAAgB,iBAAiB,CAAC,MAAyB;IACzD,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,cAAc,EAAE,GAAG,oBAAoB,EAAE,GAAG,MAAM,CAAA;IAExE,gBAAgB;IAChB,IAAI,CAAC,IAAI,EAAE,CAAC;QACV,MAAM,IAAI,KAAK,CACb,+BAA+B;YAC/B,yDAAyD;YACzD,gDAAgD,CACjD,CAAA;IACH,CAAC;IAED,8EAA8E;IAC9E,IAAI,cAAmB,CAAA;IACvB,IAAI,cAAc,EAAE,CAAC;QACnB,cAAc,GAAG,yBAAyB,CAAC,cAAc,EAAE,IAAI,CAAC,CAAA;IAClE,CAAC;SAAM,CAAC;QACN,cAAc,GAAG,EAAE,GAAG,oBAAoB,EAAE,CAAA;QAE5C,4DAA4D;QAC5D,IAAI,CAAC,IAAI,IAAI,OAAO,CAAC,GAAG,CAAC,iBAAiB,EAAE,CAAC;YAC3C,MAAM,OAAO,GAAG,OAAO,CAAC,GAAG,CAAC,iBAAiB,CAAC,WAAW,EAAE,CAAA;YAC3D,IAAI,CAAC,WAAW,EAAE,UAAU,EAAE,QAAQ,EAAE,MAAM,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC,EAAE,CAAC;gBAClE,cAAc,CAAC,IAAI,GAAG,OAAO,CAAA;YAC/B,CAAC;QACH,CAAC;QAED,IAAI,IAAI,KAAK,WAAW,EAAE,CAAC;YACzB,MAAM,eAAe,GAAG,sBAAsB,EAAE,CAAA;YAChD,yEAAyE;YACzE,cAAc,CAAC,SAAS,GAAG;gBACzB,GAAG,eAAe,CAAC,SAAS;gBAC5B,GAAG,CAAC,cAAc,CAAC,SAAS,IAAI,EAAE,CAAC;aACpC,CAAA;QACH,CAAC;aAAM,IAAI,IAAI,KAAK,UAAU,EAAE,CAAC;YAC/B,4DAA4D;YAC5D,MAAM,iBAAiB,GAAG,4BAA4B,EAAE,CAAA;YACxD,gEAAgE;YAChE,cAAc,CAAC,QAAQ,GAAG;gBACxB,GAAG,iBAAiB,CAAC,QAAQ;gBAC7B,GAAG,CAAC,cAAc,CAAC,QAAQ,IAAI,EAAE,CAAC;aACnC,CAAA;QACH,CAAC;aAAM,IAAI,IAAI,KAAK,QAAQ,EAAE,CAAC;YAC7B,qDAAqD;YACrD,IAAI,cAAc,CAAC,MAAM,EAAE,aAAa,EAAE,CAAC;gBACzC,MAAM,MAAM,GAAG,cAAc,CAAC,MAAM,CAAC,aAAa,CAAA;gBAClD,+BAA+B;gBAC/B,IAAI,CAAC,cAAI,CAAC,UAAU,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC,UAAU,CAAC,EAAE,CAAC;oBAC/D,cAAc,CAAC,MAAM,CAAC,aAAa,GAAG,cAAI,CAAC,OAAO,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,MAAM,CAAC,CAAA;gBAC3E,CAAC;YACH,CAAC;iBAAM,IAAI,CAAC,cAAc,CAAC,MAAM,EAAE,WAAW,EAAE,MAAM,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,wBAAwB,IAAI,OAAO,CAAC,GAAG,CAAC,oBAAoB,CAAC,EAAE,CAAC;gBACrI,MAAM,OAAO,GAAG,OAAO,CAAC,GAAG,CAAC,wBAAwB,IAAI,OAAO,CAAC,GAAG,CAAC,oBAAoB,IAAI,EAAE,CAAA;gBAC9F,cAAc,CAAC,MAAM,GAAG,cAAc,CAAC,MAAM,IAAI,EAAE,CAAA;gBACnD,IAAI,cAAI,CAAC,UAAU,CAAC,OAAO,CAAC,EAAE,CAAC;oBAC7B,cAAc,CAAC,MAAM,CAAC,aAAa,GAAG,OAAO,CAAA;gBAC/C,CAAC;qBAAM,CAAC;oBACN,cAAc,CAAC,MAAM,CAAC,aAAa,GAAG,cAAI,CAAC,OAAO,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,OAAO,CAAC,CAAA;gBAC5E,CAAC;YACH,CAAC;QACH,CAAC;IACH,CAAC;IAED,IAAI,OAA2B,CAAA;IAE/B,QAAQ,IAAI,EAAE,CAAC;QACb,KAAK,WAAW;YACd,OAAO,GAAG,IAAI,uCAAgB,CAAC,cAAc,EAAE,MAAM,CAAC,CAAA;YACtD,MAAK;QAEP,KAAK,UAAU;YACb,OAAO,GAAG,IAAI,qCAAe,CAAC,cAAc,EAAE,MAAM,CAAC,CAAA;YACrD,MAAK;QAEP,KAAK,QAAQ;YACX,OAAO,GAAG,IAAI,iCAAa,CAAC,cAAc,EAAE,MAAM,CAAC,CAAA;YACnD,wFAAwF;YACxF,IAAI,MAAM,CAAC,eAAe,KAAK,IAAI,IAAI,OAAO,YAAY,iCAAa,EAAE,CAAC;gBACxE,IAAA,wCAAqB,EAAC,OAAO,CAAC,CAAA;YAChC,CAAC;YACD,MAAK;QAEP,KAAK,MAAM;YACT,OAAO,GAAG,IAAI,6BAAW,CAAC,cAAc,EAAE,MAAM,CAAC,CAAA;YACjD,MAAK;QAEP;YACE,MAAM,IAAI,KAAK,CACb,gCAAgC,IAAI,IAAI;gBACxC,sDAAsD;gBACtD,8EAA8E,CAC/E,CAAA;IACL,CAAC;IAED,OAAO,OAAO,CAAA;AAChB,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"helpers.d.ts","sourceRoot":"","sources":["../src/lib/helpers.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"helpers.d.ts","sourceRoot":"","sources":["../src/lib/helpers.ts"],"names":[],"mappings":"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"}
package/dist/helpers.js CHANGED
@@ -15,6 +15,19 @@ exports.createCrudService = createCrudService;
15
15
  exports.executeQuery = executeQuery;
16
16
  const crypto_1 = require("crypto");
17
17
  const query_builder_js_1 = require("./query-builder.js");
18
+ /**
19
+ * Map HTTP method to SQL operation name for structured debug logging.
20
+ */
21
+ function methodToOperation(method) {
22
+ switch (method.toUpperCase()) {
23
+ case 'GET': return 'SELECT';
24
+ case 'POST': return 'INSERT';
25
+ case 'PUT':
26
+ case 'PATCH': return 'UPDATE';
27
+ case 'DELETE': return 'DELETE';
28
+ default: return method.toUpperCase();
29
+ }
30
+ }
18
31
  /**
19
32
  * Create a query builder for a table and attach the adapter execute method.
20
33
  * @param adapter - Active Hazo Connect adapter
@@ -36,12 +49,33 @@ function createTableQuery(adapter, table, logger) {
36
49
  function attachExecute(builder, adapter, logger) {
37
50
  const executable = builder;
38
51
  executable.execute = async (method = 'GET', body) => {
39
- logger?.debug?.('Executing Hazo Connect query', {
40
- method,
41
- table: builder.getTable(),
42
- hasBody: Boolean(body)
43
- });
44
- return adapter.query(builder, method, body);
52
+ const table = builder.getTable() || 'unknown';
53
+ const operation = methodToOperation(method);
54
+ const start = Date.now();
55
+ try {
56
+ const result = await adapter.query(builder, method, body);
57
+ const duration_ms = Date.now() - start;
58
+ logger?.debug?.('query_executed', {
59
+ operation,
60
+ table,
61
+ duration_ms,
62
+ rows_returned: Array.isArray(result) ? result.length : undefined,
63
+ rows_affected: typeof result?.count === 'number' ? result.count : undefined,
64
+ adapter: adapter.constructor?.name,
65
+ });
66
+ return result;
67
+ }
68
+ catch (error) {
69
+ const duration_ms = Date.now() - start;
70
+ logger?.error?.('query_failed', {
71
+ operation,
72
+ table,
73
+ duration_ms,
74
+ error: error instanceof Error ? error.message : String(error),
75
+ adapter: adapter.constructor?.name,
76
+ });
77
+ throw error;
78
+ }
45
79
  };
46
80
  return executable;
47
81
  }
@@ -177,10 +211,32 @@ function createCrudService(adapter, table, options = {}) {
177
211
  * @returns Result of adapter query
178
212
  */
179
213
  async function executeQuery(adapter, builder, method = 'GET', body, logger) {
180
- logger?.debug?.('Executing query via executeQuery helper', {
181
- method,
182
- table: builder.getTable()
183
- });
184
- return adapter.query(builder, method, body);
214
+ const table = builder.getTable() || 'unknown';
215
+ const operation = methodToOperation(method);
216
+ const start = Date.now();
217
+ try {
218
+ const result = await adapter.query(builder, method, body);
219
+ const duration_ms = Date.now() - start;
220
+ logger?.debug?.('query_executed', {
221
+ operation,
222
+ table,
223
+ duration_ms,
224
+ rows_returned: Array.isArray(result) ? result.length : undefined,
225
+ rows_affected: typeof result?.count === 'number' ? result.count : undefined,
226
+ adapter: adapter.constructor?.name,
227
+ });
228
+ return result;
229
+ }
230
+ catch (error) {
231
+ const duration_ms = Date.now() - start;
232
+ logger?.error?.('query_failed', {
233
+ operation,
234
+ table,
235
+ duration_ms,
236
+ error: error instanceof Error ? error.message : String(error),
237
+ adapter: adapter.constructor?.name,
238
+ });
239
+ throw error;
240
+ }
185
241
  }
186
242
  //# sourceMappingURL=helpers.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"helpers.js","sourceRoot":"","sources":["../src/lib/helpers.ts"],"names":[],"mappings":";AAAA;;;;;;;;GAQG;;AA0BH,4CAOC;AASD,sCAeC;AAkDD,8CAmIC;AAWD,oCAYC;AAnQD,mCAAmC;AAEnC,yDAAiD;AAejD;;;;;;GAMG;AACH,SAAgB,gBAAgB,CAC9B,OAA2B,EAC3B,KAAa,EACb,MAAe;IAEf,MAAM,OAAO,GAAG,IAAI,+BAAY,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,CAAA;IAC9C,OAAO,aAAa,CAAC,OAAO,EAAE,OAAO,EAAE,MAAM,CAAC,CAAA;AAChD,CAAC;AAED;;;;;;GAMG;AACH,SAAgB,aAAa,CAC3B,OAAqB,EACrB,OAA2B,EAC3B,MAAe;IAEf,MAAM,UAAU,GAAG,OAAiC,CAAA;IACpD,UAAU,CAAC,OAAO,GAAG,KAAK,EAAE,SAAsB,KAAK,EAAE,IAAc,EAAE,EAAE;QACzE,MAAM,EAAE,KAAK,EAAE,CAAC,8BAA8B,EAAE;YAC9C,MAAM;YACN,KAAK,EAAE,OAAO,CAAC,QAAQ,EAAE;YACzB,OAAO,EAAE,OAAO,CAAC,IAAI,CAAC;SACvB,CAAC,CAAA;QACF,OAAO,OAAO,CAAC,KAAK,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,CAAC,CAAA;IAC7C,CAAC,CAAA;IACD,OAAO,UAAU,CAAA;AACnB,CAAC;AA2CD;;;;;;GAMG;AACH,SAAgB,iBAAiB,CAC/B,OAA2B,EAC3B,KAAa,EACb,UAA8B,EAAE;IAEhC,MAAM,WAAW,GAAG,OAAO,CAAC,WAAW,IAAI,OAAO,CAAC,WAAW,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAA;IACxG,MAAM,MAAM,GAAG,OAAO,CAAC,MAAM,CAAA;IAE7B,6DAA6D;IAC7D,MAAM,YAAY,GAAiB,OAAO,CAAC,MAAM,KAAK,SAAS;QAC7D,CAAC,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,CAAQ,mBAAmB;QAC5D,CAAC,CAAC,OAAO,CAAC,MAAM,KAAK,KAAK;YACxB,CAAC,CAAC,EAAE,OAAO,EAAE,KAAK,EAAE,CAAoB,mBAAmB;YAC3D,CAAC,CAAC,OAAO,CAAC,MAAM,CAAA,CAAwB,gBAAgB;IAE5D,SAAS,UAAU;QACjB,MAAM,EAAE,GAAG,gBAAgB,CAAC,OAAO,EAAE,KAAK,EAAE,MAAM,CAAC,CAAA;QACnD,IAAI,OAAO,CAAC,QAAQ,EAAE,CAAC;YACrB,EAAE,CAAC,KAAK,CAAC,UAAU,EAAE,IAAI,EAAE,OAAO,CAAC,QAAQ,CAAC,CAAA;QAC9C,CAAC;QACD,OAAO,EAAE,CAAA;IACX,CAAC;IAED,KAAK,UAAU,IAAI,CAAC,SAA8C;QAChE,IAAI,EAAE,GAAG,UAAU,EAAE,CAAA;QACrB,IAAI,SAAS,EAAE,CAAC;YACd,EAAE,GAAG,SAAS,CAAC,EAAE,CAA2B,CAAA;QAC9C,CAAC;QACD,MAAM,MAAM,GAAG,MAAM,EAAE,CAAC,OAAO,CAAC,KAAK,CAAC,CAAA;QACtC,OAAO,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,CAAE,MAAc,CAAC,CAAC,CAAC,EAAE,CAAA;IACrD,CAAC;IAED,KAAK,UAAU,MAAM,CAAC,QAAiC;QACrD,MAAM,EAAE,GAAG,UAAU,EAAE,CAAA;QACvB,KAAK,MAAM,CAAC,KAAK,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,QAAQ,CAAC,EAAE,CAAC;YACtD,EAAE,CAAC,KAAK,CAAC,KAAK,EAAE,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,EAAE,KAAK,CAAC,CAAA;QAC5D,CAAC;QACD,OAAO,IAAI,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,CAAA;IACvB,CAAC;IAED,KAAK,UAAU,SAAS,CAAC,QAAiC;QACxD,MAAM,OAAO,GAAG,MAAM,MAAM,CAAC,QAAQ,CAAC,CAAA;QACtC,OAAO,OAAO,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAA;IAC/C,CAAC;IAED,KAAK,UAAU,QAAQ,CAAC,EAAW;QACjC,IAAI,WAAW,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YAC7B,MAAM,EAAE,IAAI,EAAE,CAAC,uEAAuE,EAAE;gBACtF,KAAK;gBACL,WAAW;aACZ,CAAC,CAAA;QACJ,CAAC;QACD,MAAM,GAAG,GAAG,WAAW,CAAC,CAAC,CAAC,CAAA;QAC1B,OAAO,SAAS,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,EAAE,EAAE,CAAC,CAAA;IACjC,CAAC;IAED,KAAK,UAAU,MAAM,CAAC,IAA+B;QACnD,MAAM,EAAE,GAAG,UAAU,EAAE,CAAA;QACvB,gDAAgD;QAChD,IAAI,OAAO,GAAG,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC;YAC/B,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,GAAG,GAAG,EAAE,CAAC,CAAC;YAC/B,CAAC,CAAC,CAAC,EAAE,GAAG,IAAI,EAAE,CAAC,CAAA;QAEjB,mDAAmD;QACnD,IAAI,YAAY,CAAC,OAAO,EAAE,CAAC;YACzB,MAAM,QAAQ,GAAG,YAAY,CAAC,MAAM,IAAI,IAAI,CAAA;YAC5C,OAAO,GAAG,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE;gBAC1B,MAAM,SAAS,GAAG,GAA8B,CAAA;gBAChD,IAAI,SAAS,CAAC,QAAQ,CAAC,KAAK,SAAS,IAAI,SAAS,CAAC,QAAQ,CAAC,KAAK,IAAI,EAAE,CAAC;oBACtE,OAAO,EAAE,GAAG,GAAG,EAAE,CAAC,QAAQ,CAAC,EAAE,IAAA,mBAAU,GAAE,EAAgB,CAAA;gBAC3D,CAAC;gBACD,OAAO,GAAG,CAAA;YACZ,CAAC,CAAC,CAAA;QACJ,CAAC;QAED,uDAAuD;QACvD,IAAI,OAAO,CAAC,QAAQ,EAAE,CAAC;YACrB,OAAO,GAAG,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE;gBAC1B,MAAM,SAAS,GAAG,GAA8B,CAAA;gBAChD,IAAI,SAAS,CAAC,QAAQ,KAAK,SAAS,IAAI,SAAS,CAAC,QAAQ,KAAK,IAAI,EAAE,CAAC;oBACpE,OAAO,EAAE,GAAG,GAAG,EAAE,QAAQ,EAAE,OAAO,CAAC,QAAQ,EAAgB,CAAA;gBAC7D,CAAC;gBACD,OAAO,GAAG,CAAA;YACZ,CAAC,CAAC,CAAA;QACJ,CAAC;QAED,MAAM,MAAM,GAAG,MAAM,EAAE,CAAC,OAAO,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;QAChD,IAAI,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC;YAC1B,OAAO,MAAa,CAAA;QACtB,CAAC;QACD,OAAO,OAAc,CAAA;IACvB,CAAC;IAED,KAAK,UAAU,UAAU,CAAC,EAAW,EAAE,KAAiB;QACtD,MAAM,EAAE,GAAG,UAAU,EAAE,CAAA;QACvB,IAAI,WAAW,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YAC7B,MAAM,EAAE,IAAI,EAAE,CAAC,yEAAyE,EAAE;gBACxF,KAAK;gBACL,WAAW;aACZ,CAAC,CAAA;QACJ,CAAC;QACD,EAAE,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,EAAE,CAAC,CAAA;QAClC,MAAM,MAAM,GAAG,MAAM,EAAE,CAAC,OAAO,CAAC,OAAO,EAAE,KAAK,CAAC,CAAA;QAC/C,IAAI,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC;YAC1B,OAAO,MAAa,CAAA;QACtB,CAAC;QACD,OAAO,CAAC,EAAE,GAAI,KAAiC,EAAE,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,EAAE,CAAQ,CAAA;IACjF,CAAC;IAED,KAAK,UAAU,UAAU,CAAC,EAAW;QACnC,MAAM,EAAE,GAAG,UAAU,EAAE,CAAA;QACvB,IAAI,WAAW,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YAC7B,MAAM,EAAE,IAAI,EAAE,CAAC,yEAAyE,EAAE;gBACxF,KAAK;gBACL,WAAW;aACZ,CAAC,CAAA;QACJ,CAAC;QACD,EAAE,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,EAAE,CAAC,CAAA;QAClC,MAAM,EAAE,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAA;IAC5B,CAAC;IAED,OAAO;QACL,IAAI;QACJ,MAAM;QACN,SAAS;QACT,QAAQ;QACR,MAAM;QACN,UAAU;QACV,UAAU;QACV,KAAK,EAAE,UAAU;KAClB,CAAA;AACH,CAAC;AAED;;;;;;;;GAQG;AACI,KAAK,UAAU,YAAY,CAChC,OAA2B,EAC3B,OAAqB,EACrB,SAAsB,KAAK,EAC3B,IAAc,EACd,MAAe;IAEf,MAAM,EAAE,KAAK,EAAE,CAAC,yCAAyC,EAAE;QACzD,MAAM;QACN,KAAK,EAAE,OAAO,CAAC,QAAQ,EAAE;KAC1B,CAAC,CAAA;IACF,OAAO,OAAO,CAAC,KAAK,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,CAAC,CAAA;AAC7C,CAAC"}
1
+ {"version":3,"file":"helpers.js","sourceRoot":"","sources":["../src/lib/helpers.ts"],"names":[],"mappings":";AAAA;;;;;;;;GAQG;;AAwCH,4CAOC;AASD,sCAwCC;AAkDD,8CAmIC;AAWD,oCAsCC;AApUD,mCAAmC;AAEnC,yDAAiD;AAQjD;;GAEG;AACH,SAAS,iBAAiB,CAAC,MAAc;IACvC,QAAQ,MAAM,CAAC,WAAW,EAAE,EAAE,CAAC;QAC7B,KAAK,KAAK,CAAC,CAAC,OAAO,QAAQ,CAAA;QAC3B,KAAK,MAAM,CAAC,CAAC,OAAO,QAAQ,CAAA;QAC5B,KAAK,KAAK,CAAC;QACX,KAAK,OAAO,CAAC,CAAC,OAAO,QAAQ,CAAA;QAC7B,KAAK,QAAQ,CAAC,CAAC,OAAO,QAAQ,CAAA;QAC9B,OAAO,CAAC,CAAC,OAAO,MAAM,CAAC,WAAW,EAAE,CAAA;IACtC,CAAC;AACH,CAAC;AASD;;;;;;GAMG;AACH,SAAgB,gBAAgB,CAC9B,OAA2B,EAC3B,KAAa,EACb,MAAe;IAEf,MAAM,OAAO,GAAG,IAAI,+BAAY,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,CAAA;IAC9C,OAAO,aAAa,CAAC,OAAO,EAAE,OAAO,EAAE,MAAM,CAAC,CAAA;AAChD,CAAC;AAED;;;;;;GAMG;AACH,SAAgB,aAAa,CAC3B,OAAqB,EACrB,OAA2B,EAC3B,MAAe;IAEf,MAAM,UAAU,GAAG,OAAiC,CAAA;IACpD,UAAU,CAAC,OAAO,GAAG,KAAK,EAAE,SAAsB,KAAK,EAAE,IAAc,EAAE,EAAE;QACzE,MAAM,KAAK,GAAG,OAAO,CAAC,QAAQ,EAAE,IAAI,SAAS,CAAA;QAC7C,MAAM,SAAS,GAAG,iBAAiB,CAAC,MAAM,CAAC,CAAA;QAC3C,MAAM,KAAK,GAAG,IAAI,CAAC,GAAG,EAAE,CAAA;QAExB,IAAI,CAAC;YACH,MAAM,MAAM,GAAG,MAAM,OAAO,CAAC,KAAK,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,CAAC,CAAA;YACzD,MAAM,WAAW,GAAG,IAAI,CAAC,GAAG,EAAE,GAAG,KAAK,CAAA;YAEtC,MAAM,EAAE,KAAK,EAAE,CAAC,gBAAgB,EAAE;gBAChC,SAAS;gBACT,KAAK;gBACL,WAAW;gBACX,aAAa,EAAE,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,SAAS;gBAChE,aAAa,EAAE,OAAO,MAAM,EAAE,KAAK,KAAK,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,SAAS;gBAC3E,OAAO,EAAE,OAAO,CAAC,WAAW,EAAE,IAAI;aACnC,CAAC,CAAA;YAEF,OAAO,MAAM,CAAA;QACf,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,MAAM,WAAW,GAAG,IAAI,CAAC,GAAG,EAAE,GAAG,KAAK,CAAA;YAEtC,MAAM,EAAE,KAAK,EAAE,CAAC,cAAc,EAAE;gBAC9B,SAAS;gBACT,KAAK;gBACL,WAAW;gBACX,KAAK,EAAE,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC;gBAC7D,OAAO,EAAE,OAAO,CAAC,WAAW,EAAE,IAAI;aACnC,CAAC,CAAA;YAEF,MAAM,KAAK,CAAA;QACb,CAAC;IACH,CAAC,CAAA;IACD,OAAO,UAAU,CAAA;AACnB,CAAC;AA2CD;;;;;;GAMG;AACH,SAAgB,iBAAiB,CAC/B,OAA2B,EAC3B,KAAa,EACb,UAA8B,EAAE;IAEhC,MAAM,WAAW,GAAG,OAAO,CAAC,WAAW,IAAI,OAAO,CAAC,WAAW,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAA;IACxG,MAAM,MAAM,GAAG,OAAO,CAAC,MAAM,CAAA;IAE7B,6DAA6D;IAC7D,MAAM,YAAY,GAAiB,OAAO,CAAC,MAAM,KAAK,SAAS;QAC7D,CAAC,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,CAAQ,mBAAmB;QAC5D,CAAC,CAAC,OAAO,CAAC,MAAM,KAAK,KAAK;YACxB,CAAC,CAAC,EAAE,OAAO,EAAE,KAAK,EAAE,CAAoB,mBAAmB;YAC3D,CAAC,CAAC,OAAO,CAAC,MAAM,CAAA,CAAwB,gBAAgB;IAE5D,SAAS,UAAU;QACjB,MAAM,EAAE,GAAG,gBAAgB,CAAC,OAAO,EAAE,KAAK,EAAE,MAAM,CAAC,CAAA;QACnD,IAAI,OAAO,CAAC,QAAQ,EAAE,CAAC;YACrB,EAAE,CAAC,KAAK,CAAC,UAAU,EAAE,IAAI,EAAE,OAAO,CAAC,QAAQ,CAAC,CAAA;QAC9C,CAAC;QACD,OAAO,EAAE,CAAA;IACX,CAAC;IAED,KAAK,UAAU,IAAI,CAAC,SAA8C;QAChE,IAAI,EAAE,GAAG,UAAU,EAAE,CAAA;QACrB,IAAI,SAAS,EAAE,CAAC;YACd,EAAE,GAAG,SAAS,CAAC,EAAE,CAA2B,CAAA;QAC9C,CAAC;QACD,MAAM,MAAM,GAAG,MAAM,EAAE,CAAC,OAAO,CAAC,KAAK,CAAC,CAAA;QACtC,OAAO,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,CAAE,MAAc,CAAC,CAAC,CAAC,EAAE,CAAA;IACrD,CAAC;IAED,KAAK,UAAU,MAAM,CAAC,QAAiC;QACrD,MAAM,EAAE,GAAG,UAAU,EAAE,CAAA;QACvB,KAAK,MAAM,CAAC,KAAK,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,QAAQ,CAAC,EAAE,CAAC;YACtD,EAAE,CAAC,KAAK,CAAC,KAAK,EAAE,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,EAAE,KAAK,CAAC,CAAA;QAC5D,CAAC;QACD,OAAO,IAAI,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,CAAA;IACvB,CAAC;IAED,KAAK,UAAU,SAAS,CAAC,QAAiC;QACxD,MAAM,OAAO,GAAG,MAAM,MAAM,CAAC,QAAQ,CAAC,CAAA;QACtC,OAAO,OAAO,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAA;IAC/C,CAAC;IAED,KAAK,UAAU,QAAQ,CAAC,EAAW;QACjC,IAAI,WAAW,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YAC7B,MAAM,EAAE,IAAI,EAAE,CAAC,uEAAuE,EAAE;gBACtF,KAAK;gBACL,WAAW;aACZ,CAAC,CAAA;QACJ,CAAC;QACD,MAAM,GAAG,GAAG,WAAW,CAAC,CAAC,CAAC,CAAA;QAC1B,OAAO,SAAS,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,EAAE,EAAE,CAAC,CAAA;IACjC,CAAC;IAED,KAAK,UAAU,MAAM,CAAC,IAA+B;QACnD,MAAM,EAAE,GAAG,UAAU,EAAE,CAAA;QACvB,gDAAgD;QAChD,IAAI,OAAO,GAAG,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC;YAC/B,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,GAAG,GAAG,EAAE,CAAC,CAAC;YAC/B,CAAC,CAAC,CAAC,EAAE,GAAG,IAAI,EAAE,CAAC,CAAA;QAEjB,mDAAmD;QACnD,IAAI,YAAY,CAAC,OAAO,EAAE,CAAC;YACzB,MAAM,QAAQ,GAAG,YAAY,CAAC,MAAM,IAAI,IAAI,CAAA;YAC5C,OAAO,GAAG,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE;gBAC1B,MAAM,SAAS,GAAG,GAA8B,CAAA;gBAChD,IAAI,SAAS,CAAC,QAAQ,CAAC,KAAK,SAAS,IAAI,SAAS,CAAC,QAAQ,CAAC,KAAK,IAAI,EAAE,CAAC;oBACtE,OAAO,EAAE,GAAG,GAAG,EAAE,CAAC,QAAQ,CAAC,EAAE,IAAA,mBAAU,GAAE,EAAgB,CAAA;gBAC3D,CAAC;gBACD,OAAO,GAAG,CAAA;YACZ,CAAC,CAAC,CAAA;QACJ,CAAC;QAED,uDAAuD;QACvD,IAAI,OAAO,CAAC,QAAQ,EAAE,CAAC;YACrB,OAAO,GAAG,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE;gBAC1B,MAAM,SAAS,GAAG,GAA8B,CAAA;gBAChD,IAAI,SAAS,CAAC,QAAQ,KAAK,SAAS,IAAI,SAAS,CAAC,QAAQ,KAAK,IAAI,EAAE,CAAC;oBACpE,OAAO,EAAE,GAAG,GAAG,EAAE,QAAQ,EAAE,OAAO,CAAC,QAAQ,EAAgB,CAAA;gBAC7D,CAAC;gBACD,OAAO,GAAG,CAAA;YACZ,CAAC,CAAC,CAAA;QACJ,CAAC;QAED,MAAM,MAAM,GAAG,MAAM,EAAE,CAAC,OAAO,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;QAChD,IAAI,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC;YAC1B,OAAO,MAAa,CAAA;QACtB,CAAC;QACD,OAAO,OAAc,CAAA;IACvB,CAAC;IAED,KAAK,UAAU,UAAU,CAAC,EAAW,EAAE,KAAiB;QACtD,MAAM,EAAE,GAAG,UAAU,EAAE,CAAA;QACvB,IAAI,WAAW,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YAC7B,MAAM,EAAE,IAAI,EAAE,CAAC,yEAAyE,EAAE;gBACxF,KAAK;gBACL,WAAW;aACZ,CAAC,CAAA;QACJ,CAAC;QACD,EAAE,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,EAAE,CAAC,CAAA;QAClC,MAAM,MAAM,GAAG,MAAM,EAAE,CAAC,OAAO,CAAC,OAAO,EAAE,KAAK,CAAC,CAAA;QAC/C,IAAI,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC;YAC1B,OAAO,MAAa,CAAA;QACtB,CAAC;QACD,OAAO,CAAC,EAAE,GAAI,KAAiC,EAAE,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,EAAE,CAAQ,CAAA;IACjF,CAAC;IAED,KAAK,UAAU,UAAU,CAAC,EAAW;QACnC,MAAM,EAAE,GAAG,UAAU,EAAE,CAAA;QACvB,IAAI,WAAW,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YAC7B,MAAM,EAAE,IAAI,EAAE,CAAC,yEAAyE,EAAE;gBACxF,KAAK;gBACL,WAAW;aACZ,CAAC,CAAA;QACJ,CAAC;QACD,EAAE,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,EAAE,CAAC,CAAA;QAClC,MAAM,EAAE,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAA;IAC5B,CAAC;IAED,OAAO;QACL,IAAI;QACJ,MAAM;QACN,SAAS;QACT,QAAQ;QACR,MAAM;QACN,UAAU;QACV,UAAU;QACV,KAAK,EAAE,UAAU;KAClB,CAAA;AACH,CAAC;AAED;;;;;;;;GAQG;AACI,KAAK,UAAU,YAAY,CAChC,OAA2B,EAC3B,OAAqB,EACrB,SAAsB,KAAK,EAC3B,IAAc,EACd,MAAe;IAEf,MAAM,KAAK,GAAG,OAAO,CAAC,QAAQ,EAAE,IAAI,SAAS,CAAA;IAC7C,MAAM,SAAS,GAAG,iBAAiB,CAAC,MAAM,CAAC,CAAA;IAC3C,MAAM,KAAK,GAAG,IAAI,CAAC,GAAG,EAAE,CAAA;IAExB,IAAI,CAAC;QACH,MAAM,MAAM,GAAG,MAAM,OAAO,CAAC,KAAK,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,CAAC,CAAA;QACzD,MAAM,WAAW,GAAG,IAAI,CAAC,GAAG,EAAE,GAAG,KAAK,CAAA;QAEtC,MAAM,EAAE,KAAK,EAAE,CAAC,gBAAgB,EAAE;YAChC,SAAS;YACT,KAAK;YACL,WAAW;YACX,aAAa,EAAE,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,SAAS;YAChE,aAAa,EAAE,OAAO,MAAM,EAAE,KAAK,KAAK,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,SAAS;YAC3E,OAAO,EAAE,OAAO,CAAC,WAAW,EAAE,IAAI;SACnC,CAAC,CAAA;QAEF,OAAO,MAAM,CAAA;IACf,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,MAAM,WAAW,GAAG,IAAI,CAAC,GAAG,EAAE,GAAG,KAAK,CAAA;QAEtC,MAAM,EAAE,KAAK,EAAE,CAAC,cAAc,EAAE;YAC9B,SAAS;YACT,KAAK;YACL,WAAW;YACX,KAAK,EAAE,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC;YAC7D,OAAO,EAAE,OAAO,CAAC,WAAW,EAAE,IAAI;SACnC,CAAC,CAAA;QAEF,MAAM,KAAK,CAAA;IACb,CAAC;AACH,CAAC"}
package/package.json CHANGED
@@ -1,14 +1,19 @@
1
1
  {
2
2
  "name": "hazo_connect",
3
- "version": "2.4.5",
3
+ "version": "2.4.7",
4
4
  "description": "Module to connect to the data store (postgres via postgrest, supabase, etc)",
5
5
  "main": "dist/index.js",
6
6
  "types": "dist/index.d.ts",
7
7
  "files": [
8
8
  "dist",
9
- "app/hazo_connect",
10
9
  "scripts",
11
- "docs",
10
+ "docs/examples",
11
+ "docs/logging.md",
12
+ "docs/migration-guide.md",
13
+ "docs/nextjs-setup.md",
14
+ "docs/techdoc.md",
15
+ "docs/troubleshooting.md",
16
+ "docs/types.md",
12
17
  "README.md"
13
18
  ],
14
19
  "bin": {
@@ -38,6 +43,7 @@
38
43
  },
39
44
  "scripts": {
40
45
  "dev": "next dev",
46
+ "dev:test-app": "npm run dev",
41
47
  "build": "next build",
42
48
  "build:lib": "tsc --project tsconfig.build.json",
43
49
  "start": "next start",
@@ -76,18 +82,22 @@
76
82
  "sql.js": "^1.13.0"
77
83
  },
78
84
  "peerDependencies": {
79
- "hazo_config": ">=1.3.0",
80
- "hazo_logs": ">=1.0.5",
85
+ "hazo_config": "^2.1.0",
86
+ "hazo_debug": "^2.0.0",
87
+ "hazo_logs": "^1.0.13",
81
88
  "lucide-react": "^0.553.0",
82
- "next": ">=14.0.0",
83
- "react": ">=18.0.0",
84
- "react-dom": ">=18.0.0",
89
+ "next": "^14.0.0 || ^16.0.0",
90
+ "react": "^18.0.0 || ^19.0.0",
91
+ "react-dom": "^18.0.0 || ^19.0.0",
85
92
  "sonner": "^2.0.7"
86
93
  },
87
94
  "peerDependenciesMeta": {
88
95
  "hazo_config": {
89
96
  "optional": true
90
97
  },
98
+ "hazo_debug": {
99
+ "optional": true
100
+ },
91
101
  "lucide-react": {
92
102
  "optional": true
93
103
  },
@@ -105,20 +115,21 @@
105
115
  }
106
116
  },
107
117
  "devDependencies": {
108
- "hazo_config": "^1.3.0",
109
- "hazo_logs": "^1.0.5",
118
+ "hazo_config": "^2.1.0",
119
+ "hazo_debug": "^2.0.0",
120
+ "hazo_logs": "^1.0.13",
110
121
  "@storybook/addon-essentials": "^8.2.6",
111
122
  "@storybook/addon-interactions": "^8.2.6",
112
123
  "@storybook/experimental-nextjs-vite": "^8.6.14",
113
124
  "@storybook/nextjs": "^8.2.6",
114
125
  "@storybook/react": "^8.2.6",
115
126
  "@storybook/test": "^8.2.6",
127
+ "@tailwindcss/postcss": "^4.2.4",
116
128
  "@types/jest": "^30.0.0",
117
129
  "@types/node": "^20.14.10",
118
130
  "@types/react": "^18.3.3",
119
131
  "@types/react-dom": "^18.3.0",
120
132
  "@types/sql.js": "^1.4.9",
121
- "autoprefixer": "^10.4.19",
122
133
  "eslint": "^8.57.0",
123
134
  "eslint-config-next": "14.2.33",
124
135
  "jest": "^30.2.0",
@@ -126,15 +137,15 @@
126
137
  "lucide-react": "^0.553.0",
127
138
  "next": "14.2.33",
128
139
  "patch-package": "^8.0.1",
129
- "postcss": "^8.4.39",
140
+ "postcss": "^8.4.49",
130
141
  "react": "18.3.1",
131
142
  "react-dom": "18.3.1",
132
143
  "sonner": "^2.0.7",
133
144
  "storybook": "^8.2.6",
134
- "tailwindcss": "^3.4.10",
145
+ "tailwindcss": "^4.2.4",
135
146
  "ts-jest": "^29.4.5",
136
147
  "tsx": "^4.17.0",
137
- "typescript": "^5.5.4"
148
+ "typescript": "^5.7.2"
138
149
  },
139
150
  "overrides": {
140
151
  "glob": "^10.4.6"
@@ -1,197 +0,0 @@
1
- import { NextRequest, NextResponse } from "next/server"
2
- import {
3
- getSqliteAdminService,
4
- type RowQueryOptions,
5
- type SqliteFilterOperator,
6
- type SqliteWhereFilter
7
- } from "hazo_connect/server"
8
- import { getHazoConnectSingleton } from "hazo_connect/nextjs/setup"
9
-
10
- export const dynamic = "force-dynamic"
11
- const allowedOperators: SqliteFilterOperator[] = [
12
- "eq",
13
- "neq",
14
- "gt",
15
- "gte",
16
- "lt",
17
- "lte",
18
- "like",
19
- "ilike",
20
- "is"
21
- ]
22
-
23
- export async function GET(request: NextRequest) {
24
- const url = new URL(request.url)
25
- const table = url.searchParams.get("table")
26
- if (!table) {
27
- return NextResponse.json(
28
- { error: "Query parameter 'table' is required." },
29
- { status: 400 }
30
- )
31
- }
32
-
33
- try {
34
- // Initialize the singleton to ensure the adapter is registered with the admin service
35
- getHazoConnectSingleton()
36
- const service = getSqliteAdminService()
37
- const options = parseRowQueryOptions(url.searchParams)
38
- const page = await service.getTableData(table, options)
39
- return NextResponse.json({ data: page.rows, total: page.total })
40
- } catch (error) {
41
- return toErrorResponse(error, `Failed to fetch data for table '${table}'`)
42
- }
43
- }
44
-
45
- export async function POST(request: NextRequest) {
46
- try {
47
- // Initialize the singleton to ensure the adapter is registered with the admin service
48
- getHazoConnectSingleton()
49
- const service = getSqliteAdminService()
50
- const payload = await request.json()
51
- const table = payload?.table
52
- const data = payload?.data
53
-
54
- if (!table || typeof data !== "object" || Array.isArray(data)) {
55
- return NextResponse.json(
56
- { error: "Request body must include 'table' and a 'data' object." },
57
- { status: 400 }
58
- )
59
- }
60
-
61
- const inserted = await service.insertRow(table, data)
62
- return NextResponse.json({ data: inserted })
63
- } catch (error) {
64
- return toErrorResponse(error, "Failed to insert row")
65
- }
66
- }
67
-
68
- export async function PATCH(request: NextRequest) {
69
- try {
70
- // Initialize the singleton to ensure the adapter is registered with the admin service
71
- getHazoConnectSingleton()
72
- const service = getSqliteAdminService()
73
- const payload = await request.json()
74
- const table = payload?.table
75
- const data = payload?.data
76
- const criteria = payload?.criteria
77
-
78
- if (
79
- !table ||
80
- typeof data !== "object" ||
81
- Array.isArray(data) ||
82
- typeof criteria !== "object" ||
83
- criteria === null ||
84
- Array.isArray(criteria)
85
- ) {
86
- return NextResponse.json(
87
- {
88
- error:
89
- "Request body must include 'table', 'data' object, and a 'criteria' object for the rows to update."
90
- },
91
- { status: 400 }
92
- )
93
- }
94
-
95
- const rows = await service.updateRows(table, criteria, data)
96
- return NextResponse.json({ data: rows, updated: rows.length })
97
- } catch (error) {
98
- return toErrorResponse(error, "Failed to update rows")
99
- }
100
- }
101
-
102
- export async function DELETE(request: NextRequest) {
103
- try {
104
- // Initialize the singleton to ensure the adapter is registered with the admin service
105
- getHazoConnectSingleton()
106
- const service = getSqliteAdminService()
107
- const payload = await request.json()
108
- const table = payload?.table
109
- const criteria = payload?.criteria
110
-
111
- if (
112
- !table ||
113
- typeof criteria !== "object" ||
114
- criteria === null ||
115
- Array.isArray(criteria)
116
- ) {
117
- return NextResponse.json(
118
- {
119
- error:
120
- "Request body must include 'table' and a 'criteria' object for the rows to delete."
121
- },
122
- { status: 400 }
123
- )
124
- }
125
-
126
- const rows = await service.deleteRows(table, criteria)
127
- return NextResponse.json({ data: rows, deleted: rows.length })
128
- } catch (error) {
129
- return toErrorResponse(error, "Failed to delete rows")
130
- }
131
- }
132
-
133
- function parseRowQueryOptions(params: URLSearchParams): RowQueryOptions {
134
- const limitParam = params.get("limit")
135
- const offsetParam = params.get("offset")
136
- const orderBy = params.get("orderBy") ?? undefined
137
- const orderDirection = parseOrderDirection(params.get("orderDirection"))
138
- const filters = parseFilters(params)
139
-
140
- const limit = limitParam ? Number.parseInt(limitParam, 10) : undefined
141
- const offset = offsetParam ? Number.parseInt(offsetParam, 10) : undefined
142
-
143
- return {
144
- limit: Number.isNaN(limit) ? undefined : limit,
145
- offset: Number.isNaN(offset) ? undefined : offset,
146
- order_by: orderBy ?? undefined,
147
- order_direction: orderDirection,
148
- filters: filters.length ? filters : undefined
149
- }
150
- }
151
-
152
- function parseFilters(params: URLSearchParams): SqliteWhereFilter[] {
153
- const filters: SqliteWhereFilter[] = []
154
-
155
- params.forEach((value, key) => {
156
- const match = key.match(/^filter\[(.+?)\](?:\[(.+)\])?$/)
157
- if (!match) {
158
- return
159
- }
160
- const column = match[1]
161
- const operatorValue = (match[2] ?? "eq").toLowerCase()
162
- if (!isAllowedOperator(operatorValue)) {
163
- throw new Error(`Unsupported filter operator '${operatorValue}'`)
164
- }
165
- filters.push({
166
- column,
167
- operator: operatorValue as SqliteFilterOperator,
168
- value
169
- })
170
- })
171
-
172
- return filters
173
- }
174
-
175
- function parseOrderDirection(
176
- direction: string | null
177
- ): "asc" | "desc" | undefined {
178
- if (!direction) {
179
- return undefined
180
- }
181
- const normalized = direction.toLowerCase()
182
- if (normalized === "asc" || normalized === "desc") {
183
- return normalized
184
- }
185
- throw new Error(`Unsupported order direction '${direction}'`)
186
- }
187
-
188
- function isAllowedOperator(value: string): value is SqliteFilterOperator {
189
- return allowedOperators.includes(value as SqliteFilterOperator)
190
- }
191
-
192
- function toErrorResponse(error: unknown, fallback: string) {
193
- const message = error instanceof Error ? error.message : fallback
194
- const status = message.toLowerCase().includes("required") ? 400 : 500
195
- return NextResponse.json({ error: message }, { status })
196
- }
197
-
@@ -1,34 +0,0 @@
1
- import { NextRequest, NextResponse } from "next/server"
2
- import { getSqliteAdminService } from "hazo_connect/server"
3
- import { getHazoConnectSingleton } from "hazo_connect/nextjs/setup"
4
-
5
- export const dynamic = "force-dynamic"
6
-
7
- export async function GET(request: NextRequest) {
8
- // Initialize the singleton to ensure the adapter is registered with the admin service
9
- getHazoConnectSingleton()
10
- const service = getSqliteAdminService()
11
- const url = new URL(request.url)
12
- const table = url.searchParams.get("table")
13
-
14
- if (!table) {
15
- return NextResponse.json(
16
- { error: "Query parameter 'table' is required." },
17
- { status: 400 }
18
- )
19
- }
20
-
21
- try {
22
- const schema = await service.getTableSchema(table)
23
- return NextResponse.json({ data: schema })
24
- } catch (error) {
25
- return toErrorResponse(error, `Failed to load schema for table '${table}'`)
26
- }
27
- }
28
-
29
- function toErrorResponse(error: unknown, fallback: string) {
30
- const message = error instanceof Error ? error.message : fallback
31
- const status = message.toLowerCase().includes("required") ? 400 : 500
32
- return NextResponse.json({ error: message }, { status })
33
- }
34
-
@@ -1,25 +0,0 @@
1
- import { NextResponse } from "next/server"
2
- import { getSqliteAdminService } from "hazo_connect/server"
3
- import { getHazoConnectSingleton } from "hazo_connect/nextjs/setup"
4
-
5
- export const dynamic = "force-dynamic"
6
-
7
- export async function GET() {
8
- try {
9
- // Initialize the singleton to ensure the adapter is registered with the admin service
10
- getHazoConnectSingleton()
11
-
12
- const service = getSqliteAdminService()
13
- const tables = await service.listTables()
14
- return NextResponse.json({ data: tables })
15
- } catch (error) {
16
- return toErrorResponse(error, "Failed to list SQLite tables")
17
- }
18
- }
19
-
20
- function toErrorResponse(error: unknown, fallback: string) {
21
- const message = error instanceof Error ? error.message : fallback
22
- const status = message.toLowerCase().includes("required") ? 400 : 500
23
- return NextResponse.json({ error: message }, { status })
24
- }
25
-
@@ -1,40 +0,0 @@
1
- /**
2
- * Purpose: Middleware to check if SQLite admin UI is enabled before allowing access to routes.
3
- *
4
- * This middleware ensures that the admin UI routes are only accessible when explicitly enabled
5
- * in the hazo_connect configuration.
6
- */
7
-
8
- import { NextResponse } from "next/server"
9
- import type { NextRequest } from "next/server"
10
-
11
- export function middleware(request: NextRequest) {
12
- // Check if this is an admin UI route
13
- if (
14
- request.nextUrl.pathname.startsWith("/hazo_connect/sqlite_admin") ||
15
- request.nextUrl.pathname.startsWith("/hazo_connect/api/sqlite")
16
- ) {
17
- // Check if admin UI is enabled via environment variable or config
18
- // The admin service will throw an error if not enabled, but we can provide a better message here
19
- const adminUiEnabled =
20
- process.env.HAZO_CONNECT_ENABLE_ADMIN_UI === "true" ||
21
- process.env.ENABLE_SQLITE_ADMIN_UI === "true"
22
-
23
- if (!adminUiEnabled) {
24
- return NextResponse.json(
25
- {
26
- error:
27
- "SQLite admin UI is not enabled. Set 'enable_admin_ui: true' in your hazo_connect configuration or set HAZO_CONNECT_ENABLE_ADMIN_UI=true environment variable."
28
- },
29
- { status: 403 }
30
- )
31
- }
32
- }
33
-
34
- return NextResponse.next()
35
- }
36
-
37
- export const config = {
38
- matcher: ["/hazo_connect/sqlite_admin/:path*", "/hazo_connect/api/sqlite/:path*"]
39
- }
40
-
@@ -1,29 +0,0 @@
1
- import { getSqliteAdminService } from "hazo_connect/server"
2
- import { getHazoConnectSingleton } from "hazo_connect/nextjs/setup"
3
- import { SqliteAdminClient } from "hazo_connect/ui"
4
-
5
- export const dynamic = "force-dynamic"
6
-
7
- export default async function SqliteAdminPage() {
8
- // Initialize the singleton to ensure the adapter is registered with the admin service
9
- getHazoConnectSingleton()
10
- const service = getSqliteAdminService()
11
-
12
- try {
13
- const tables = await service.listTables()
14
- return <SqliteAdminClient initialTables={tables} />
15
- } catch (error) {
16
- const message =
17
- error instanceof Error ? error.message : "Failed to initialise SQLite admin UI."
18
-
19
- return (
20
- <section className="mx-auto flex max-w-4xl flex-col gap-4 p-6">
21
- <h1 className="text-2xl font-semibold text-slate-900">SQLite Admin</h1>
22
- <p className="rounded-md border border-red-200 bg-red-50 p-4 text-sm text-red-700">
23
- {message}
24
- </p>
25
- </section>
26
- )
27
- }
28
- }
29
-