node-firebird-driver 3.2.0 → 3.3.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 +7 -4
- package/dist/lib/impl/attachment.d.ts +4 -4
- package/dist/lib/impl/attachment.js +8 -6
- package/dist/lib/impl/attachment.js.map +1 -1
- package/dist/lib/impl/blob.d.ts +0 -1
- package/dist/lib/impl/blob.js.map +1 -1
- package/dist/lib/impl/client.js +3 -2
- package/dist/lib/impl/client.js.map +1 -1
- package/dist/lib/impl/date-time.js +6 -6
- package/dist/lib/impl/date-time.js.map +1 -1
- package/dist/lib/impl/events.js +2 -1
- package/dist/lib/impl/events.js.map +1 -1
- package/dist/lib/impl/fb-util.d.ts +2 -2
- package/dist/lib/impl/fb-util.js +107 -88
- package/dist/lib/impl/fb-util.js.map +1 -1
- package/dist/lib/impl/resultset.js +11 -5
- package/dist/lib/impl/resultset.js.map +1 -1
- package/dist/lib/impl/statement.js +4 -2
- package/dist/lib/impl/statement.js.map +1 -1
- package/dist/lib/impl/time-zones.js +7 -6
- package/dist/lib/impl/time-zones.js.map +1 -1
- package/dist/lib/impl/transaction.js +2 -1
- package/dist/lib/impl/transaction.js.map +1 -1
- package/dist/lib/index.d.ts +8 -2
- package/dist/lib/index.js +7 -1
- package/dist/lib/index.js.map +1 -1
- package/dist/test/tests.js +177 -70
- package/dist/test/tests.js.map +1 -1
- package/package.json +6 -5
- package/src/lib/impl/attachment.ts +290 -253
- package/src/lib/impl/blob.ts +37 -35
- package/src/lib/impl/client.ts +60 -61
- package/src/lib/impl/date-time.ts +33 -33
- package/src/lib/impl/events.ts +17 -18
- package/src/lib/impl/fb-util.ts +552 -448
- package/src/lib/impl/resultset.ts +94 -86
- package/src/lib/impl/statement.ts +154 -127
- package/src/lib/impl/time-zones.ts +643 -641
- package/src/lib/impl/transaction.ts +37 -38
- package/src/lib/index.ts +325 -285
- package/src/test/tests.ts +996 -860
- package/tsconfig.json +7 -13
package/README.md
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
[](https://github.com/asfernandes/node-firebird-drivers/actions?query=workflow%3ACI)
|
|
2
2
|
[](https://www.npmjs.com/package/node-firebird-driver)
|
|
3
3
|
|
|
4
4
|
# Firebird client interfaces for Node.js / TypeScript
|
|
@@ -16,12 +16,15 @@ There is also plan to create a socket-based (pure Node.js) driver.
|
|
|
16
16
|
|
|
17
17
|
## Installation
|
|
18
18
|
|
|
19
|
+
```sh
|
|
19
20
|
yarn add node-firebird-driver
|
|
21
|
+
```
|
|
20
22
|
|
|
21
23
|
# Donation
|
|
22
24
|
|
|
23
25
|
If this project help you reduce time to develop, you can show your appreciation with a donation.
|
|
24
26
|
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
BTC: 1Q1W3tLD1xbk81kTeFqobiyrEXcKN1GfHG
|
|
27
|
+
- GitHub Sponsor: https://github.com/sponsors/asfernandes
|
|
28
|
+
- Pix (Brazil): 278dd4e5-8226-494d-93a9-f3fb8a027a99
|
|
29
|
+
- BTC: 1Q1W3tLD1xbk81kTeFqobiyrEXcKN1GfHG
|
|
30
|
+
- [](https://www.paypal.com/cgi-bin/webscr?cmd=_s-xclick&hosted_button_id=X3JMTGW92LQEL)
|
|
@@ -40,20 +40,20 @@ export declare abstract class AbstractAttachment implements Attachment {
|
|
|
40
40
|
executeOptions?: ExecuteOptions;
|
|
41
41
|
}): Promise<void>;
|
|
42
42
|
/** Executes a statement that returns a single record. */
|
|
43
|
-
executeSingleton(transaction: AbstractTransaction, sqlStmt: string, parameters?:
|
|
43
|
+
executeSingleton(transaction: AbstractTransaction, sqlStmt: string, parameters?: any[], options?: {
|
|
44
44
|
prepareOptions?: PrepareOptions;
|
|
45
45
|
executeOptions?: ExecuteOptions;
|
|
46
|
-
}): Promise<
|
|
46
|
+
}): Promise<any[]>;
|
|
47
47
|
/** Executes a statement that returns a single record in object form. */
|
|
48
48
|
executeSingletonAsObject<T extends object>(transaction: AbstractTransaction, sqlStmt: string, parameters?: any[], options?: {
|
|
49
49
|
prepareOptions?: PrepareOptions;
|
|
50
50
|
executeOptions?: ExecuteOptions;
|
|
51
51
|
}): Promise<T>;
|
|
52
52
|
/** Executes a statement that returns a single record. */
|
|
53
|
-
executeReturning(transaction: AbstractTransaction, sqlStmt: string, parameters?:
|
|
53
|
+
executeReturning(transaction: AbstractTransaction, sqlStmt: string, parameters?: any[], options?: {
|
|
54
54
|
prepareOptions?: PrepareOptions;
|
|
55
55
|
executeOptions?: ExecuteOptions;
|
|
56
|
-
}): Promise<
|
|
56
|
+
}): Promise<any[]>;
|
|
57
57
|
/** Executes a statement that returns a single record in object form. */
|
|
58
58
|
executeReturningAsObject<T extends object>(transaction: AbstractTransaction, sqlStmt: string, parameters?: any[], options?: {
|
|
59
59
|
prepareOptions?: PrepareOptions;
|
|
@@ -103,10 +103,11 @@ class AbstractAttachment {
|
|
|
103
103
|
}
|
|
104
104
|
async queueEvents(names, callBack) {
|
|
105
105
|
this.check();
|
|
106
|
-
const trimmedNames = names.map(name => {
|
|
106
|
+
const trimmedNames = names.map((name) => {
|
|
107
107
|
const trimmedName = name.trimRight();
|
|
108
|
-
if (Buffer.from(trimmedName).byteLength > 255)
|
|
108
|
+
if (Buffer.from(trimmedName).byteLength > 255) {
|
|
109
109
|
throw new Error(`Invalid event name: ${name}.`);
|
|
110
|
+
}
|
|
110
111
|
return trimmedName;
|
|
111
112
|
});
|
|
112
113
|
const events = await this.internalQueueEvents(trimmedNames, callBack);
|
|
@@ -137,14 +138,15 @@ class AbstractAttachment {
|
|
|
137
138
|
return !!this.client;
|
|
138
139
|
}
|
|
139
140
|
check() {
|
|
140
|
-
if (!this.isValid)
|
|
141
|
+
if (!this.isValid) {
|
|
141
142
|
throw new Error('Attachment is already disconnected.');
|
|
143
|
+
}
|
|
142
144
|
}
|
|
143
145
|
async preDispose() {
|
|
144
146
|
try {
|
|
145
|
-
await Promise.all(Array.from(this.events).map(events => events.cancel()));
|
|
146
|
-
await Promise.all(Array.from(this.statements).map(statement => statement.dispose()));
|
|
147
|
-
await Promise.all(Array.from(this.transactions).map(transaction => transaction.rollback()));
|
|
147
|
+
await Promise.all(Array.from(this.events).map((events) => events.cancel()));
|
|
148
|
+
await Promise.all(Array.from(this.statements).map((statement) => statement.dispose()));
|
|
149
|
+
await Promise.all(Array.from(this.transactions).map((transaction) => transaction.rollback()));
|
|
148
150
|
}
|
|
149
151
|
finally {
|
|
150
152
|
this.events.clear();
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"attachment.js","sourceRoot":"","sources":["../../../src/lib/impl/attachment.ts"],"names":[],"mappings":";;;
|
|
1
|
+
{"version":3,"file":"attachment.js","sourceRoot":"","sources":["../../../src/lib/impl/attachment.ts"],"names":[],"mappings":";;;AAmBA,yCAAyC;AACzC,MAAsB,kBAAkB;IAoBtC,YAA6B,MAAuB;QAAvB,WAAM,GAAN,MAAM,CAAiB;QAnBpD,WAAM,GAAG,IAAI,GAAG,EAAU,CAAC;QAC3B,eAAU,GAAG,IAAI,GAAG,EAAqB,CAAC;QAC1C,iBAAY,GAAG,IAAI,GAAG,EAAuB,CAAC;IAiBS,CAAC;IAExD,mCAAmC;IACnC,KAAK,CAAC,UAAU;QACd,IAAI,CAAC,KAAK,EAAE,CAAC;QAEb,MAAM,IAAI,CAAC,UAAU,EAAE,CAAC;QACxB,MAAM,IAAI,CAAC,kBAAkB,EAAE,CAAC;QAChC,MAAM,IAAI,CAAC,WAAW,EAAE,CAAC;IAC3B,CAAC;IAED,sDAAsD;IACtD,KAAK,CAAC,YAAY;QAChB,IAAI,CAAC,KAAK,EAAE,CAAC;QAEb,MAAM,IAAI,CAAC,UAAU,EAAE,CAAC;QACxB,MAAM,IAAI,CAAC,oBAAoB,EAAE,CAAC;QAClC,MAAM,IAAI,CAAC,WAAW,EAAE,CAAC;IAC3B,CAAC;IAED,oEAAoE;IACpE,KAAK,CAAC,kBAAkB,CAAC,MAAe;QACtC,IAAI,CAAC,KAAK,EAAE,CAAC;QACb,MAAM,IAAI,CAAC,0BAA0B,CAAC,MAAM,CAAC,CAAC;IAChD,CAAC;IAED,qDAAqD;IACrD,KAAK,CAAC,eAAe,CAAC,aAAuB;QAC3C,IAAI,CAAC,KAAK,EAAE,CAAC;QACb,MAAM,IAAI,CAAC,uBAAuB,CAAC,aAAa,IAAI,KAAK,CAAC,CAAC;IAC7D,CAAC;IAED,+FAA+F;IAC/F,KAAK,CAAC,kBAAkB,CACtB,WAAgC,EAChC,OAAe,EACf,OAEC;QAED,IAAI,CAAC,KAAK,EAAE,CAAC;QAEb,MAAM,SAAS,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,WAAW,EAAE,OAAO,EAAE,OAAO,IAAI,OAAO,CAAC,cAAc,CAAC,CAAC;QAC9F,IAAI,CAAC;YACH,MAAM,cAAc,GAAG,MAAM,SAAS,CAAC,kBAAkB,CAAC,WAAW,CAAC,CAAC;YACvE,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,cAAc,CAAC,CAAC;YACtC,OAAO,cAAc,CAAC;QACxB,CAAC;gBAAS,CAAC;YACT,MAAM,SAAS,CAAC,OAAO,EAAE,CAAC;QAC5B,CAAC;IACH,CAAC;IAED,mDAAmD;IACnD,KAAK,CAAC,OAAO,CACX,WAAgC,EAChC,OAAe,EACf,UAAkB,EAClB,OAGC;QAED,IAAI,CAAC,KAAK,EAAE,CAAC;QAEb,MAAM,SAAS,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,WAAW,EAAE,OAAO,EAAE,OAAO,IAAI,OAAO,CAAC,cAAc,CAAC,CAAC;QAC9F,IAAI,CAAC;YACH,OAAO,MAAM,SAAS,CAAC,OAAO,CAAC,WAAW,EAAE,UAAU,EAAE,OAAO,IAAI,OAAO,CAAC,cAAc,CAAC,CAAC;QAC7F,CAAC;gBAAS,CAAC;YACT,MAAM,SAAS,CAAC,OAAO,EAAE,CAAC;QAC5B,CAAC;IACH,CAAC;IAED,yDAAyD;IACzD,KAAK,CAAC,gBAAgB,CACpB,WAAgC,EAChC,OAAe,EACf,UAAkB,EAClB,OAGC;QAED,IAAI,CAAC,KAAK,EAAE,CAAC;QAEb,MAAM,SAAS,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,WAAW,EAAE,OAAO,EAAE,OAAO,IAAI,OAAO,CAAC,cAAc,CAAC,CAAC;QAC9F,IAAI,CAAC;YACH,OAAO,MAAM,SAAS,CAAC,gBAAgB,CAAC,WAAW,EAAE,UAAU,EAAE,OAAO,IAAI,OAAO,CAAC,cAAc,CAAC,CAAC;QACtG,CAAC;gBAAS,CAAC;YACT,MAAM,SAAS,CAAC,OAAO,EAAE,CAAC;QAC5B,CAAC;IACH,CAAC;IAED,wEAAwE;IACxE,KAAK,CAAC,wBAAwB,CAC5B,WAAgC,EAChC,OAAe,EACf,UAAkB,EAClB,OAGC;QAED,IAAI,CAAC,KAAK,EAAE,CAAC;QAEb,MAAM,SAAS,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,WAAW,EAAE,OAAO,EAAE,OAAO,IAAI,OAAO,CAAC,cAAc,CAAC,CAAC;QAC9F,IAAI,CAAC;YACH,OAAO,MAAM,SAAS,CAAC,wBAAwB,CAAC,WAAW,EAAE,UAAU,EAAE,OAAO,IAAI,OAAO,CAAC,cAAc,CAAC,CAAC;QAC9G,CAAC;gBAAS,CAAC;YACT,MAAM,SAAS,CAAC,OAAO,EAAE,CAAC;QAC5B,CAAC;IACH,CAAC;IAED,yDAAyD;IACzD,KAAK,CAAC,gBAAgB,CACpB,WAAgC,EAChC,OAAe,EACf,UAAkB,EAClB,OAGC;QAED,OAAO,MAAM,IAAI,CAAC,gBAAgB,CAAC,WAAW,EAAE,OAAO,EAAE,UAAU,EAAE,OAAO,CAAC,CAAC;IAChF,CAAC;IAED,wEAAwE;IACxE,KAAK,CAAC,wBAAwB,CAC5B,WAAgC,EAChC,OAAe,EACf,UAAkB,EAClB,OAGC;QAED,OAAO,MAAM,IAAI,CAAC,wBAAwB,CAAI,WAAW,EAAE,OAAO,EAAE,UAAU,EAAE,OAAO,CAAC,CAAC;IAC3F,CAAC;IAED,gDAAgD;IAChD,KAAK,CAAC,YAAY,CAChB,WAAgC,EAChC,OAAe,EACf,UAAkB,EAClB,OAGC;QAED,IAAI,CAAC,KAAK,EAAE,CAAC;QAEb,MAAM,SAAS,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,WAAW,EAAE,OAAO,EAAE,OAAO,IAAI,OAAO,CAAC,cAAc,CAAC,CAAC;QAC9F,IAAI,CAAC;YACH,MAAM,SAAS,GAAG,MAAM,SAAS,CAAC,YAAY,CAAC,WAAW,EAAE,UAAU,EAAE,OAAO,IAAI,OAAO,CAAC,cAAc,CAAC,CAAC;YAC3G,SAAS,CAAC,sBAAsB,GAAG,IAAI,CAAC;YACxC,OAAO,SAAS,CAAC;QACnB,CAAC;QAAC,OAAO,CAAC,EAAE,CAAC;YACX,MAAM,SAAS,CAAC,OAAO,EAAE,CAAC;YAC1B,MAAM,CAAC,CAAC;QACV,CAAC;IACH,CAAC;IAED,KAAK,CAAC,WAAW,CAAC,KAAe,EAAE,QAAyD;QAC1F,IAAI,CAAC,KAAK,EAAE,CAAC;QAEb,MAAM,YAAY,GAAG,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE;YACtC,MAAM,WAAW,GAAG,IAAI,CAAC,SAAS,EAAE,CAAC;YAErC,IAAI,MAAM,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,UAAU,GAAG,GAAG,EAAE,CAAC;gBAC9C,MAAM,IAAI,KAAK,CAAC,uBAAuB,IAAI,GAAG,CAAC,CAAC;YAClD,CAAC;YAED,OAAO,WAAW,CAAC;QACrB,CAAC,CAAC,CAAC;QAEH,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,mBAAmB,CAAC,YAAY,EAAE,QAAQ,CAAC,CAAC;QACtE,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;QAExB,OAAO,MAAM,CAAC;IAChB,CAAC;IAED,KAAK,CAAC,UAAU,CAAC,WAAgC,EAAE,OAA2B;QAC5E,OAAO,MAAM,IAAI,CAAC,kBAAkB,CAAC,WAAW,EAAE,OAAO,CAAC,CAAC;IAC7D,CAAC;IAED,KAAK,CAAC,QAAQ,CAAC,WAAgC,EAAE,IAAU;QACzD,OAAO,MAAM,IAAI,CAAC,gBAAgB,CAAC,WAAW,EAAE,IAAI,CAAC,CAAC;IACxD,CAAC;IAED,gCAAgC;IAChC,KAAK,CAAC,gBAAgB,CAAC,OAA4B;QACjD,IAAI,CAAC,KAAK,EAAE,CAAC;QAEb,MAAM,WAAW,GAAG,MAAM,IAAI,CAAC,wBAAwB,CACrD,OAAO,IAAI,IAAI,CAAC,yBAAyB,IAAI,IAAI,CAAC,MAAO,CAAC,yBAAyB,CACpF,CAAC;QACF,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC;QACnC,OAAO,WAAW,CAAC;IACrB,CAAC;IAED,wBAAwB;IACxB,KAAK,CAAC,OAAO,CACX,WAAgC,EAChC,OAAe,EACf,OAAwB;QAExB,IAAI,CAAC,KAAK,EAAE,CAAC;QAEb,MAAM,SAAS,GAAG,MAAM,IAAI,CAAC,eAAe,CAC1C,WAAW,EACX,OAAO,EACP,OAAO,IAAI,IAAI,CAAC,qBAAqB,IAAI,IAAI,CAAC,MAAO,CAAC,qBAAqB,CAC5E,CAAC;QACF,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;QAC/B,OAAO,SAAS,CAAC;IACnB,CAAC;IAED,IAAI,OAAO;QACT,OAAO,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC;IACvB,CAAC;IAEO,KAAK;QACX,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC;YAClB,MAAM,IAAI,KAAK,CAAC,qCAAqC,CAAC,CAAC;QACzD,CAAC;IACH,CAAC;IAEO,KAAK,CAAC,UAAU;QACtB,IAAI,CAAC;YACH,MAAM,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC;YAC5E,MAAM,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,GAAG,CAAC,CAAC,SAAS,EAAE,EAAE,CAAC,SAAS,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC;YACvF,MAAM,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC,GAAG,CAAC,CAAC,WAAW,EAAE,EAAE,CAAC,WAAW,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC;QAChG,CAAC;gBAAS,CAAC;YACT,IAAI,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC;YACpB,IAAI,CAAC,UAAU,CAAC,KAAK,EAAE,CAAC;YACxB,IAAI,CAAC,YAAY,CAAC,KAAK,EAAE,CAAC;QAC5B,CAAC;IACH,CAAC;IAEO,KAAK,CAAC,WAAW;QACvB,IAAI,CAAC,MAAO,CAAC,WAAW,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;QACtC,IAAI,CAAC,MAAM,GAAG,SAAS,CAAC;IAC1B,CAAC;CAqBF;AA1RD,gDA0RC"}
|
package/dist/lib/impl/blob.d.ts
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"blob.js","sourceRoot":"","sources":["../../../src/lib/impl/blob.ts"],"names":[],"mappings":";;;AAEA,0BAAsD;
|
|
1
|
+
{"version":3,"file":"blob.js","sourceRoot":"","sources":["../../../src/lib/impl/blob.ts"],"names":[],"mappings":";;;AAEA,0BAAsD;AAEtD,yCAAyC;AACzC,MAAsB,kBAAmB,SAAQ,cAAU;IACzD,YACE,IAAU,EACH,UAA8B;QAErC,KAAK,CAAC,IAAI,CAAC,CAAC;QAFL,eAAU,GAAV,UAAU,CAAoB;IAGvC,CAAC;IAED,IAAI,MAAM;QACR,OAAO,IAAI,CAAC,iBAAiB,EAAE,CAAC;IAClC,CAAC;IAED,KAAK,CAAC,KAAK;QACT,OAAO,MAAM,IAAI,CAAC,aAAa,EAAE,CAAC;IACpC,CAAC;IAED,KAAK,CAAC,MAAM;QACV,OAAO,MAAM,IAAI,CAAC,cAAc,EAAE,CAAC;IACrC,CAAC;IAED,KAAK,CAAC,IAAI,CAAC,MAAc,EAAE,MAAuB;QAChD,OAAO,MAAM,IAAI,CAAC,YAAY,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACjD,CAAC;IAED,KAAK,CAAC,IAAI,CAAC,MAAc;QACvB,OAAO,MAAM,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC;IACzC,CAAC;IAED,KAAK,CAAC,KAAK,CAAC,MAAc;QACxB,OAAO,MAAM,IAAI,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC;IAC1C,CAAC;CAQF;AAtCD,gDAsCC"}
|
package/dist/lib/impl/client.js
CHANGED
|
@@ -11,7 +11,7 @@ class AbstractClient {
|
|
|
11
11
|
async dispose() {
|
|
12
12
|
this.check();
|
|
13
13
|
try {
|
|
14
|
-
await Promise.all(Array.from(this.attachments).map(attachment => attachment.disconnect()));
|
|
14
|
+
await Promise.all(Array.from(this.attachments).map((attachment) => attachment.disconnect()));
|
|
15
15
|
}
|
|
16
16
|
finally {
|
|
17
17
|
this.attachments.clear();
|
|
@@ -37,8 +37,9 @@ class AbstractClient {
|
|
|
37
37
|
return !!this.connected;
|
|
38
38
|
}
|
|
39
39
|
check() {
|
|
40
|
-
if (!this.isValid)
|
|
40
|
+
if (!this.isValid) {
|
|
41
41
|
throw new Error('Client is already disposed.');
|
|
42
|
+
}
|
|
42
43
|
}
|
|
43
44
|
}
|
|
44
45
|
exports.AbstractClient = AbstractClient;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"client.js","sourceRoot":"","sources":["../../../src/lib/impl/client.ts"],"names":[],"mappings":";;;
|
|
1
|
+
{"version":3,"file":"client.js","sourceRoot":"","sources":["../../../src/lib/impl/client.ts"],"names":[],"mappings":";;;AAaA,qCAAqC;AACrC,MAAsB,cAAc;IAApC;QACE,cAAS,GAAG,IAAI,CAAC;QACjB,gBAAW,GAAG,IAAI,GAAG,EAAsB,CAAC;IAqE9C,CAAC;IA9CC,wCAAwC;IACxC,KAAK,CAAC,OAAO;QACX,IAAI,CAAC,KAAK,EAAE,CAAC;QAEb,IAAI,CAAC;YACH,MAAM,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,GAAG,CAAC,CAAC,UAAU,EAAE,EAAE,CAAC,UAAU,CAAC,UAAU,EAAE,CAAC,CAAC,CAAC;QAC/F,CAAC;gBAAS,CAAC;YACT,IAAI,CAAC,WAAW,CAAC,KAAK,EAAE,CAAC;QAC3B,CAAC;QAED,MAAM,IAAI,CAAC,eAAe,EAAE,CAAC;QAE7B,IAAI,CAAC,SAAS,GAAG,KAAK,CAAC;IACzB,CAAC;IAED,8BAA8B;IAC9B,KAAK,CAAC,OAAO,CAAC,GAAW,EAAE,OAAwB;QACjD,IAAI,CAAC,KAAK,EAAE,CAAC;QAEb,MAAM,UAAU,GAAG,MAAM,IAAI,CAAC,eAAe,CAAC,GAAG,EAAE,OAAO,IAAI,IAAI,CAAC,qBAAqB,CAAC,CAAC;QAC1F,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;QACjC,OAAO,UAAU,CAAC;IACpB,CAAC;IAED,0BAA0B;IAC1B,KAAK,CAAC,cAAc,CAAC,GAAW,EAAE,OAA+B;QAC/D,IAAI,CAAC,KAAK,EAAE,CAAC;QAEb,MAAM,UAAU,GAAG,MAAM,IAAI,CAAC,sBAAsB,CAAC,GAAG,EAAE,OAAO,IAAI,IAAI,CAAC,4BAA4B,CAAC,CAAC;QACxG,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;QACjC,OAAO,UAAU,CAAC;IACpB,CAAC;IAED,IAAI,OAAO;QACT,OAAO,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC;IAC1B,CAAC;IAEO,KAAK;QACX,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC;YAClB,MAAM,IAAI,KAAK,CAAC,6BAA6B,CAAC,CAAC;QACjD,CAAC;IACH,CAAC;CAKF;AAvED,wCAuEC"}
|
|
@@ -22,7 +22,10 @@ IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
|
|
|
22
22
|
CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
|
23
23
|
*******************************************************************************/
|
|
24
24
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
25
|
-
exports.
|
|
25
|
+
exports.decodeDate = decodeDate;
|
|
26
|
+
exports.encodeDate = encodeDate;
|
|
27
|
+
exports.decodeTime = decodeTime;
|
|
28
|
+
exports.encodeTime = encodeTime;
|
|
26
29
|
// These functions was adapted from https://github.com/nakagami/firebirdsql
|
|
27
30
|
/** Decode a date. */
|
|
28
31
|
function decodeDate(date) {
|
|
@@ -37,15 +40,15 @@ function decodeDate(date) {
|
|
|
37
40
|
day = 5 * day - 3 - 153 * month;
|
|
38
41
|
day = Math.trunc((day + 5) / 5);
|
|
39
42
|
let year = 100 * century + nday;
|
|
40
|
-
if (month < 10)
|
|
43
|
+
if (month < 10) {
|
|
41
44
|
month += 3;
|
|
45
|
+
}
|
|
42
46
|
else {
|
|
43
47
|
month -= 9;
|
|
44
48
|
year += 1;
|
|
45
49
|
}
|
|
46
50
|
return { year, month, day };
|
|
47
51
|
}
|
|
48
|
-
exports.decodeDate = decodeDate;
|
|
49
52
|
/** Encode a date. */
|
|
50
53
|
function encodeDate(year, month, day) {
|
|
51
54
|
const i = month + 9;
|
|
@@ -56,7 +59,6 @@ function encodeDate(year, month, day) {
|
|
|
56
59
|
const j = Math.trunc((146097 * c) / 4) + Math.trunc((1461 * jy) / 4) + Math.trunc((153 * jm + 2) / 5) + day - 678882;
|
|
57
60
|
return j;
|
|
58
61
|
}
|
|
59
|
-
exports.encodeDate = encodeDate;
|
|
60
62
|
/** Descode a time. */
|
|
61
63
|
function decodeTime(time) {
|
|
62
64
|
let seconds = Math.trunc(time / 10000);
|
|
@@ -67,10 +69,8 @@ function decodeTime(time) {
|
|
|
67
69
|
const fractions = time % 10000;
|
|
68
70
|
return { hours, minutes, seconds, fractions };
|
|
69
71
|
}
|
|
70
|
-
exports.decodeTime = decodeTime;
|
|
71
72
|
/** Encode a time. */
|
|
72
73
|
function encodeTime(hours, minutes, seconds, fractions) {
|
|
73
74
|
return (hours * 3600 + minutes * 60 + seconds) * 10000 + fractions;
|
|
74
75
|
}
|
|
75
|
-
exports.encodeTime = encodeTime;
|
|
76
76
|
//# sourceMappingURL=date-time.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"date-time.js","sourceRoot":"","sources":["../../../src/lib/impl/date-time.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;;;;;;;;;gFAqBgF
|
|
1
|
+
{"version":3,"file":"date-time.js","sourceRoot":"","sources":["../../../src/lib/impl/date-time.ts"],"names":[],"mappings":"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"}
|
package/dist/lib/impl/events.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"events.js","sourceRoot":"","sources":["../../../src/lib/impl/events.ts"],"names":[],"mappings":";;;
|
|
1
|
+
{"version":3,"file":"events.js","sourceRoot":"","sources":["../../../src/lib/impl/events.ts"],"names":[],"mappings":";;;AAIA,wCAAwC;AACxC,MAAsB,cAAc;IAClC,YAA6B,UAA+B;QAA/B,eAAU,GAAV,UAAU,CAAqB;IAAG,CAAC;IAEhE,qCAAqC;IACrC,KAAK,CAAC,MAAM;QACV,IAAI,CAAC,KAAK,EAAE,CAAC;QAEb,MAAM,IAAI,CAAC,cAAc,EAAE,CAAC;QAE5B,IAAI,CAAC,UAAU,EAAE,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;QACrC,IAAI,CAAC,UAAU,GAAG,SAAS,CAAC;IAC9B,CAAC;IAED,IAAI,OAAO;QACT,OAAO,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC;IAC3B,CAAC;IAEO,KAAK;QACX,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC;YAClB,MAAM,IAAI,KAAK,CAAC,+BAA+B,CAAC,CAAC;QACnD,CAAC;IACH,CAAC;CAGF;AAxBD,wCAwBC"}
|
|
@@ -1,4 +1,3 @@
|
|
|
1
|
-
/// <reference types="node" />
|
|
2
1
|
import { Attachment, ConnectOptions, CreateBlobOptions, CreateDatabaseOptions, Transaction, TransactionOptions } from '..';
|
|
3
2
|
/** SQL_* type constants */
|
|
4
3
|
export declare namespace sqlTypes {
|
|
@@ -31,6 +30,7 @@ export declare namespace dpb {
|
|
|
31
30
|
const user_name = 28;
|
|
32
31
|
const password = 29;
|
|
33
32
|
const sql_role_name = 60;
|
|
33
|
+
const set_db_readonly = 64;
|
|
34
34
|
}
|
|
35
35
|
/** TPB constants. */
|
|
36
36
|
export declare namespace tpb {
|
|
@@ -127,7 +127,7 @@ export type DataReader = (attachment: Attachment, transaction: Transaction, buff
|
|
|
127
127
|
export type ItemReader = (attachment: Attachment, transaction: Transaction, buffer: Uint8Array) => Promise<any>;
|
|
128
128
|
/** Creates a data reader. */
|
|
129
129
|
export declare function createDataReader(descriptors: Descriptor[]): DataReader;
|
|
130
|
-
export type DataWriter = (attachment: Attachment, transaction: Transaction, buffer: Uint8Array, values:
|
|
130
|
+
export type DataWriter = (attachment: Attachment, transaction: Transaction, buffer: Uint8Array, values: any[] | undefined) => Promise<void>;
|
|
131
131
|
export type ItemWriter = (attachment: Attachment, transaction: Transaction, buffer: Uint8Array, values: any) => Promise<void>;
|
|
132
132
|
/** Creates a data writer. */
|
|
133
133
|
export declare function createDataWriter(descriptors: Descriptor[]): DataWriter;
|
package/dist/lib/impl/fb-util.js
CHANGED
|
@@ -1,6 +1,12 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.
|
|
3
|
+
exports.charSets = exports.cancelType = exports.commonInfo = exports.statementInfo = exports.blobInfo = exports.epb = exports.bpb = exports.tpb = exports.dpb = exports.sqlTypes = void 0;
|
|
4
|
+
exports.createDpb = createDpb;
|
|
5
|
+
exports.createTpb = createTpb;
|
|
6
|
+
exports.createBpb = createBpb;
|
|
7
|
+
exports.getPortableInteger = getPortableInteger;
|
|
8
|
+
exports.createDataReader = createDataReader;
|
|
9
|
+
exports.createDataWriter = createDataWriter;
|
|
4
10
|
const os = require("os");
|
|
5
11
|
const littleEndian = os.endianness() === 'LE';
|
|
6
12
|
const stringDecoder = require("string_decoder");
|
|
@@ -37,19 +43,17 @@ var sqlTypes;
|
|
|
37
43
|
/** DPB constants. */
|
|
38
44
|
var dpb;
|
|
39
45
|
(function (dpb) {
|
|
40
|
-
/* tslint:disable */
|
|
41
46
|
dpb.version1 = 1;
|
|
42
47
|
dpb.lc_ctype = 48;
|
|
43
48
|
dpb.force_write = 24;
|
|
44
49
|
dpb.user_name = 28;
|
|
45
50
|
dpb.password = 29;
|
|
46
51
|
dpb.sql_role_name = 60;
|
|
47
|
-
|
|
52
|
+
dpb.set_db_readonly = 64;
|
|
48
53
|
})(dpb || (exports.dpb = dpb = {}));
|
|
49
54
|
/** TPB constants. */
|
|
50
55
|
var tpb;
|
|
51
56
|
(function (tpb) {
|
|
52
|
-
/* tslint:disable */
|
|
53
57
|
tpb.version1 = 1;
|
|
54
58
|
tpb.consistency = 1;
|
|
55
59
|
tpb.concurrency = 2;
|
|
@@ -64,12 +68,10 @@ var tpb;
|
|
|
64
68
|
tpb.no_rec_version = 18;
|
|
65
69
|
tpb.restart_requests = 19;
|
|
66
70
|
tpb.no_auto_undo = 20;
|
|
67
|
-
/* tslint:enable */
|
|
68
71
|
})(tpb || (exports.tpb = tpb = {}));
|
|
69
72
|
/** BPB constants. */
|
|
70
73
|
var bpb;
|
|
71
74
|
(function (bpb) {
|
|
72
|
-
/* tslint:disable */
|
|
73
75
|
bpb.version1 = 1;
|
|
74
76
|
bpb.source_type = 1;
|
|
75
77
|
bpb.target_type = 2;
|
|
@@ -82,14 +84,11 @@ var bpb;
|
|
|
82
84
|
bpb.type_stream = 0x1;
|
|
83
85
|
bpb.storage_main = 0x0;
|
|
84
86
|
bpb.storage_temp = 0x2;
|
|
85
|
-
/* tslint:enable */
|
|
86
87
|
})(bpb || (exports.bpb = bpb = {}));
|
|
87
88
|
/** EPB constants. */
|
|
88
89
|
var epb;
|
|
89
90
|
(function (epb) {
|
|
90
|
-
/* tslint:disable */
|
|
91
91
|
epb.version1 = 1;
|
|
92
|
-
/* tslint:enable */
|
|
93
92
|
})(epb || (exports.epb = epb = {}));
|
|
94
93
|
/** Blob info. */
|
|
95
94
|
var blobInfo;
|
|
@@ -126,29 +125,39 @@ function createDpb(options) {
|
|
|
126
125
|
const code = (c) => String.fromCharCode(c);
|
|
127
126
|
const charSet = 'utf8';
|
|
128
127
|
let ret = `${code(dpb.version1)}${code(dpb.lc_ctype)}${code(charSet.length)}${charSet}`;
|
|
129
|
-
if (!options)
|
|
128
|
+
if (!options) {
|
|
130
129
|
options = {};
|
|
131
|
-
|
|
130
|
+
}
|
|
131
|
+
if (!options.username) {
|
|
132
132
|
options.username = process.env.ISC_USER;
|
|
133
|
-
|
|
133
|
+
}
|
|
134
|
+
if (!options.password) {
|
|
134
135
|
options.password = process.env.ISC_PASSWORD;
|
|
135
|
-
|
|
136
|
+
}
|
|
137
|
+
if (options.username) {
|
|
136
138
|
ret += `${code(dpb.user_name)}${code(options.username.length)}${options.username}`;
|
|
137
|
-
|
|
139
|
+
}
|
|
140
|
+
if (options.password) {
|
|
138
141
|
ret += `${code(dpb.password)}${code(options.password.length)}${options.password}`;
|
|
139
|
-
|
|
142
|
+
}
|
|
143
|
+
if (options.role) {
|
|
140
144
|
ret += `${code(dpb.sql_role_name)}${code(options.role.length)}${options.role}`;
|
|
145
|
+
}
|
|
141
146
|
const createOptions = options;
|
|
142
|
-
if (createOptions.forcedWrite != undefined)
|
|
147
|
+
if (createOptions.forcedWrite != undefined) {
|
|
143
148
|
ret += `${code(dpb.force_write)}${code(1)}${code(createOptions.forcedWrite ? 1 : 0)}`;
|
|
149
|
+
}
|
|
150
|
+
if (options.setDatabaseReadWriteMode) {
|
|
151
|
+
ret += `${code(dpb.set_db_readonly)}${code(1)}${code(options.setDatabaseReadWriteMode == __1.DatabaseReadWriteMode.READ_ONLY ? 1 : 0)}`;
|
|
152
|
+
}
|
|
144
153
|
return Buffer.from(ret);
|
|
145
154
|
}
|
|
146
|
-
exports.createDpb = createDpb;
|
|
147
155
|
function createTpb(options) {
|
|
148
156
|
const code = (c) => String.fromCharCode(c);
|
|
149
157
|
let ret = code(tpb.version1);
|
|
150
|
-
if (!options)
|
|
158
|
+
if (!options) {
|
|
151
159
|
options = {};
|
|
160
|
+
}
|
|
152
161
|
switch (options.accessMode) {
|
|
153
162
|
case 'READ_ONLY':
|
|
154
163
|
ret += code(tpb.read);
|
|
@@ -173,26 +182,31 @@ function createTpb(options) {
|
|
|
173
182
|
ret += code(tpb.concurrency);
|
|
174
183
|
break;
|
|
175
184
|
case __1.TransactionIsolation.READ_COMMITTED:
|
|
176
|
-
ret +=
|
|
177
|
-
code(
|
|
185
|
+
ret +=
|
|
186
|
+
code(tpb.read_committed) +
|
|
187
|
+
code(options.readCommittedMode == 'RECORD_VERSION' ? tpb.rec_version : tpb.no_rec_version);
|
|
178
188
|
break;
|
|
179
189
|
}
|
|
180
|
-
if (options.noAutoUndo)
|
|
190
|
+
if (options.noAutoUndo) {
|
|
181
191
|
ret += code(tpb.no_auto_undo);
|
|
182
|
-
|
|
192
|
+
}
|
|
193
|
+
if (options.ignoreLimbo) {
|
|
183
194
|
ret += code(tpb.ignore_limbo);
|
|
184
|
-
|
|
195
|
+
}
|
|
196
|
+
if (options.restartRequests) {
|
|
185
197
|
ret += code(tpb.restart_requests);
|
|
186
|
-
|
|
198
|
+
}
|
|
199
|
+
if (options.autoCommit) {
|
|
187
200
|
ret += code(tpb.autocommit);
|
|
201
|
+
}
|
|
188
202
|
return Buffer.from(ret);
|
|
189
203
|
}
|
|
190
|
-
exports.createTpb = createTpb;
|
|
191
204
|
function createBpb(options) {
|
|
192
205
|
const code = (c) => String.fromCharCode(c);
|
|
193
206
|
let ret = code(bpb.version1);
|
|
194
|
-
if (!options)
|
|
207
|
+
if (!options) {
|
|
195
208
|
options = {};
|
|
209
|
+
}
|
|
196
210
|
switch (options.type) {
|
|
197
211
|
case 'SEGMENTED':
|
|
198
212
|
ret += `${code(bpb.type)}${code(1)}${code(bpb.type_segmented)}`;
|
|
@@ -203,7 +217,6 @@ function createBpb(options) {
|
|
|
203
217
|
}
|
|
204
218
|
return Buffer.from(ret);
|
|
205
219
|
}
|
|
206
|
-
exports.createBpb = createBpb;
|
|
207
220
|
/** Changes a number from a scale to another. */
|
|
208
221
|
/***
|
|
209
222
|
export function changeScale(value: number, inputScale: number, outputScale: number): number {
|
|
@@ -221,15 +234,16 @@ export function changeScale(value: number, inputScale: number, outputScale: numb
|
|
|
221
234
|
***/
|
|
222
235
|
/** Emulate Firebird isc_portable_integer. */
|
|
223
236
|
function getPortableInteger(buffer, length) {
|
|
224
|
-
if (!buffer || length <= 0 || length > 8)
|
|
237
|
+
if (!buffer || length <= 0 || length > 8) {
|
|
225
238
|
return 0;
|
|
239
|
+
}
|
|
226
240
|
let value = 0;
|
|
227
241
|
let pos = 0;
|
|
228
|
-
for (let shift = 0; --length >= 0; shift += 8)
|
|
242
|
+
for (let shift = 0; --length >= 0; shift += 8) {
|
|
229
243
|
value += buffer[pos++] << shift;
|
|
244
|
+
}
|
|
230
245
|
return value;
|
|
231
246
|
}
|
|
232
|
-
exports.getPortableInteger = getPortableInteger;
|
|
233
247
|
/** Creates a data reader. */
|
|
234
248
|
function createDataReader(descriptors) {
|
|
235
249
|
const mappers = new Array(descriptors.length);
|
|
@@ -237,8 +251,9 @@ function createDataReader(descriptors) {
|
|
|
237
251
|
const descriptor = descriptors[i];
|
|
238
252
|
mappers[i] = async (attachment, transaction, buffer) => {
|
|
239
253
|
const dataView = new DataView(buffer.buffer);
|
|
240
|
-
if (dataView.getInt16(descriptor.nullOffset, littleEndian) == -1)
|
|
254
|
+
if (dataView.getInt16(descriptor.nullOffset, littleEndian) == -1) {
|
|
241
255
|
return null;
|
|
256
|
+
}
|
|
242
257
|
switch (descriptor.type) {
|
|
243
258
|
// SQL_TEXT is handled changing its descriptor to SQL_VARYING with IMetadataBuilder.
|
|
244
259
|
case sqlTypes.SQL_VARYING: {
|
|
@@ -249,17 +264,17 @@ function createDataReader(descriptors) {
|
|
|
249
264
|
return decoder.end(buf);
|
|
250
265
|
}
|
|
251
266
|
/***
|
|
252
|
-
|
|
253
|
-
|
|
254
|
-
|
|
255
|
-
|
|
256
|
-
|
|
257
|
-
|
|
258
|
-
|
|
259
|
-
|
|
260
|
-
|
|
261
|
-
|
|
262
|
-
|
|
267
|
+
case sqlTypes.SQL_SHORT:
|
|
268
|
+
return changeScale(dataView.getInt16(descriptor.offset, littleEndian), descriptor.scale, 0);
|
|
269
|
+
|
|
270
|
+
case sqlTypes.SQL_LONG:
|
|
271
|
+
return changeScale(dataView.getInt32(descriptor.offset, littleEndian), descriptor.scale, 0);
|
|
272
|
+
|
|
273
|
+
//// TODO: sqlTypes.SQL_INT64
|
|
274
|
+
|
|
275
|
+
case sqlTypes.SQL_FLOAT:
|
|
276
|
+
return dataView.getFloat32(descriptor.offset, littleEndian);
|
|
277
|
+
***/
|
|
263
278
|
case sqlTypes.SQL_DOUBLE:
|
|
264
279
|
return dataView.getFloat64(descriptor.offset, littleEndian);
|
|
265
280
|
case sqlTypes.SQL_TYPE_TIME: {
|
|
@@ -276,13 +291,14 @@ function createDataReader(descriptors) {
|
|
|
276
291
|
return {
|
|
277
292
|
date,
|
|
278
293
|
timeZone,
|
|
279
|
-
offset
|
|
294
|
+
offset,
|
|
280
295
|
};
|
|
281
296
|
}
|
|
282
297
|
case sqlTypes.SQL_TYPE_DATE: {
|
|
283
298
|
const decodedDate = (0, date_time_1.decodeDate)(dataView.getInt32(descriptor.offset, littleEndian));
|
|
284
|
-
if (decodedDate.year >= 100)
|
|
299
|
+
if (decodedDate.year >= 100) {
|
|
285
300
|
return new Date(decodedDate.year, decodedDate.month - 1, decodedDate.day);
|
|
301
|
+
}
|
|
286
302
|
else {
|
|
287
303
|
const date = new Date(2000, decodedDate.month - 1, decodedDate.day);
|
|
288
304
|
date.setFullYear(decodedDate.year);
|
|
@@ -317,7 +333,7 @@ function createDataReader(descriptors) {
|
|
|
317
333
|
return {
|
|
318
334
|
date,
|
|
319
335
|
timeZone,
|
|
320
|
-
offset
|
|
336
|
+
offset,
|
|
321
337
|
};
|
|
322
338
|
}
|
|
323
339
|
case sqlTypes.SQL_BOOLEAN:
|
|
@@ -332,10 +348,9 @@ function createDataReader(descriptors) {
|
|
|
332
348
|
};
|
|
333
349
|
}
|
|
334
350
|
return async (attachment, transaction, buffer) => {
|
|
335
|
-
return await Promise.all(mappers.map(mapper => mapper(attachment, transaction, buffer)));
|
|
351
|
+
return await Promise.all(mappers.map((mapper) => mapper(attachment, transaction, buffer)));
|
|
336
352
|
};
|
|
337
353
|
}
|
|
338
|
-
exports.createDataReader = createDataReader;
|
|
339
354
|
/** Creates a data writer. */
|
|
340
355
|
function createDataWriter(descriptors) {
|
|
341
356
|
const mappers = new Array(descriptors.length);
|
|
@@ -360,25 +375,26 @@ function createDataWriter(descriptors) {
|
|
|
360
375
|
`greater than maximum expect length ${descriptor.length}.`);
|
|
361
376
|
}
|
|
362
377
|
dataView.setUint16(descriptor.offset, bytesArray.length, littleEndian);
|
|
363
|
-
for (let j = 0; j < bytesArray.length; ++j)
|
|
378
|
+
for (let j = 0; j < bytesArray.length; ++j) {
|
|
364
379
|
buffer[descriptor.offset + 2 + j] = bytesArray[j];
|
|
380
|
+
}
|
|
365
381
|
break;
|
|
366
382
|
}
|
|
367
383
|
/***
|
|
368
|
-
|
|
369
|
-
|
|
370
|
-
|
|
371
|
-
|
|
372
|
-
|
|
373
|
-
|
|
374
|
-
|
|
375
|
-
|
|
376
|
-
|
|
377
|
-
|
|
378
|
-
|
|
379
|
-
|
|
380
|
-
|
|
381
|
-
|
|
384
|
+
case sqlTypes.SQL_SHORT:
|
|
385
|
+
dataView.setInt16(descriptor.offset, changeScale(value, 0, descriptor.scale), littleEndian);
|
|
386
|
+
break;
|
|
387
|
+
|
|
388
|
+
case sqlTypes.SQL_LONG:
|
|
389
|
+
dataView.setInt32(descriptor.offset, changeScale(value, 0, descriptor.scale), littleEndian);
|
|
390
|
+
break;
|
|
391
|
+
|
|
392
|
+
//// TODO: sqlTypes.SQL_INT64
|
|
393
|
+
|
|
394
|
+
case sqlTypes.SQL_FLOAT:
|
|
395
|
+
dataView.setFloat32(descriptor.offset, value, littleEndian);
|
|
396
|
+
break;
|
|
397
|
+
***/
|
|
382
398
|
case sqlTypes.SQL_DOUBLE:
|
|
383
399
|
dataView.setFloat64(descriptor.offset, value, littleEndian);
|
|
384
400
|
break;
|
|
@@ -416,33 +432,36 @@ function createDataWriter(descriptors) {
|
|
|
416
432
|
case sqlTypes.SQL_BOOLEAN:
|
|
417
433
|
dataView.setInt8(descriptor.offset, value ? 1 : 0);
|
|
418
434
|
break;
|
|
419
|
-
case sqlTypes.SQL_BLOB:
|
|
420
|
-
|
|
421
|
-
|
|
422
|
-
|
|
423
|
-
|
|
424
|
-
|
|
425
|
-
|
|
426
|
-
|
|
427
|
-
|
|
428
|
-
|
|
429
|
-
|
|
430
|
-
|
|
431
|
-
|
|
432
|
-
}
|
|
433
|
-
await blobStream.close();
|
|
434
|
-
targetBlobId.set(blobStream.blob.id);
|
|
435
|
+
case sqlTypes.SQL_BLOB: {
|
|
436
|
+
const targetBlobId = buffer.subarray(descriptor.offset, descriptor.offset + 8);
|
|
437
|
+
if (value instanceof __1.BlobStream) {
|
|
438
|
+
value = value.blob;
|
|
439
|
+
}
|
|
440
|
+
if (value instanceof Buffer) {
|
|
441
|
+
const blobStream = await attachment.createBlob(transaction);
|
|
442
|
+
try {
|
|
443
|
+
await blobStream.write(value);
|
|
444
|
+
}
|
|
445
|
+
catch (e) {
|
|
446
|
+
await blobStream.cancel();
|
|
447
|
+
throw e;
|
|
435
448
|
}
|
|
436
|
-
|
|
437
|
-
|
|
438
|
-
|
|
439
|
-
|
|
440
|
-
|
|
449
|
+
await blobStream.close();
|
|
450
|
+
targetBlobId.set(blobStream.blob.id);
|
|
451
|
+
}
|
|
452
|
+
else if (value instanceof __1.Blob) {
|
|
453
|
+
if (value.attachment == attachment) {
|
|
454
|
+
targetBlobId.set(value.id);
|
|
441
455
|
}
|
|
442
|
-
else
|
|
443
|
-
throw new Error('
|
|
444
|
-
|
|
456
|
+
else {
|
|
457
|
+
throw new Error('Cannot pass a BLOB from another attachment as parameter.');
|
|
458
|
+
} //// TODO: add support for it
|
|
459
|
+
}
|
|
460
|
+
else {
|
|
461
|
+
throw new Error('Unrecognized type used as BLOB. Must be: Buffer or Blob.');
|
|
445
462
|
}
|
|
463
|
+
break;
|
|
464
|
+
}
|
|
446
465
|
case sqlTypes.SQL_NULL:
|
|
447
466
|
break;
|
|
448
467
|
default:
|
|
@@ -451,10 +470,10 @@ function createDataWriter(descriptors) {
|
|
|
451
470
|
};
|
|
452
471
|
}
|
|
453
472
|
return async (attachment, transaction, buffer, values) => {
|
|
454
|
-
if ((values || []).length !== descriptors.length)
|
|
473
|
+
if ((values || []).length !== descriptors.length) {
|
|
455
474
|
throw new Error(`Incorrect number of parameters: expected ${descriptors.length}, received ${(values || []).length}.`);
|
|
475
|
+
}
|
|
456
476
|
await Promise.all(mappers.map((mapper, index) => mapper(attachment, transaction, buffer, values[index])));
|
|
457
477
|
};
|
|
458
478
|
}
|
|
459
|
-
exports.createDataWriter = createDataWriter;
|
|
460
479
|
//# sourceMappingURL=fb-util.js.map
|