@framers/sql-storage-adapter 0.7.6 → 0.7.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 +10 -4
- package/dist/cjs/core/database.d.ts +7 -0
- package/dist/cjs/core/database.js +2 -1
- package/dist/cjs/core/portable.d.ts +1 -0
- package/dist/cjs/core/portable.js +4 -1
- package/dist/cjs/index.d.ts +1 -0
- package/dist/cjs/index.js +4 -1
- package/dist/cjs/shared/withHooks.d.ts +17 -0
- package/dist/cjs/shared/withHooks.js +115 -0
- package/dist/core/database.d.ts +7 -0
- package/dist/core/database.d.ts.map +1 -1
- package/dist/core/database.js +2 -1
- package/dist/core/database.js.map +1 -1
- package/dist/core/portable.d.ts +1 -0
- package/dist/core/portable.d.ts.map +1 -1
- package/dist/core/portable.js +1 -0
- package/dist/core/portable.js.map +1 -1
- package/dist/index.d.ts +1 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +1 -0
- package/dist/index.js.map +1 -1
- package/dist/shared/withHooks.d.ts +17 -0
- package/dist/shared/withHooks.d.ts.map +1 -0
- package/dist/shared/withHooks.js +108 -0
- package/dist/shared/withHooks.js.map +1 -0
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -628,10 +628,17 @@ See [**guides/OPTIMIZATION_GUIDE.md**](./guides/OPTIMIZATION_GUIDE.md) for detai
|
|
|
628
628
|
|
|
629
629
|
## Lifecycle Hooks
|
|
630
630
|
|
|
631
|
-
|
|
631
|
+
`createDatabase({ hooks })`, or `withHooks(adapter, hooks)` on any adapter, puts lifecycle hooks around each query, write, transaction and error.
|
|
632
|
+
- A `before` hook returns the context, changed or not, to go on, or undefined to stop the call. A stopped `get` returns null, `all` an empty list, and `run` no changes.
|
|
633
|
+
- `onAfterQuery` can replace the result.
|
|
634
|
+
- `onError` returns the error to throw, or undefined to swallow it.
|
|
635
|
+
- The statements inside a transaction pass through the hooks too, and `onAfterTransaction` sees `outcome: 'committed'` or `'rolled_back'`.
|
|
636
|
+
- The adapter keeps its kind, its own methods and its class.
|
|
637
|
+
|
|
638
|
+
`combineHooks()` and `filterHooks()` compose hook sets.
|
|
632
639
|
|
|
633
640
|
```typescript
|
|
634
|
-
import { combineHooks, type StorageHooks } from '@framers/sql-storage-adapter';
|
|
641
|
+
import { createDatabase, combineHooks, type StorageHooks } from '@framers/sql-storage-adapter';
|
|
635
642
|
|
|
636
643
|
const myHooks: StorageHooks = {
|
|
637
644
|
// Log all writes
|
|
@@ -657,8 +664,7 @@ const myHooks: StorageHooks = {
|
|
|
657
664
|
}
|
|
658
665
|
};
|
|
659
666
|
|
|
660
|
-
|
|
661
|
-
const hooks = combineHooks(myHooks);
|
|
667
|
+
const db = await createDatabase({ url: process.env.DATABASE_URL, strict: true, hooks: combineHooks(myHooks) });
|
|
662
668
|
```
|
|
663
669
|
|
|
664
670
|
### Available Hooks
|
|
@@ -12,6 +12,7 @@ import type { PostgresAdapterOptions } from '../adapters/postgresAdapter.js';
|
|
|
12
12
|
import type { CapacitorAdapterOptions } from '../adapters/capacitorSqliteAdapter.js';
|
|
13
13
|
import type { IndexedDbAdapterOptions } from '../adapters/indexedDbAdapter.js';
|
|
14
14
|
import type { StorageLogger } from '../shared/logger.js';
|
|
15
|
+
import type { StorageHooks } from './contracts/hooks.js';
|
|
15
16
|
/**
|
|
16
17
|
* Database connection options.
|
|
17
18
|
*/
|
|
@@ -111,6 +112,12 @@ export interface DatabaseOptions {
|
|
|
111
112
|
* `setStorageLogger()` set, else the console.
|
|
112
113
|
*/
|
|
113
114
|
logger?: StorageLogger;
|
|
115
|
+
/**
|
|
116
|
+
* Lifecycle hooks around every call of the adapter returned (see withHooks):
|
|
117
|
+
* each query, write, transaction and error, with the power to change a
|
|
118
|
+
* statement or a result, or to stop a call by returning undefined.
|
|
119
|
+
*/
|
|
120
|
+
hooks?: StorageHooks;
|
|
114
121
|
}
|
|
115
122
|
/**
|
|
116
123
|
* Create a database connection.
|
|
@@ -28,6 +28,7 @@ var import_contracts = require("./contracts/index.js");
|
|
|
28
28
|
var import_resolver = require("./resolver.js");
|
|
29
29
|
var import_postgresTarget = require("../shared/postgresTarget.js");
|
|
30
30
|
var import_segment = require("../shared/segment.js");
|
|
31
|
+
var import_withHooks = require("../shared/withHooks.js");
|
|
31
32
|
var import_resolver2 = require("./resolver.js");
|
|
32
33
|
const configuredPostgresOptions = (options) => {
|
|
33
34
|
const named = [];
|
|
@@ -112,7 +113,7 @@ async function createDatabase(options = {}) {
|
|
|
112
113
|
}
|
|
113
114
|
const adapter = await (0, import_resolver.resolveStorageAdapter)(resolverOptions);
|
|
114
115
|
await adapter.open(resolverOptions.openOptions);
|
|
115
|
-
return adapter;
|
|
116
|
+
return options.hooks ? (0, import_withHooks.withHooks)(adapter, options.hooks) : adapter;
|
|
116
117
|
}
|
|
117
118
|
async function connectDatabase(config) {
|
|
118
119
|
if (typeof config === "string") {
|
|
@@ -18,6 +18,7 @@ export { SqliteFileExporter } from '../exporters/SqliteFileExporter.js';
|
|
|
18
18
|
export { PostgresExporter } from '../exporters/PostgresExporter.js';
|
|
19
19
|
export { createStorageFeatures } from './contracts/features.js';
|
|
20
20
|
export { isUniqueViolation } from '../shared/errors.js';
|
|
21
|
+
export { withHooks } from '../shared/withHooks.js';
|
|
21
22
|
export { setStorageLogger, getStorageLogger, type StorageLogger } from '../shared/logger.js';
|
|
22
23
|
export * from '../features/migrations/schemaMigrations.js';
|
|
23
24
|
export * from '../features/auth/authJsAdapter.js';
|
|
@@ -30,7 +30,8 @@ __export(portable_exports, {
|
|
|
30
30
|
createStorageFeatures: () => import_features.createStorageFeatures,
|
|
31
31
|
getStorageLogger: () => import_logger.getStorageLogger,
|
|
32
32
|
isUniqueViolation: () => import_errors.isUniqueViolation,
|
|
33
|
-
setStorageLogger: () => import_logger.setStorageLogger
|
|
33
|
+
setStorageLogger: () => import_logger.setStorageLogger,
|
|
34
|
+
withHooks: () => import_withHooks.withHooks
|
|
34
35
|
});
|
|
35
36
|
module.exports = __toCommonJS(portable_exports);
|
|
36
37
|
__reExport(portable_exports, require("../types/index.js"), module.exports);
|
|
@@ -45,6 +46,7 @@ var import_SqliteFileExporter = require("../exporters/SqliteFileExporter.js");
|
|
|
45
46
|
var import_PostgresExporter = require("../exporters/PostgresExporter.js");
|
|
46
47
|
var import_features = require("./contracts/features.js");
|
|
47
48
|
var import_errors = require("../shared/errors.js");
|
|
49
|
+
var import_withHooks = require("../shared/withHooks.js");
|
|
48
50
|
var import_logger = require("../shared/logger.js");
|
|
49
51
|
__reExport(portable_exports, require("../features/migrations/schemaMigrations.js"), module.exports);
|
|
50
52
|
__reExport(portable_exports, require("../features/auth/authJsAdapter.js"), module.exports);
|
|
@@ -64,6 +66,7 @@ __reExport(portable_exports, require("../shared/parameterUtils.js"), module.expo
|
|
|
64
66
|
getStorageLogger,
|
|
65
67
|
isUniqueViolation,
|
|
66
68
|
setStorageLogger,
|
|
69
|
+
withHooks,
|
|
67
70
|
...require("../types/index.js"),
|
|
68
71
|
...require("../features/migrations/schemaMigrations.js"),
|
|
69
72
|
...require("../features/auth/authJsAdapter.js"),
|
package/dist/cjs/index.d.ts
CHANGED
|
@@ -28,5 +28,6 @@ export { SqliteFileExporter } from './exporters/SqliteFileExporter.js';
|
|
|
28
28
|
export { PostgresExporter } from './exporters/PostgresExporter.js';
|
|
29
29
|
export { createStorageFeatures } from './core/contracts/features.js';
|
|
30
30
|
export { isUniqueViolation } from './shared/errors.js';
|
|
31
|
+
export { withHooks } from './shared/withHooks.js';
|
|
31
32
|
export { setStorageLogger, getStorageLogger, type StorageLogger } from './shared/logger.js';
|
|
32
33
|
//# sourceMappingURL=index.d.ts.map
|
package/dist/cjs/index.js
CHANGED
|
@@ -33,7 +33,8 @@ __export(dist_exports, {
|
|
|
33
33
|
segmentFilePath: () => import_segment.segmentFilePath,
|
|
34
34
|
segmentName: () => import_segment.segmentName,
|
|
35
35
|
setStorageLogger: () => import_logger.setStorageLogger,
|
|
36
|
-
validateSegment: () => import_segment.validateSegment
|
|
36
|
+
validateSegment: () => import_segment.validateSegment,
|
|
37
|
+
withHooks: () => import_withHooks.withHooks
|
|
37
38
|
});
|
|
38
39
|
module.exports = __toCommonJS(dist_exports);
|
|
39
40
|
__reExport(dist_exports, require("./types/index.js"), module.exports);
|
|
@@ -66,6 +67,7 @@ var import_SqliteFileExporter = require("./exporters/SqliteFileExporter.js");
|
|
|
66
67
|
var import_PostgresExporter = require("./exporters/PostgresExporter.js");
|
|
67
68
|
var import_features = require("./core/contracts/features.js");
|
|
68
69
|
var import_errors = require("./shared/errors.js");
|
|
70
|
+
var import_withHooks = require("./shared/withHooks.js");
|
|
69
71
|
var import_logger = require("./shared/logger.js");
|
|
70
72
|
// Annotate the CommonJS export names for ESM import in node:
|
|
71
73
|
0 && (module.exports = {
|
|
@@ -85,6 +87,7 @@ var import_logger = require("./shared/logger.js");
|
|
|
85
87
|
segmentName,
|
|
86
88
|
setStorageLogger,
|
|
87
89
|
validateSegment,
|
|
90
|
+
withHooks,
|
|
88
91
|
...require("./types/index.js"),
|
|
89
92
|
...require("./core/database.js"),
|
|
90
93
|
...require("./core/resolver.js"),
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import type { StorageAdapter } from '../core/contracts/index.js';
|
|
2
|
+
import { type StorageHooks } from '../core/contracts/hooks.js';
|
|
3
|
+
/**
|
|
4
|
+
* The adapter with lifecycle hooks around its calls, on any adapter.
|
|
5
|
+
*
|
|
6
|
+
* - `onBeforeQuery` (get, all, exec) and `onBeforeWrite` (run) see the call's context, and return it, changed or
|
|
7
|
+
* not, to go on, or undefined to stop the call: a stopped get returns null, all an empty list, run no changes.
|
|
8
|
+
* - `onAfterQuery` can replace the result, and `onAfterWrite` sees it.
|
|
9
|
+
* - `onBeforeTransaction` can stop a transaction, and `onAfterTransaction` sees its outcome. The statements inside a
|
|
10
|
+
* transaction pass through the hooks too.
|
|
11
|
+
* - `onError` sees each failure and returns the error to throw, or undefined to swallow it.
|
|
12
|
+
*
|
|
13
|
+
* Everything else, the adapter's kind and its own methods (`withConnection` on PostgreSQL), reaches the adapter
|
|
14
|
+
* itself, and `instanceof` still names its class.
|
|
15
|
+
*/
|
|
16
|
+
export declare function withHooks<A extends StorageAdapter>(adapter: A, hooks: StorageHooks): A;
|
|
17
|
+
//# sourceMappingURL=withHooks.d.ts.map
|
|
@@ -0,0 +1,115 @@
|
|
|
1
|
+
var __defProp = Object.defineProperty;
|
|
2
|
+
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
3
|
+
var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
4
|
+
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
5
|
+
var __export = (target, all) => {
|
|
6
|
+
for (var name in all)
|
|
7
|
+
__defProp(target, name, { get: all[name], enumerable: true });
|
|
8
|
+
};
|
|
9
|
+
var __copyProps = (to, from, except, desc) => {
|
|
10
|
+
if (from && typeof from === "object" || typeof from === "function") {
|
|
11
|
+
for (let key of __getOwnPropNames(from))
|
|
12
|
+
if (!__hasOwnProp.call(to, key) && key !== except)
|
|
13
|
+
__defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
|
|
14
|
+
}
|
|
15
|
+
return to;
|
|
16
|
+
};
|
|
17
|
+
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
|
18
|
+
var withHooks_exports = {};
|
|
19
|
+
__export(withHooks_exports, {
|
|
20
|
+
withHooks: () => withHooks
|
|
21
|
+
});
|
|
22
|
+
module.exports = __toCommonJS(withHooks_exports);
|
|
23
|
+
var import_hooks = require("../core/contracts/hooks.js");
|
|
24
|
+
const handled = /* @__PURE__ */ new WeakSet();
|
|
25
|
+
const EMPTY_WRITE = { changes: 0, lastInsertRowid: null };
|
|
26
|
+
function withHooks(adapter, hooks) {
|
|
27
|
+
const context = (operation) => ({
|
|
28
|
+
operationId: (0, import_hooks.generateOperationId)(),
|
|
29
|
+
operation,
|
|
30
|
+
startTime: Date.now(),
|
|
31
|
+
adapterKind: adapter.kind
|
|
32
|
+
});
|
|
33
|
+
const fail = async (error, at) => {
|
|
34
|
+
const err = error instanceof Error ? error : new Error(String(error));
|
|
35
|
+
if (!hooks.onError || handled.has(err))
|
|
36
|
+
throw err;
|
|
37
|
+
const replaced = await hooks.onError(err, at);
|
|
38
|
+
if (!replaced)
|
|
39
|
+
return;
|
|
40
|
+
handled.add(replaced);
|
|
41
|
+
throw replaced;
|
|
42
|
+
};
|
|
43
|
+
const query = async (operation, statement, parameters, call, stopped) => {
|
|
44
|
+
let at = { ...context(operation), statement, parameters };
|
|
45
|
+
if (hooks.onBeforeQuery) {
|
|
46
|
+
const next = await hooks.onBeforeQuery(at);
|
|
47
|
+
if (!next)
|
|
48
|
+
return stopped;
|
|
49
|
+
at = next;
|
|
50
|
+
}
|
|
51
|
+
try {
|
|
52
|
+
const result = await call(at.statement, at.parameters);
|
|
53
|
+
if (!hooks.onAfterQuery)
|
|
54
|
+
return result;
|
|
55
|
+
const replaced = await hooks.onAfterQuery(at, result);
|
|
56
|
+
return replaced === void 0 ? result : replaced;
|
|
57
|
+
} catch (error) {
|
|
58
|
+
await fail(error, at);
|
|
59
|
+
return stopped;
|
|
60
|
+
}
|
|
61
|
+
};
|
|
62
|
+
const overrides = {
|
|
63
|
+
get: (statement, parameters) => query("get", statement, parameters, (s, p) => adapter.get(s, p), null),
|
|
64
|
+
all: (statement, parameters) => query("all", statement, parameters, (s, p) => adapter.all(s, p), []),
|
|
65
|
+
exec: (script) => query("exec", script, void 0, (s) => adapter.exec(s), void 0),
|
|
66
|
+
run: async (statement, parameters) => {
|
|
67
|
+
let at = { ...context("run"), statement, parameters };
|
|
68
|
+
if (hooks.onBeforeWrite) {
|
|
69
|
+
const next = await hooks.onBeforeWrite(at);
|
|
70
|
+
if (!next)
|
|
71
|
+
return EMPTY_WRITE;
|
|
72
|
+
at = next;
|
|
73
|
+
}
|
|
74
|
+
try {
|
|
75
|
+
const result = await adapter.run(at.statement, at.parameters);
|
|
76
|
+
await hooks.onAfterWrite?.(at, result);
|
|
77
|
+
return result;
|
|
78
|
+
} catch (error) {
|
|
79
|
+
await fail(error, at);
|
|
80
|
+
return EMPTY_WRITE;
|
|
81
|
+
}
|
|
82
|
+
},
|
|
83
|
+
transaction: async (fn) => {
|
|
84
|
+
let at = { ...context("transaction") };
|
|
85
|
+
if (hooks.onBeforeTransaction) {
|
|
86
|
+
const next = await hooks.onBeforeTransaction(at);
|
|
87
|
+
if (!next)
|
|
88
|
+
return void 0;
|
|
89
|
+
at = next;
|
|
90
|
+
}
|
|
91
|
+
try {
|
|
92
|
+
const result = await adapter.transaction((trx) => fn(withHooks(trx, hooks)));
|
|
93
|
+
await hooks.onAfterTransaction?.({ ...at, outcome: "committed" });
|
|
94
|
+
return result;
|
|
95
|
+
} catch (error) {
|
|
96
|
+
await hooks.onAfterTransaction?.({ ...at, outcome: "rolled_back" });
|
|
97
|
+
await fail(error, at);
|
|
98
|
+
return void 0;
|
|
99
|
+
}
|
|
100
|
+
}
|
|
101
|
+
};
|
|
102
|
+
return new Proxy(adapter, {
|
|
103
|
+
get(target, property) {
|
|
104
|
+
if (Object.prototype.hasOwnProperty.call(overrides, property)) {
|
|
105
|
+
return overrides[property];
|
|
106
|
+
}
|
|
107
|
+
const value = Reflect.get(target, property, target);
|
|
108
|
+
return typeof value === "function" ? value.bind(target) : value;
|
|
109
|
+
}
|
|
110
|
+
});
|
|
111
|
+
}
|
|
112
|
+
// Annotate the CommonJS export names for ESM import in node:
|
|
113
|
+
0 && (module.exports = {
|
|
114
|
+
withHooks
|
|
115
|
+
});
|
package/dist/core/database.d.ts
CHANGED
|
@@ -12,6 +12,7 @@ import type { PostgresAdapterOptions } from '../adapters/postgresAdapter.js';
|
|
|
12
12
|
import type { CapacitorAdapterOptions } from '../adapters/capacitorSqliteAdapter.js';
|
|
13
13
|
import type { IndexedDbAdapterOptions } from '../adapters/indexedDbAdapter.js';
|
|
14
14
|
import type { StorageLogger } from '../shared/logger.js';
|
|
15
|
+
import type { StorageHooks } from './contracts/hooks.js';
|
|
15
16
|
/**
|
|
16
17
|
* Database connection options.
|
|
17
18
|
*/
|
|
@@ -111,6 +112,12 @@ export interface DatabaseOptions {
|
|
|
111
112
|
* `setStorageLogger()` set, else the console.
|
|
112
113
|
*/
|
|
113
114
|
logger?: StorageLogger;
|
|
115
|
+
/**
|
|
116
|
+
* Lifecycle hooks around every call of the adapter returned (see withHooks):
|
|
117
|
+
* each query, write, transaction and error, with the power to change a
|
|
118
|
+
* statement or a result, or to stop a call by returning undefined.
|
|
119
|
+
*/
|
|
120
|
+
hooks?: StorageHooks;
|
|
114
121
|
}
|
|
115
122
|
/**
|
|
116
123
|
* Create a database connection.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"database.d.ts","sourceRoot":"","sources":["../../src/core/database.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,EAA0B,KAAK,cAAc,EAAE,MAAM,aAAa,CAAC;AAC1E,OAAO,EAAwD,KAAK,WAAW,EAAE,MAAM,YAAY,CAAC;AAGpG,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,6BAA6B,CAAC;AAC1E,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,oCAAoC,CAAC;AAClF,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,8BAA8B,CAAC;AAC5E,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;
|
|
1
|
+
{"version":3,"file":"database.d.ts","sourceRoot":"","sources":["../../src/core/database.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,EAA0B,KAAK,cAAc,EAAE,MAAM,aAAa,CAAC;AAC1E,OAAO,EAAwD,KAAK,WAAW,EAAE,MAAM,YAAY,CAAC;AAGpG,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,6BAA6B,CAAC;AAC1E,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,oCAAoC,CAAC;AAClF,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,8BAA8B,CAAC;AAC5E,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AACtD,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AActD;;GAEG;AACH,MAAM,WAAW,eAAe;IAC9B;;;;OAIG;IACH,GAAG,CAAC,EAAE,MAAM,CAAC;IAEb;;;OAGG;IACH,IAAI,CAAC,EAAE,MAAM,CAAC;IAEd;;;;;;;OAOG;IACH,QAAQ,CAAC,EAAE,sBAAsB,CAAC;IAElC;;;OAGG;IACH,MAAM,CAAC,EAAE,uBAAuB,CAAC;IAEjC;;;;;;;;;;;;;;;;;OAiBG;IACH,SAAS,CAAC,EAAE,uBAAuB,CAAC;IAEpC;;;OAGG;IACH,IAAI,CAAC,EAAE,UAAU,GAAG,QAAQ,GAAG,SAAS,GAAG,QAAQ,GAAG,QAAQ,CAAC;IAE/D;;;OAGG;IACH,QAAQ,CAAC,EAAE,WAAW,EAAE,CAAC;IAEzB;;;;;;;;;;;;OAYG;IACH,MAAM,CAAC,EAAE,OAAO,CAAC;IAEjB;;;;;;;OAOG;IACH,WAAW,CAAC,EAAE,OAAO,CAAC;IAEtB;;;;;;;;;;;OAWG;IACH,OAAO,CAAC,EAAE,MAAM,CAAC;IAEjB;;;OAGG;IACH,MAAM,CAAC,EAAE,aAAa,CAAC;IAEvB;;;;OAIG;IACH,KAAK,CAAC,EAAE,YAAY,CAAC;CACtB;AASD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAiCG;AACH;;;;;;;;;;;;;;;;;;;;;;;;;GAyBG;AACH,wBAAsB,cAAc,CAAC,OAAO,GAAE,eAAoB,GAAG,OAAO,CAAC,cAAc,CAAC,CAyG3F;AAED;;;;;;;;;;;;;;;;;GAiBG;AACH,wBAAsB,eAAe,CACnC,MAAM,EAAE,MAAM,GAAG,sBAAsB,GACtC,OAAO,CAAC,cAAc,CAAC,CAKzB;AAED;;;;;;;;;;;GAWG;AACH,wBAAsB,YAAY,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,cAAc,CAAC,CAE5E;AAED;;;;;;;;;GASG;AACH,wBAAsB,oBAAoB,IAAI,OAAO,CAAC,cAAc,CAAC,CAEpE;AAGD,OAAO,EAAE,qBAAqB,EAAE,MAAM,YAAY,CAAC"}
|
package/dist/core/database.js
CHANGED
|
@@ -10,6 +10,7 @@ import { StorageResolutionError } from './contracts/index.js';
|
|
|
10
10
|
import { resolveStorageAdapter } from './resolver.js';
|
|
11
11
|
import { namesPostgresServer } from '../shared/postgresTarget.js';
|
|
12
12
|
import { namesInMemoryDatabase } from '../shared/segment.js';
|
|
13
|
+
import { withHooks } from '../shared/withHooks.js';
|
|
13
14
|
/**
|
|
14
15
|
* The options that configure Postgres: `url` when the caller set the key, even
|
|
15
16
|
* to undefined (`{ url: process.env.DATABASE_URL }`), and `postgres`.
|
|
@@ -184,7 +185,7 @@ export async function createDatabase(options = {}) {
|
|
|
184
185
|
}
|
|
185
186
|
const adapter = await resolveStorageAdapter(resolverOptions);
|
|
186
187
|
await adapter.open(resolverOptions.openOptions);
|
|
187
|
-
return adapter;
|
|
188
|
+
return options.hooks ? withHooks(adapter, options.hooks) : adapter;
|
|
188
189
|
}
|
|
189
190
|
/**
|
|
190
191
|
* Connect to a remote database.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"database.js","sourceRoot":"","sources":["../../src/core/database.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,EAAE,sBAAsB,EAAuB,MAAM,aAAa,CAAC;AAC1E,OAAO,EAAE,qBAAqB,EAAmD,MAAM,YAAY,CAAC;AACpG,OAAO,EAAE,mBAAmB,EAAE,MAAM,0BAA0B,CAAC;AAC/D,OAAO,EAAE,qBAAqB,EAAE,MAAM,mBAAmB,CAAC;AAM1D;;;GAGG;AACH,MAAM,yBAAyB,GAAG,CAAC,OAAwB,EAA6B,EAAE;IACxF,MAAM,KAAK,GAA8B,EAAE,CAAC;IAC5C,IAAI,MAAM,CAAC,SAAS,CAAC,cAAc,CAAC,IAAI,CAAC,OAAO,EAAE,KAAK,CAAC;QAAE,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IAC5E,IAAI,OAAO,CAAC,QAAQ,KAAK,SAAS;QAAE,KAAK,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;IAC3D,OAAO,KAAK,CAAC;AACf,CAAC,CAAC;
|
|
1
|
+
{"version":3,"file":"database.js","sourceRoot":"","sources":["../../src/core/database.ts"],"names":[],"mappings":"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"}
|
package/dist/core/portable.d.ts
CHANGED
|
@@ -18,6 +18,7 @@ export { SqliteFileExporter } from '../exporters/SqliteFileExporter.js';
|
|
|
18
18
|
export { PostgresExporter } from '../exporters/PostgresExporter.js';
|
|
19
19
|
export { createStorageFeatures } from './contracts/features.js';
|
|
20
20
|
export { isUniqueViolation } from '../shared/errors.js';
|
|
21
|
+
export { withHooks } from '../shared/withHooks.js';
|
|
21
22
|
export { setStorageLogger, getStorageLogger, type StorageLogger } from '../shared/logger.js';
|
|
22
23
|
export * from '../features/migrations/schemaMigrations.js';
|
|
23
24
|
export * from '../features/auth/authJsAdapter.js';
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"portable.d.ts","sourceRoot":"","sources":["../../src/core/portable.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AACH,cAAc,UAAU,CAAC;AACzB,OAAO,EAAE,aAAa,EAAE,MAAM,2BAA2B,CAAC;AAC1D,OAAO,EAAE,eAAe,EAAE,MAAM,6BAA6B,CAAC;AAC9D,OAAO,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAC/C,OAAO,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAC/C,OAAO,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AACjD,OAAO,EAAE,aAAa,EAAE,MAAM,yBAAyB,CAAC;AACxD,OAAO,EAAE,gBAAgB,EAAE,MAAM,4BAA4B,CAAC;AAC9D,OAAO,EAAE,kBAAkB,EAAE,MAAM,iCAAiC,CAAC;AACrE,OAAO,EAAE,gBAAgB,EAAE,MAAM,+BAA+B,CAAC;AACjE,OAAO,EAAE,qBAAqB,EAAE,MAAM,sBAAsB,CAAC;AAC7D,OAAO,EAAE,iBAAiB,EAAE,MAAM,kBAAkB,CAAC;AACrD,OAAO,EAAE,gBAAgB,EAAE,gBAAgB,EAAE,KAAK,aAAa,EAAE,MAAM,kBAAkB,CAAC;AAC1F,cAAc,yCAAyC,CAAC;AACxD,cAAc,gCAAgC,CAAC;AAC/C,cAAc,0BAA0B,CAAC"}
|
|
1
|
+
{"version":3,"file":"portable.d.ts","sourceRoot":"","sources":["../../src/core/portable.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AACH,cAAc,UAAU,CAAC;AACzB,OAAO,EAAE,aAAa,EAAE,MAAM,2BAA2B,CAAC;AAC1D,OAAO,EAAE,eAAe,EAAE,MAAM,6BAA6B,CAAC;AAC9D,OAAO,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAC/C,OAAO,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAC/C,OAAO,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AACjD,OAAO,EAAE,aAAa,EAAE,MAAM,yBAAyB,CAAC;AACxD,OAAO,EAAE,gBAAgB,EAAE,MAAM,4BAA4B,CAAC;AAC9D,OAAO,EAAE,kBAAkB,EAAE,MAAM,iCAAiC,CAAC;AACrE,OAAO,EAAE,gBAAgB,EAAE,MAAM,+BAA+B,CAAC;AACjE,OAAO,EAAE,qBAAqB,EAAE,MAAM,sBAAsB,CAAC;AAC7D,OAAO,EAAE,iBAAiB,EAAE,MAAM,kBAAkB,CAAC;AACrD,OAAO,EAAE,SAAS,EAAE,MAAM,qBAAqB,CAAC;AAChD,OAAO,EAAE,gBAAgB,EAAE,gBAAgB,EAAE,KAAK,aAAa,EAAE,MAAM,kBAAkB,CAAC;AAC1F,cAAc,yCAAyC,CAAC;AACxD,cAAc,gCAAgC,CAAC;AAC/C,cAAc,0BAA0B,CAAC"}
|
package/dist/core/portable.js
CHANGED
|
@@ -18,6 +18,7 @@ export { SqliteFileExporter } from '../exporters/SqliteFileExporter.js';
|
|
|
18
18
|
export { PostgresExporter } from '../exporters/PostgresExporter.js';
|
|
19
19
|
export { createStorageFeatures } from './contracts/features.js';
|
|
20
20
|
export { isUniqueViolation } from '../shared/errors.js';
|
|
21
|
+
export { withHooks } from '../shared/withHooks.js';
|
|
21
22
|
export { setStorageLogger, getStorageLogger } from '../shared/logger.js';
|
|
22
23
|
export * from '../features/migrations/schemaMigrations.js';
|
|
23
24
|
export * from '../features/auth/authJsAdapter.js';
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"portable.js","sourceRoot":"","sources":["../../src/core/portable.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AACH,cAAc,UAAU,CAAC;AACzB,OAAO,EAAE,aAAa,EAAE,MAAM,2BAA2B,CAAC;AAC1D,OAAO,EAAE,eAAe,EAAE,MAAM,6BAA6B,CAAC;AAC9D,OAAO,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAC/C,OAAO,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAC/C,OAAO,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AACjD,OAAO,EAAE,aAAa,EAAE,MAAM,yBAAyB,CAAC;AACxD,OAAO,EAAE,gBAAgB,EAAE,MAAM,4BAA4B,CAAC;AAC9D,OAAO,EAAE,kBAAkB,EAAE,MAAM,iCAAiC,CAAC;AACrE,OAAO,EAAE,gBAAgB,EAAE,MAAM,+BAA+B,CAAC;AACjE,OAAO,EAAE,qBAAqB,EAAE,MAAM,sBAAsB,CAAC;AAC7D,OAAO,EAAE,iBAAiB,EAAE,MAAM,kBAAkB,CAAC;AACrD,OAAO,EAAE,gBAAgB,EAAE,gBAAgB,EAAsB,MAAM,kBAAkB,CAAC;AAC1F,cAAc,yCAAyC,CAAC;AACxD,cAAc,gCAAgC,CAAC;AAC/C,cAAc,0BAA0B,CAAC"}
|
|
1
|
+
{"version":3,"file":"portable.js","sourceRoot":"","sources":["../../src/core/portable.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AACH,cAAc,UAAU,CAAC;AACzB,OAAO,EAAE,aAAa,EAAE,MAAM,2BAA2B,CAAC;AAC1D,OAAO,EAAE,eAAe,EAAE,MAAM,6BAA6B,CAAC;AAC9D,OAAO,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAC/C,OAAO,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAC/C,OAAO,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AACjD,OAAO,EAAE,aAAa,EAAE,MAAM,yBAAyB,CAAC;AACxD,OAAO,EAAE,gBAAgB,EAAE,MAAM,4BAA4B,CAAC;AAC9D,OAAO,EAAE,kBAAkB,EAAE,MAAM,iCAAiC,CAAC;AACrE,OAAO,EAAE,gBAAgB,EAAE,MAAM,+BAA+B,CAAC;AACjE,OAAO,EAAE,qBAAqB,EAAE,MAAM,sBAAsB,CAAC;AAC7D,OAAO,EAAE,iBAAiB,EAAE,MAAM,kBAAkB,CAAC;AACrD,OAAO,EAAE,SAAS,EAAE,MAAM,qBAAqB,CAAC;AAChD,OAAO,EAAE,gBAAgB,EAAE,gBAAgB,EAAsB,MAAM,kBAAkB,CAAC;AAC1F,cAAc,yCAAyC,CAAC;AACxD,cAAc,gCAAgC,CAAC;AAC/C,cAAc,0BAA0B,CAAC"}
|
package/dist/index.d.ts
CHANGED
|
@@ -28,5 +28,6 @@ export { SqliteFileExporter } from './exporters/SqliteFileExporter.js';
|
|
|
28
28
|
export { PostgresExporter } from './exporters/PostgresExporter.js';
|
|
29
29
|
export { createStorageFeatures } from './core/contracts/features.js';
|
|
30
30
|
export { isUniqueViolation } from './shared/errors.js';
|
|
31
|
+
export { withHooks } from './shared/withHooks.js';
|
|
31
32
|
export { setStorageLogger, getStorageLogger, type StorageLogger } from './shared/logger.js';
|
|
32
33
|
//# sourceMappingURL=index.d.ts.map
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AACA,cAAc,SAAS,CAAC;AAGxB,cAAc,iBAAiB,CAAC;AAChC,cAAc,iBAAiB,CAAC;AAGhC,cAAc,gCAAgC,CAAC;AAC/C,cAAc,yBAAyB,CAAC;AACxC,cAAc,6BAA6B,CAAC;AAC5C,cAAc,mCAAmC,CAAC;AAClD,cAAc,4BAA4B,CAAC;AAC3C,cAAc,qBAAqB,CAAC;AACpC,cAAc,+BAA+B,CAAC;AAQ9C,cAAc,+BAA+B,CAAC;AAC9C,cAAc,kCAAkC,CAAC;AACjD,cAAc,kCAAkC,CAAC;AACjD,cAAc,iCAAiC,CAAC;AAChD,cAAc,wCAAwC,CAAC;AACvD,cAAc,+BAA+B,CAAC;AAC9C,cAAc,6BAA6B,CAAC;AAM5C,cAAc,yBAAyB,CAAC;AACxC,OAAO,EAAE,eAAe,EAAE,WAAW,EAAE,eAAe,EAAE,MAAM,kBAAkB,CAAC;AAMjF,OAAO,EAAE,aAAa,EAAE,MAAM,0BAA0B,CAAC;AACzD,OAAO,EAAE,eAAe,EAAE,MAAM,4BAA4B,CAAC;AAC7D,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAC9C,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAC9C,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAChD,OAAO,EAAE,aAAa,EAAE,MAAM,wBAAwB,CAAC;AACvD,OAAO,EAAE,gBAAgB,EAAE,MAAM,2BAA2B,CAAC;AAC7D,OAAO,EAAE,kBAAkB,EAAE,MAAM,gCAAgC,CAAC;AACpE,OAAO,EAAE,gBAAgB,EAAE,MAAM,8BAA8B,CAAC;AAChE,OAAO,EAAE,qBAAqB,EAAE,MAAM,2BAA2B,CAAC;AAClE,OAAO,EAAE,iBAAiB,EAAE,MAAM,iBAAiB,CAAC;AACpD,OAAO,EAAE,gBAAgB,EAAE,gBAAgB,EAAE,KAAK,aAAa,EAAE,MAAM,iBAAiB,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AACA,cAAc,SAAS,CAAC;AAGxB,cAAc,iBAAiB,CAAC;AAChC,cAAc,iBAAiB,CAAC;AAGhC,cAAc,gCAAgC,CAAC;AAC/C,cAAc,yBAAyB,CAAC;AACxC,cAAc,6BAA6B,CAAC;AAC5C,cAAc,mCAAmC,CAAC;AAClD,cAAc,4BAA4B,CAAC;AAC3C,cAAc,qBAAqB,CAAC;AACpC,cAAc,+BAA+B,CAAC;AAQ9C,cAAc,+BAA+B,CAAC;AAC9C,cAAc,kCAAkC,CAAC;AACjD,cAAc,kCAAkC,CAAC;AACjD,cAAc,iCAAiC,CAAC;AAChD,cAAc,wCAAwC,CAAC;AACvD,cAAc,+BAA+B,CAAC;AAC9C,cAAc,6BAA6B,CAAC;AAM5C,cAAc,yBAAyB,CAAC;AACxC,OAAO,EAAE,eAAe,EAAE,WAAW,EAAE,eAAe,EAAE,MAAM,kBAAkB,CAAC;AAMjF,OAAO,EAAE,aAAa,EAAE,MAAM,0BAA0B,CAAC;AACzD,OAAO,EAAE,eAAe,EAAE,MAAM,4BAA4B,CAAC;AAC7D,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAC9C,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAC9C,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAChD,OAAO,EAAE,aAAa,EAAE,MAAM,wBAAwB,CAAC;AACvD,OAAO,EAAE,gBAAgB,EAAE,MAAM,2BAA2B,CAAC;AAC7D,OAAO,EAAE,kBAAkB,EAAE,MAAM,gCAAgC,CAAC;AACpE,OAAO,EAAE,gBAAgB,EAAE,MAAM,8BAA8B,CAAC;AAChE,OAAO,EAAE,qBAAqB,EAAE,MAAM,2BAA2B,CAAC;AAClE,OAAO,EAAE,iBAAiB,EAAE,MAAM,iBAAiB,CAAC;AACpD,OAAO,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAC;AAC/C,OAAO,EAAE,gBAAgB,EAAE,gBAAgB,EAAE,KAAK,aAAa,EAAE,MAAM,iBAAiB,CAAC"}
|
package/dist/index.js
CHANGED
|
@@ -42,5 +42,6 @@ export { SqliteFileExporter } from './exporters/SqliteFileExporter.js';
|
|
|
42
42
|
export { PostgresExporter } from './exporters/PostgresExporter.js';
|
|
43
43
|
export { createStorageFeatures } from './core/contracts/features.js';
|
|
44
44
|
export { isUniqueViolation } from './shared/errors.js';
|
|
45
|
+
export { withHooks } from './shared/withHooks.js';
|
|
45
46
|
export { setStorageLogger, getStorageLogger } from './shared/logger.js';
|
|
46
47
|
//# sourceMappingURL=index.js.map
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,8EAA8E;AAC9E,cAAc,SAAS,CAAC;AAExB,8EAA8E;AAC9E,cAAc,iBAAiB,CAAC;AAChC,cAAc,iBAAiB,CAAC;AAEhC,+EAA+E;AAC/E,cAAc,gCAAgC,CAAC;AAC/C,cAAc,yBAAyB,CAAC;AACxC,cAAc,6BAA6B,CAAC;AAC5C,cAAc,mCAAmC,CAAC;AAClD,cAAc,4BAA4B,CAAC;AAC3C,cAAc,qBAAqB,CAAC;AACpC,cAAc,+BAA+B,CAAC;AAE9C,wEAAwE;AACxE,yDAAyD;AACzD,2HAA2H;AAC3H,mEAAmE;AAEnE,+EAA+E;AAC/E,cAAc,+BAA+B,CAAC;AAC9C,cAAc,kCAAkC,CAAC;AACjD,cAAc,kCAAkC,CAAC;AACjD,cAAc,iCAAiC,CAAC;AAChD,cAAc,wCAAwC,CAAC;AACvD,cAAc,+BAA+B,CAAC;AAC9C,cAAc,6BAA6B,CAAC;AAE5C,uFAAuF;AACvF,sFAAsF;AAEtF,+EAA+E;AAC/E,cAAc,yBAAyB,CAAC;AACxC,OAAO,EAAE,eAAe,EAAE,WAAW,EAAE,eAAe,EAAE,MAAM,kBAAkB,CAAC;AAEjF,6FAA6F;AAC7F,uGAAuG;AAEvG,iFAAiF;AACjF,OAAO,EAAE,aAAa,EAAE,MAAM,0BAA0B,CAAC;AACzD,OAAO,EAAE,eAAe,EAAE,MAAM,4BAA4B,CAAC;AAC7D,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAC9C,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAC9C,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAChD,OAAO,EAAE,aAAa,EAAE,MAAM,wBAAwB,CAAC;AACvD,OAAO,EAAE,gBAAgB,EAAE,MAAM,2BAA2B,CAAC;AAC7D,OAAO,EAAE,kBAAkB,EAAE,MAAM,gCAAgC,CAAC;AACpE,OAAO,EAAE,gBAAgB,EAAE,MAAM,8BAA8B,CAAC;AAChE,OAAO,EAAE,qBAAqB,EAAE,MAAM,2BAA2B,CAAC;AAClE,OAAO,EAAE,iBAAiB,EAAE,MAAM,iBAAiB,CAAC;AACpD,OAAO,EAAE,gBAAgB,EAAE,gBAAgB,EAAsB,MAAM,iBAAiB,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,8EAA8E;AAC9E,cAAc,SAAS,CAAC;AAExB,8EAA8E;AAC9E,cAAc,iBAAiB,CAAC;AAChC,cAAc,iBAAiB,CAAC;AAEhC,+EAA+E;AAC/E,cAAc,gCAAgC,CAAC;AAC/C,cAAc,yBAAyB,CAAC;AACxC,cAAc,6BAA6B,CAAC;AAC5C,cAAc,mCAAmC,CAAC;AAClD,cAAc,4BAA4B,CAAC;AAC3C,cAAc,qBAAqB,CAAC;AACpC,cAAc,+BAA+B,CAAC;AAE9C,wEAAwE;AACxE,yDAAyD;AACzD,2HAA2H;AAC3H,mEAAmE;AAEnE,+EAA+E;AAC/E,cAAc,+BAA+B,CAAC;AAC9C,cAAc,kCAAkC,CAAC;AACjD,cAAc,kCAAkC,CAAC;AACjD,cAAc,iCAAiC,CAAC;AAChD,cAAc,wCAAwC,CAAC;AACvD,cAAc,+BAA+B,CAAC;AAC9C,cAAc,6BAA6B,CAAC;AAE5C,uFAAuF;AACvF,sFAAsF;AAEtF,+EAA+E;AAC/E,cAAc,yBAAyB,CAAC;AACxC,OAAO,EAAE,eAAe,EAAE,WAAW,EAAE,eAAe,EAAE,MAAM,kBAAkB,CAAC;AAEjF,6FAA6F;AAC7F,uGAAuG;AAEvG,iFAAiF;AACjF,OAAO,EAAE,aAAa,EAAE,MAAM,0BAA0B,CAAC;AACzD,OAAO,EAAE,eAAe,EAAE,MAAM,4BAA4B,CAAC;AAC7D,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAC9C,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAC9C,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAChD,OAAO,EAAE,aAAa,EAAE,MAAM,wBAAwB,CAAC;AACvD,OAAO,EAAE,gBAAgB,EAAE,MAAM,2BAA2B,CAAC;AAC7D,OAAO,EAAE,kBAAkB,EAAE,MAAM,gCAAgC,CAAC;AACpE,OAAO,EAAE,gBAAgB,EAAE,MAAM,8BAA8B,CAAC;AAChE,OAAO,EAAE,qBAAqB,EAAE,MAAM,2BAA2B,CAAC;AAClE,OAAO,EAAE,iBAAiB,EAAE,MAAM,iBAAiB,CAAC;AACpD,OAAO,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAC;AAC/C,OAAO,EAAE,gBAAgB,EAAE,gBAAgB,EAAsB,MAAM,iBAAiB,CAAC"}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import type { StorageAdapter } from '../core/contracts/index.js';
|
|
2
|
+
import { type StorageHooks } from '../core/contracts/hooks.js';
|
|
3
|
+
/**
|
|
4
|
+
* The adapter with lifecycle hooks around its calls, on any adapter.
|
|
5
|
+
*
|
|
6
|
+
* - `onBeforeQuery` (get, all, exec) and `onBeforeWrite` (run) see the call's context, and return it, changed or
|
|
7
|
+
* not, to go on, or undefined to stop the call: a stopped get returns null, all an empty list, run no changes.
|
|
8
|
+
* - `onAfterQuery` can replace the result, and `onAfterWrite` sees it.
|
|
9
|
+
* - `onBeforeTransaction` can stop a transaction, and `onAfterTransaction` sees its outcome. The statements inside a
|
|
10
|
+
* transaction pass through the hooks too.
|
|
11
|
+
* - `onError` sees each failure and returns the error to throw, or undefined to swallow it.
|
|
12
|
+
*
|
|
13
|
+
* Everything else, the adapter's kind and its own methods (`withConnection` on PostgreSQL), reaches the adapter
|
|
14
|
+
* itself, and `instanceof` still names its class.
|
|
15
|
+
*/
|
|
16
|
+
export declare function withHooks<A extends StorageAdapter>(adapter: A, hooks: StorageHooks): A;
|
|
17
|
+
//# sourceMappingURL=withHooks.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"withHooks.d.ts","sourceRoot":"","sources":["../../src/shared/withHooks.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAuC,MAAM,mBAAmB,CAAC;AAC7F,OAAO,EAIL,KAAK,YAAY,EAGlB,MAAM,yBAAyB,CAAC;AAOjC;;;;;;;;;;;;GAYG;AACH,wBAAgB,SAAS,CAAC,CAAC,SAAS,cAAc,EAAE,OAAO,EAAE,CAAC,EAAE,KAAK,EAAE,YAAY,GAAG,CAAC,CAgGtF"}
|
|
@@ -0,0 +1,108 @@
|
|
|
1
|
+
import { generateOperationId, } from '../core/contracts/hooks.js';
|
|
2
|
+
/** Errors the hooks of an inner call already handed to onError, so the transaction around it does not hand them again. */
|
|
3
|
+
const handled = new WeakSet();
|
|
4
|
+
const EMPTY_WRITE = { changes: 0, lastInsertRowid: null };
|
|
5
|
+
/**
|
|
6
|
+
* The adapter with lifecycle hooks around its calls, on any adapter.
|
|
7
|
+
*
|
|
8
|
+
* - `onBeforeQuery` (get, all, exec) and `onBeforeWrite` (run) see the call's context, and return it, changed or
|
|
9
|
+
* not, to go on, or undefined to stop the call: a stopped get returns null, all an empty list, run no changes.
|
|
10
|
+
* - `onAfterQuery` can replace the result, and `onAfterWrite` sees it.
|
|
11
|
+
* - `onBeforeTransaction` can stop a transaction, and `onAfterTransaction` sees its outcome. The statements inside a
|
|
12
|
+
* transaction pass through the hooks too.
|
|
13
|
+
* - `onError` sees each failure and returns the error to throw, or undefined to swallow it.
|
|
14
|
+
*
|
|
15
|
+
* Everything else, the adapter's kind and its own methods (`withConnection` on PostgreSQL), reaches the adapter
|
|
16
|
+
* itself, and `instanceof` still names its class.
|
|
17
|
+
*/
|
|
18
|
+
export function withHooks(adapter, hooks) {
|
|
19
|
+
const context = (operation) => ({
|
|
20
|
+
operationId: generateOperationId(),
|
|
21
|
+
operation,
|
|
22
|
+
startTime: Date.now(),
|
|
23
|
+
adapterKind: adapter.kind,
|
|
24
|
+
});
|
|
25
|
+
/** Hands `error` to onError; throws what it returns, or returns when it swallows the error. */
|
|
26
|
+
const fail = async (error, at) => {
|
|
27
|
+
const err = error instanceof Error ? error : new Error(String(error));
|
|
28
|
+
if (!hooks.onError || handled.has(err))
|
|
29
|
+
throw err;
|
|
30
|
+
const replaced = await hooks.onError(err, at);
|
|
31
|
+
if (!replaced)
|
|
32
|
+
return;
|
|
33
|
+
handled.add(replaced);
|
|
34
|
+
throw replaced;
|
|
35
|
+
};
|
|
36
|
+
const query = async (operation, statement, parameters, call, stopped) => {
|
|
37
|
+
let at = { ...context(operation), statement, parameters };
|
|
38
|
+
if (hooks.onBeforeQuery) {
|
|
39
|
+
const next = await hooks.onBeforeQuery(at);
|
|
40
|
+
if (!next)
|
|
41
|
+
return stopped;
|
|
42
|
+
at = next;
|
|
43
|
+
}
|
|
44
|
+
try {
|
|
45
|
+
const result = await call(at.statement, at.parameters);
|
|
46
|
+
if (!hooks.onAfterQuery)
|
|
47
|
+
return result;
|
|
48
|
+
const replaced = await hooks.onAfterQuery(at, result);
|
|
49
|
+
return replaced === undefined ? result : replaced;
|
|
50
|
+
}
|
|
51
|
+
catch (error) {
|
|
52
|
+
await fail(error, at);
|
|
53
|
+
return stopped;
|
|
54
|
+
}
|
|
55
|
+
};
|
|
56
|
+
const overrides = {
|
|
57
|
+
get: (statement, parameters) => query('get', statement, parameters, (s, p) => adapter.get(s, p), null),
|
|
58
|
+
all: (statement, parameters) => query('all', statement, parameters, (s, p) => adapter.all(s, p), []),
|
|
59
|
+
exec: (script) => query('exec', script, undefined, (s) => adapter.exec(s), undefined),
|
|
60
|
+
run: async (statement, parameters) => {
|
|
61
|
+
let at = { ...context('run'), statement, parameters };
|
|
62
|
+
if (hooks.onBeforeWrite) {
|
|
63
|
+
const next = await hooks.onBeforeWrite(at);
|
|
64
|
+
if (!next)
|
|
65
|
+
return EMPTY_WRITE;
|
|
66
|
+
at = next;
|
|
67
|
+
}
|
|
68
|
+
try {
|
|
69
|
+
const result = await adapter.run(at.statement, at.parameters);
|
|
70
|
+
await hooks.onAfterWrite?.(at, result);
|
|
71
|
+
return result;
|
|
72
|
+
}
|
|
73
|
+
catch (error) {
|
|
74
|
+
await fail(error, at);
|
|
75
|
+
return EMPTY_WRITE;
|
|
76
|
+
}
|
|
77
|
+
},
|
|
78
|
+
transaction: async (fn) => {
|
|
79
|
+
let at = { ...context('transaction') };
|
|
80
|
+
if (hooks.onBeforeTransaction) {
|
|
81
|
+
const next = await hooks.onBeforeTransaction(at);
|
|
82
|
+
if (!next)
|
|
83
|
+
return undefined;
|
|
84
|
+
at = next;
|
|
85
|
+
}
|
|
86
|
+
try {
|
|
87
|
+
const result = await adapter.transaction((trx) => fn(withHooks(trx, hooks)));
|
|
88
|
+
await hooks.onAfterTransaction?.({ ...at, outcome: 'committed' });
|
|
89
|
+
return result;
|
|
90
|
+
}
|
|
91
|
+
catch (error) {
|
|
92
|
+
await hooks.onAfterTransaction?.({ ...at, outcome: 'rolled_back' });
|
|
93
|
+
await fail(error, at);
|
|
94
|
+
return undefined;
|
|
95
|
+
}
|
|
96
|
+
},
|
|
97
|
+
};
|
|
98
|
+
return new Proxy(adapter, {
|
|
99
|
+
get(target, property) {
|
|
100
|
+
if (Object.prototype.hasOwnProperty.call(overrides, property)) {
|
|
101
|
+
return overrides[property];
|
|
102
|
+
}
|
|
103
|
+
const value = Reflect.get(target, property, target);
|
|
104
|
+
return typeof value === 'function' ? value.bind(target) : value;
|
|
105
|
+
},
|
|
106
|
+
});
|
|
107
|
+
}
|
|
108
|
+
//# sourceMappingURL=withHooks.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"withHooks.js","sourceRoot":"","sources":["../../src/shared/withHooks.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED