node-firebird 2.4.2 → 2.6.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/README.md +94 -1
- package/lib/callback.d.ts +13 -0
- package/lib/callback.js +31 -0
- package/lib/index.d.ts +6 -1
- package/lib/index.js +16 -0
- package/lib/pool.d.ts +7 -0
- package/lib/pool.js +25 -0
- package/lib/types.d.ts +49 -0
- package/lib/wire/connection.d.ts +7 -0
- package/lib/wire/connection.js +45 -14
- package/lib/wire/const.d.ts +4 -0
- package/lib/wire/const.js +8 -0
- package/lib/wire/database.d.ts +24 -0
- package/lib/wire/database.js +85 -0
- package/lib/wire/statement.d.ts +7 -0
- package/lib/wire/statement.js +30 -0
- package/lib/wire/transaction.d.ts +8 -5
- package/lib/wire/transaction.js +76 -0
- package/package.json +1 -1
- package/src/callback.ts +36 -0
- package/src/index.ts +28 -1
- package/src/pool.ts +28 -0
- package/src/types.ts +58 -0
- package/src/wire/connection.ts +51 -14
- package/src/wire/const.ts +9 -0
- package/src/wire/database.ts +97 -1
- package/src/wire/statement.ts +39 -0
- package/src/wire/transaction.ts +89 -1
package/src/wire/transaction.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { doCallback, doError } from '../callback';
|
|
1
|
+
import { doCallback, doError, fromCallback } from '../callback';
|
|
2
2
|
import { noop } from '../utils';
|
|
3
3
|
import Const from './const';
|
|
4
4
|
|
|
@@ -8,6 +8,38 @@ import Const from './const';
|
|
|
8
8
|
*
|
|
9
9
|
***************************************/
|
|
10
10
|
|
|
11
|
+
/** The error delivered when options.signal was already aborted on entry. */
|
|
12
|
+
function abortError(signal: any): Error {
|
|
13
|
+
if (signal && signal.reason instanceof Error)
|
|
14
|
+
return signal.reason;
|
|
15
|
+
var err: any = new Error('The operation was aborted');
|
|
16
|
+
err.name = 'AbortError';
|
|
17
|
+
err.code = 'ABORT_ERR';
|
|
18
|
+
return err;
|
|
19
|
+
}
|
|
20
|
+
|
|
21
|
+
/**
|
|
22
|
+
* Wire an AbortSignal to a running statement: on abort, send an out-of-band
|
|
23
|
+
* op_cancel so the server fails the executing operation with isc_cancelled
|
|
24
|
+
* (surfaced through the statement's own callback as err.gdscode ===
|
|
25
|
+
* GDSCode.CANCELLED). Returns the wrapped callback that detaches the
|
|
26
|
+
* listener once the operation settles.
|
|
27
|
+
*/
|
|
28
|
+
function hookAbortSignal(connection: any, signal: any, callback: any): any {
|
|
29
|
+
var settled = false;
|
|
30
|
+
var onAbort = function() {
|
|
31
|
+
if (!settled)
|
|
32
|
+
connection.cancelOperation(Const.fb_cancel_raise);
|
|
33
|
+
};
|
|
34
|
+
signal.addEventListener('abort', onAbort, { once: true });
|
|
35
|
+
return function(err?: any, result?: any, meta?: any, isSelect?: boolean) {
|
|
36
|
+
settled = true;
|
|
37
|
+
signal.removeEventListener('abort', onAbort);
|
|
38
|
+
if (callback)
|
|
39
|
+
callback(err, result, meta, isSelect);
|
|
40
|
+
};
|
|
41
|
+
}
|
|
42
|
+
|
|
11
43
|
class Transaction {
|
|
12
44
|
connection: any;
|
|
13
45
|
db: any;
|
|
@@ -38,6 +70,15 @@ class Transaction {
|
|
|
38
70
|
params = undefined;
|
|
39
71
|
}
|
|
40
72
|
|
|
73
|
+
var signal = options && options.signal;
|
|
74
|
+
if (signal) {
|
|
75
|
+
if (signal.aborted) {
|
|
76
|
+
doError(abortError(signal), callback);
|
|
77
|
+
return;
|
|
78
|
+
}
|
|
79
|
+
callback = hookAbortSignal(this.connection, signal, callback);
|
|
80
|
+
}
|
|
81
|
+
|
|
41
82
|
var self = this;
|
|
42
83
|
this.newStatement(query, function(err: any, statement: any) {
|
|
43
84
|
|
|
@@ -207,6 +248,53 @@ class Transaction {
|
|
|
207
248
|
rollbackRetaining(callback?: (err?: any) => void): void {
|
|
208
249
|
this.connection.rollbackRetaining(this, callback);
|
|
209
250
|
}
|
|
251
|
+
|
|
252
|
+
/* Promise / async-await API — wrappers over the callback methods above. */
|
|
253
|
+
|
|
254
|
+
queryAsync(query: string, params?: any, options?: any): Promise<any[]> {
|
|
255
|
+
var self = this;
|
|
256
|
+
return fromCallback(function(cb) { self.query(query, params, cb, options); });
|
|
257
|
+
}
|
|
258
|
+
|
|
259
|
+
executeAsync(query: string, params?: any, options?: any): Promise<any[]> {
|
|
260
|
+
var self = this;
|
|
261
|
+
return fromCallback(function(cb) { self.execute(query, params, cb, options); });
|
|
262
|
+
}
|
|
263
|
+
|
|
264
|
+
sequentiallyAsync(query: string, params?: any, on?: any, options?: any): Promise<void> {
|
|
265
|
+
if (params instanceof Function) {
|
|
266
|
+
options = on;
|
|
267
|
+
on = params;
|
|
268
|
+
params = undefined;
|
|
269
|
+
}
|
|
270
|
+
var self = this;
|
|
271
|
+
return fromCallback(function(cb) { self.sequentially(query, params, on, cb, options); });
|
|
272
|
+
}
|
|
273
|
+
|
|
274
|
+
newStatementAsync(query: string): Promise<any> {
|
|
275
|
+
var self = this;
|
|
276
|
+
return fromCallback(function(cb) { self.newStatement(query, cb); });
|
|
277
|
+
}
|
|
278
|
+
|
|
279
|
+
commitAsync(): Promise<void> {
|
|
280
|
+
var self = this;
|
|
281
|
+
return fromCallback(function(cb) { self.commit(cb); });
|
|
282
|
+
}
|
|
283
|
+
|
|
284
|
+
rollbackAsync(): Promise<void> {
|
|
285
|
+
var self = this;
|
|
286
|
+
return fromCallback(function(cb) { self.rollback(cb); });
|
|
287
|
+
}
|
|
288
|
+
|
|
289
|
+
commitRetainingAsync(): Promise<void> {
|
|
290
|
+
var self = this;
|
|
291
|
+
return fromCallback(function(cb) { self.commitRetaining(cb); });
|
|
292
|
+
}
|
|
293
|
+
|
|
294
|
+
rollbackRetainingAsync(): Promise<void> {
|
|
295
|
+
var self = this;
|
|
296
|
+
return fromCallback(function(cb) { self.rollbackRetaining(cb); });
|
|
297
|
+
}
|
|
210
298
|
}
|
|
211
299
|
|
|
212
300
|
export = Transaction;
|