oracledb 5.4.0 → 5.5.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/CHANGELOG.md CHANGED
@@ -1,18 +1,44 @@
1
1
  # Change Log
2
2
 
3
- ## node-oracledb v5.4.0 (9 Jun 2022)
3
+ ## node-oracledb [v5.5.0](https://github.com/oracle/node-oracledb/compare/v5.4.0...v5.5.0) (7 Sep 2022)
4
+
5
+ - Token-based Authentication changes:
6
+
7
+ - Added support for [token-based
8
+ authentication](https://oracle.github.io/node-oracledb/doc/api.html#oauthtokenbasedauthentication)
9
+ using Microsoft Azure Active Directory OAuth 2.0 tokens.
10
+
11
+ - The `accessToken` attribute for connection and connection pool creation
12
+ can now be a string, a callback function, or an object.
13
+
14
+ - Fixed a bug that prevented async functions from being used in token callbacks.
15
+
16
+ - Deprecated the connection pool creation attribute `accessTokenCallback`.
17
+
18
+ - Deprecated `pool.setAccessToken()`.
19
+
20
+ - ResultSets now implement the `asyncIterator()` symbol to support asynchonous
21
+ iteration.
22
+
23
+ - Added support for Oracle Advanced Queuing (AQ) [recipient
24
+ lists](https://oracle.github.io/node-oracledb/doc/api.html#aqrecipientlists).
25
+
26
+ - Fixed a regression that could cause a pool alias to be recorded in the
27
+ internal list of aliases even if pool creation failed.
28
+
29
+ ## node-oracledb [v5.4.0](https://github.com/oracle/node-oracledb/compare/v5.3.0...v5.4.0) (9 Jun 2022)
4
30
 
5
31
  - Stated compatibility is now for Node.js 14, 16 and 18. Older releases
6
32
  back to Node.js 10.16 should still work.
7
33
 
34
+ - Added support for [token-based
35
+ authentication](https://oracle.github.io/node-oracledb/doc/api.html#tokenbasedauth)
36
+ when establishing pool based connections and standalone connections.
37
+
8
38
  - Added code to capture the [error
9
39
  stack](https://oracle.github.io/node-oracledb/doc/api.html#properrstack). PR #1467
10
40
  (Slawomir Osoba).
11
41
 
12
- - Added support for [token based
13
- authentication](https://oracle.github.io/node-oracledb/doc/api.html#tokenbasedauth)
14
- when establishing pool based connections and standalone connections.
15
-
16
42
  - Added code to keep the method name in internally bound functions.
17
43
  PR #1466 (Slawomir Osoba).
18
44
 
@@ -22,16 +48,16 @@
22
48
 
23
49
  - Added missing support for binding as `oracledb.DB_TYPE_BINARY_INTEGER`.
24
50
 
25
- - Fixed crash with multiple
51
+ - Fixed a crash using multiple
26
52
  [DbObject](https://oracle.github.io/node-oracledb/doc/api.html#dbobjectclass)
27
53
  OUT binds ([Issue #1464](https://github.com/oracle/node-oracledb/issues/1464)).
28
54
 
29
55
  - Fixed calling `initOracleClient()` with TypeScript 4.4 ([Issue
30
56
  1462](https://github.com/oracle/node-oracledb/issues/1462)).
31
57
 
32
- - Fixed numeric suffix feature (for duplicate SELECT column names when using
33
- `oracledb.OUT_FORMAT_OBJECT` mode) when the column name is also a JavaScript
34
- property or method name.
58
+ - Fixed the numeric suffix feature (for duplicate SELECT column names when
59
+ using `oracledb.OUT_FORMAT_OBJECT` mode) when the column name is also a
60
+ JavaScript property or method name.
35
61
 
36
62
  - Fixed binding string or buffer data when explicitly specifying the type as
37
63
  `oracledb.DB_TYPE_BLOB`, `oracledb.DB_TYPE_CLOB` or `oracledb.DB_TYPE_NCLOB`.
@@ -43,7 +69,7 @@
43
69
  message ID. ([ODPI-C
44
70
  change](https://github.com/oracle/odpi/commit/68c438dd3b779e8f5eb146a0762d6cd149cdf9f1)).
45
71
 
46
- ## node-oracledb v5.3.0 (22 Oct 2021)
72
+ ## node-oracledb [v5.3.0](https://github.com/oracle/node-oracledb/compare/v5.2.0...v5.3.0) (22 Oct 2021)
47
73
 
48
74
  - Added a
49
75
  [`keepInStmtCache`](https://oracle.github.io/node-oracledb/doc/api.html#propexeckeepinstmtcache)
@@ -70,7 +96,7 @@
70
96
  - Made an internal change for TypeScript 4.4's imported function behavior with
71
97
  'this' ([Issue 1408](https://github.com/oracle/node-oracledb/issues/1408)).
72
98
 
73
- ## node-oracledb v5.2.0 (7 Jun 2021)
99
+ ## node-oracledb [v5.2.0](https://github.com/oracle/node-oracledb/compare/v5.1.0...v5.2.0) (7 Jun 2021)
74
100
 
75
101
  - Connection pool changes:
76
102
 
@@ -161,7 +187,7 @@
161
187
 
162
188
  - Test and documentation improvements.
163
189
 
164
- ## node-oracledb v5.1.0 (8 Dec 2020)
190
+ ## node-oracledb [v5.1.0](https://github.com/oracle/node-oracledb/compare/v5.0.0...v5.1.0) (8 Dec 2020)
165
191
 
166
192
  - Added
167
193
  [`oracledb.dbObjectAsPojo`](https://oracle.github.io/node-oracledb/doc/api.html#propdbobjpojo)
@@ -188,7 +214,7 @@
188
214
  - Fixed a memory leak getting attributes of objects or elements of collections
189
215
  that are themselves objects.
190
216
 
191
- ## node-oracledb v5.0.0 (29 Jun 2020)
217
+ ## node-oracledb [v5.0.0](https://github.com/oracle/node-oracledb/compare/v4.2.0...v5.0.0) (29 Jun 2020)
192
218
 
193
219
  - Stated compatibility is now for Node.js 10.16+, 12 and 14.
194
220
 
@@ -323,7 +349,7 @@ and
323
349
 
324
350
  - Test and documentation improvements.
325
351
 
326
- ## node-oracledb v4.2.0 (24 Jan 2020)
352
+ ## node-oracledb [v4.2.0](https://github.com/oracle/node-oracledb/compare/v4.1.0...v4.2.0) (24 Jan 2020)
327
353
 
328
354
  - Added support for binding using the node-oracledb [Database Type
329
355
  Constants](https://oracle.github.io/node-oracledb/doc/api.html#oracledbconstantsdbtype)
@@ -376,7 +402,7 @@ and
376
402
 
377
403
  - Test and documentation improvements.
378
404
 
379
- ## node-oracledb v4.1.0 (26 Nov 2019)
405
+ ## node-oracledb [v4.1.0](https://github.com/oracle/node-oracledb/compare/v4.0.1...v4.1.0) (26 Nov 2019)
380
406
 
381
407
  - Added end-to-end tracing attributes
382
408
  [`connection.clientInfo`](https://oracle.github.io/node-oracledb/doc/api.html#propconnclientinfo)
@@ -422,7 +448,7 @@ and
422
448
 
423
449
  - Test and documentation improvements.
424
450
 
425
- ## node-oracledb v4.0.1 (19 Aug 2019)
451
+ ## node-oracledb [v4.0.1](https://github.com/oracle/node-oracledb/compare/v4.0.0...v4.0.1) (19 Aug 2019)
426
452
 
427
453
  - Fixed a regression causing a segfault when setting `oracledb.connectionClass`
428
454
  and not creating a pool ([ODPI-C change](https://github.com/oracle/odpi/commit/f945355f3e58e7337dd798cba0404ab5755f0692)).
@@ -450,7 +476,7 @@ and
450
476
 
451
477
  - Improve portability of buildbinary.js, a package creation script ([#1129](https://github.com/oracle/node-oracledb/issues/1129)).
452
478
 
453
- ## node-oracledb v4.0.0 (25 Jul 2019)
479
+ ## node-oracledb [v4.0.0](https://github.com/oracle/node-oracledb/compare/v3.1.2...v4.0.0) (25 Jul 2019)
454
480
 
455
481
  - Refactored the node-oracledb implementation to use
456
482
  [N-API](https://nodejs.org/api/n-api.html) in place of
@@ -596,7 +622,7 @@ and
596
622
 
597
623
  - Added new examples. Updated existing examples to the Node.js 8 Async/Await style of programming.
598
624
 
599
- ## node-oracledb v3.1.2 (22 Feb 2019)
625
+ ## node-oracledb [v3.1.2](https://github.com/oracle/node-oracledb/compare/v3.1.1...v3.1.2) (22 Feb 2019)
600
626
 
601
627
  - Fixed a bug causing CQN crashes when multiple queries are registered
602
628
  ([ODPI-C change](https://github.com/oracle/odpi/issues/96)).
@@ -618,11 +644,11 @@ and
618
644
  - Use a relative URL for the ODPI-C submodule to make cloning from
619
645
  oss.oracle.com also use ODPI-C from oss.oracle.com
620
646
 
621
- ## node-oracledb v3.1.1 (25 Jan 2019)
647
+ ## node-oracledb [v3.1.1](https://github.com/oracle/node-oracledb/compare/v3.1.0...v3.1.1) (25 Jan 2019)
622
648
 
623
649
  - Rebuild npm package to resolve Linux binary build issue.
624
650
 
625
- ## node-oracledb v3.1.0 (22 Jan 2019)
651
+ ## node-oracledb [v3.1.0](https://github.com/oracle/node-oracledb/compare/v3.0.1...v3.1.0) (22 Jan 2019)
626
652
 
627
653
  - Support tagging of pooled connections when releasing them to the
628
654
  connection pool. When using Oracle Client libraries 12.2 or later,
@@ -712,7 +738,7 @@ and
712
738
  - Made internal changes to fix V8 deprecation compilation warnings
713
739
  with Node.js 10.12, and fixed other static analysis warnings.
714
740
 
715
- ## node-oracledb v3.0.1 (15 Nov 2018)
741
+ ## node-oracledb [v3.0.1](https://github.com/oracle/node-oracledb/compare/v3.0.0...v3.0.1) (15 Nov 2018)
716
742
 
717
743
  - Improve validation for SODA `createDocument()` arguments.
718
744
 
@@ -720,7 +746,7 @@ and
720
746
 
721
747
  - Upgraded NAN dependency from 2.10 to 2.11.1.
722
748
 
723
- ## node-oracledb v3.0.0 (1 Oct 2018)
749
+ ## node-oracledb [v3.0.0](https://github.com/oracle/node-oracledb/compare/v2.3.0...v3.0.0) (1 Oct 2018)
724
750
 
725
751
  - Added new APIs for Simple Oracle Document Access
726
752
  ([SODA](https://oracle.github.io/node-oracledb/doc/api.html#sodaoverview)),
@@ -782,7 +808,7 @@ and
782
808
 
783
809
  - Examples were added and updated.
784
810
 
785
- ## node-oracledb v2.3.0 (7 Jun 2018)
811
+ ## node-oracledb [v2.3.0](https://github.com/oracle/node-oracledb/compare/v2.2.0...v2.3.0) (7 Jun 2018)
786
812
 
787
813
  - The stated compatibility is now for Node.js 6, 8, and 10 due to EOL
788
814
  of Node.js 4, and the release of Node 10.
@@ -826,7 +852,7 @@ and
826
852
  future version; connection pool queuing will always be enabled in
827
853
  that future version.
828
854
 
829
- ## node-oracledb v2.2.0 (3 Apr 2018)
855
+ ## node-oracledb [v2.2.0](https://github.com/oracle/node-oracledb/compare/v2.1.2...v2.2.0) (3 Apr 2018)
830
856
 
831
857
  - Added
832
858
  [`oracledb.oracleClientVersionString`](https://oracle.github.io/node-oracledb/doc/api.html#propdboracleclientversionstring)
@@ -886,18 +912,18 @@ and
886
912
 
887
913
  - Updated the node-oracledb implementation to replace V8 deprecations.
888
914
 
889
- ## node-oracledb v2.1.2 (21 Feb 2018)
915
+ ## node-oracledb [v2.1.2](https://github.com/oracle/node-oracledb/compare/v2.1.1...v2.1.2) (21 Feb 2018)
890
916
 
891
917
  - Fixed regression with end-to-end tracing attributes not being set.
892
918
 
893
919
  - Fix binary installer proxy 403 (Bruno Jouhier)
894
920
 
895
- ## node-oracledb v2.1.1 (16 Feb 2018)
921
+ ## node-oracledb [v2.1.1](https://github.com/oracle/node-oracledb/compare/v2.1.0...v2.1.1) (16 Feb 2018)
896
922
 
897
923
  - Fixed regression with `queryStream()` in Node 4 & 6
898
924
  ([#847](https://github.com/oracle/node-oracledb/issues/847)).
899
925
 
900
- ## node-oracledb v2.1.0 (15 Feb 2018)
926
+ ## node-oracledb [v2.1.0](https://github.com/oracle/node-oracledb/compare/v2.0.15...v2.1.0) (15 Feb 2018)
901
927
 
902
928
  - Added support for [privileged standalone
903
929
  connections](https://oracle.github.io/node-oracledb/doc/api.html#privconn):
@@ -959,7 +985,7 @@ and
959
985
 
960
986
  - Correct the error message text when attempting to set `oracledb.oracleClientVersion`.
961
987
 
962
- ## node-oracledb v2.0.15 (15 Dec 2017) changes since node-oracledb version 1
988
+ ## node-oracledb [v2.0.15](https://github.com/oracle/node-oracledb/compare/v1.13.1...v2.0.15) (15 Dec 2017) changes since node-oracledb version 1
963
989
 
964
990
  - Release testing is now done for Node.js 4, 6, 8 and 9.
965
991
 
@@ -1111,7 +1137,7 @@ and
1111
1137
 
1112
1138
  - Documentation has been updated and improved.
1113
1139
 
1114
- ## node-oracledb v2.0.15 (15 Dec 2017)
1140
+ ## node-oracledb [v2.0.15](https://github.com/oracle/node-oracledb/compare/v2.0.14...v2.0.15) (15 Dec 2017)
1115
1141
 
1116
1142
  - The stated compatibility is now for Node.js 4, 6, 8 and 9.
1117
1143
 
@@ -1145,7 +1171,7 @@ and
1145
1171
 
1146
1172
  - Fixed compiler deprecation warnings regarding `Nan::ForceSet`.
1147
1173
 
1148
- ## node-oracledb v2.0.14 Development (20 Nov 2017)
1174
+ ## node-oracledb [v2.0.14 Development](https://github.com/oracle/node-oracledb/compare/v2.0.13-dev...v2.0.14-dev) (20 Nov 2017)
1149
1175
 
1150
1176
  - Added infrastructure to /package for creating binary installs.
1151
1177
  Updated INSTALL.md.
@@ -1241,7 +1267,7 @@ and
1241
1267
 
1242
1268
  - Fix support for `connectionClass` (regression from v1).
1243
1269
 
1244
- ## node-oracledb v2.0.13 Development (19 Jun 2017)
1270
+ ## node-oracledb [v2.0.13 Development](https://github.com/oracle/node-oracledb/compare/v1.13.1...v2.0.13-dev) (19 Jun 2017)
1245
1271
 
1246
1272
  - Node-oracledb now uses the [ODPI-C](https://github.com/oracle/odpi)
1247
1273
  database abstraction library.
@@ -1326,11 +1352,11 @@ and
1326
1352
 
1327
1353
  - Upgraded NAN dependency from 2.5 to 2.6.
1328
1354
 
1329
- ## node-oracledb v1.13.1 (12 Apr 2017)
1355
+ ## node-oracledb [v1.13.1](https://github.com/oracle/node-oracledb/compare/v1.13.0...v1.13.1) (12 Apr 2017)
1330
1356
 
1331
1357
  - Fix regression with NULL values to PL/SQL procedures with multiple parameters.
1332
1358
 
1333
- ## node-oracledb v1.13.0 (15 Mar 2017)
1359
+ ## node-oracledb [v1.13.0](https://github.com/oracle/node-oracledb/compare/v1.12.2...v1.13.0) (15 Mar 2017)
1334
1360
 
1335
1361
  - Added support for fetching BLOBs as Buffers, using `fetchAsBuffer` and `fetchInfo`.
1336
1362
 
@@ -1344,17 +1370,17 @@ and
1344
1370
 
1345
1371
  - Updated NAN dependency from 2.4 to 2.5.
1346
1372
 
1347
- ## node-oracledb v1.12.2 (21 Dec 2016)
1373
+ ## node-oracledb [v1.12.2](https://github.com/oracle/node-oracledb/compare/v1.12.1-dev...v1.12.2) (21 Dec 2016)
1348
1374
 
1349
1375
  - Fix memory allocation with Oracle 11g client libraries when querying CLOBs using `fetchAsString` and `fetchInfo`.
1350
1376
 
1351
- ## node-oracledb v1.12.1 Development (16 Dec 2016)
1377
+ ## node-oracledb [v1.12.1](https://github.com/oracle/node-oracledb/compare/v1.12.0-dev...v1.12.1-dev) Development (16 Dec 2016)
1352
1378
 
1353
1379
  - Added support for fetching CLOBs as Strings, using `fetchAsString` and `fetchInfo`.
1354
1380
 
1355
1381
  - Added `BIND_INOUT` support for temporary LOBs.
1356
1382
 
1357
- ## node-oracledb v1.12.0 Development (3 Dec 2016)
1383
+ ## node-oracledb [v1.12.0](https://github.com/oracle/node-oracledb/compare/v1.11.0...v1.12.0-dev) Development (3 Dec 2016)
1358
1384
 
1359
1385
  - Significantly enhanced LOB support:
1360
1386
  - Added `BIND_IN` support for DML
@@ -1402,7 +1428,7 @@ and
1402
1428
  and fix session tagging. These are not visible / exposed through
1403
1429
  node-oracledb.
1404
1430
 
1405
- ## node-oracledb v1.11.0 (19 Aug 2016)
1431
+ ## node-oracledb [v1.11.0](https://github.com/oracle/node-oracledb/compare/v1.10.1...v1.11.0) (19 Aug 2016)
1406
1432
 
1407
1433
  - Added a connection pool cache feature allowing pools to have aliases and be more easily used.
1408
1434
 
@@ -1418,7 +1444,7 @@ and
1418
1444
 
1419
1445
  - Made an internal change to remove an unused parameter from the `NJS_SET_EXCEPTION` macro.
1420
1446
 
1421
- ## node-oracledb v1.10.1 (21 Jul 2016)
1447
+ ## node-oracledb [v1.10.1](https://github.com/oracle/node-oracledb/compare/v1.10.0...v1.10.1) (21 Jul 2016)
1422
1448
 
1423
1449
  - Fixed a bug that prevented a null value being passed from JavaScript into an IN OUT bind.
1424
1450
 
@@ -1434,7 +1460,7 @@ and
1434
1460
 
1435
1461
  - Added a mocha configuration file for the test suite.
1436
1462
 
1437
- ## node-oracledb v1.10.0 (8 Jul 2016)
1463
+ ## node-oracledb [v1.10.0](https://github.com/oracle/node-oracledb/compare/v1.9.3...v1.10.0) (8 Jul 2016)
1438
1464
 
1439
1465
  - Enhanced query and REF CURSOR metadata is available when a new
1440
1466
  `oracledb.extendedMetaData` or `execute()` option `extendedMetaData`
@@ -1473,11 +1499,11 @@ and
1473
1499
  - Allow the character set and national character set to be specified via parameters to the DPI layer.
1474
1500
  - Support heterogeneous pools (in addition to existing homogeneous pools)
1475
1501
 
1476
- ## node-oracledb v1.9.3 (24 May 2016)
1502
+ ## node-oracledb [v1.9.3](https://github.com/oracle/node-oracledb/compare/v1.9.2...v1.9.3) (24 May 2016)
1477
1503
 
1478
1504
  - Fix error with `OCI_ERROR_MAXMSG_SIZE2` when building with Oracle client 11.2.0.1 and 11.2.0.2.
1479
1505
 
1480
- ## node-oracledb v1.9.2 (23 May 2016)
1506
+ ## node-oracledb [v1.9.2](https://github.com/oracle/node-oracledb/compare/v1.9.1...v1.9.2) (23 May 2016)
1481
1507
 
1482
1508
  - Fix `results.metaData` for queries with `{resultSet: true}`.
1483
1509
 
@@ -1540,7 +1566,7 @@ and
1540
1566
 
1541
1567
  - Regularized NJS error message capitalization.
1542
1568
 
1543
- ## node-oracledb v1.8.0 (24 Mar 2016)
1569
+ ## node-oracledb [v1.8.0](https://github.com/oracle/node-oracledb/compare/v1.7.1...v1.8.0) (24 Mar 2016)
1544
1570
 
1545
1571
  - Added `connection.queryStream()` for returning query results using a
1546
1572
  Node Readable Stream (Sagie Gur-Ari).
@@ -1564,11 +1590,11 @@ and
1564
1590
 
1565
1591
  - Improved some parameter checks for `maxArraySize` and `maxSize`.
1566
1592
 
1567
- ## node-oracledb v1.7.1 (1 Mar 2016)
1593
+ ## node-oracledb [v1.7.1](https://github.com/oracle/node-oracledb/compare/v1.7.0...v1.7.1) (1 Mar 2016)
1568
1594
 
1569
1595
  - Made public methods over-writable in the new JavaScript layer
1570
1596
 
1571
- ## node-oracledb v1.7.0 (29 Feb 2016)
1597
+ ## node-oracledb [v1.7.0](https://github.com/oracle/node-oracledb/compare/v1.6.0...v1.7.0) (29 Feb 2016)
1572
1598
 
1573
1599
  - Added a JavaScript wrapper around the C++ API to allow for easier
1574
1600
  extension.
@@ -1590,7 +1616,7 @@ and
1590
1616
 
1591
1617
  - Fixed some compilation warnings with some Windows compilers.
1592
1618
 
1593
- ## node-oracledb v1.6.0 (30 Jan 2016)
1619
+ ## node-oracledb [v1.6.0](https://github.com/oracle/node-oracledb/compare/v1.5.0...v1.6.0) (30 Jan 2016)
1594
1620
 
1595
1621
  - Added support for binding PL/SQL Collection Associative Array
1596
1622
  (Index-by) types containing numbers and strings (Dieter Oberkofler).
@@ -1612,7 +1638,7 @@ and
1612
1638
 
1613
1639
  - README updates (Kevin Sheedy)
1614
1640
 
1615
- ## node-oracledb v1.5.0 (21 Dec 2015)
1641
+ ## node-oracledb [v1.5.0](https://github.com/oracle/node-oracledb/compare/v1.4.0...v1.5.0) (21 Dec 2015)
1616
1642
 
1617
1643
  - Treat Oracle Database 'Success With Info' warnings as success (Francisco Trevino).
1618
1644
 
@@ -1626,7 +1652,7 @@ and
1626
1652
 
1627
1653
  - Fixed crash when trying to set invalid values for connection properties.
1628
1654
 
1629
- ## node-oracledb v1.4.0 (17 Nov 2015)
1655
+ ## node-oracledb [v1.4.0](https://github.com/oracle/node-oracledb/compare/v1.3.0...v1.4.0) (17 Nov 2015)
1630
1656
 
1631
1657
  - Upgraded NAN dependency to version 2 allowing node-oracledb to build
1632
1658
  with Node 0.10, 0.12, 4 and 5 (Richard Natal). Note: a compiler supporting C++11 is required to build with Node 4 and 5.
@@ -1639,7 +1665,7 @@ and
1639
1665
 
1640
1666
  - Fixed compilation warnings with recent compilers.
1641
1667
 
1642
- ## node-oracledb v1.3.0 (15 Oct 2015)
1668
+ ## node-oracledb [v1.3.0](https://github.com/oracle/node-oracledb/compare/v1.2.0...v1.3.0) (15 Oct 2015)
1643
1669
 
1644
1670
  - Added a `oracledb.oracleClientVersion` property giving the version of the Oracle
1645
1671
  client library, and a `connection.oracleServerVersion` property giving the Oracle
@@ -1651,7 +1677,7 @@ and
1651
1677
 
1652
1678
  - Fixed default bind direction to be `BIND_IN`.
1653
1679
 
1654
- ## node-oracledb v1.2.0 (25 Sep 2015)
1680
+ ## node-oracledb [v1.2.0](https://github.com/oracle/node-oracledb/compare/v1.1.0...v1.2.0) (25 Sep 2015)
1655
1681
 
1656
1682
  - Added support for RAW data type (Bruno Jouhier).
1657
1683
 
@@ -1687,7 +1713,7 @@ and
1687
1713
 
1688
1714
  - Windows install instruction updates (Bill Christo)
1689
1715
 
1690
- ## node-oracledb v1.1.0 (3 Sep 2015)
1716
+ ## node-oracledb [v1.1.0](https://github.com/oracle/node-oracledb/compare/v1.0.0...v1.1.0) (3 Sep 2015)
1691
1717
 
1692
1718
  - Enhanced pool.release() to drop the session if it is known to be unusable, allowing a new session to be created.
1693
1719
 
@@ -1707,7 +1733,7 @@ and
1707
1733
 
1708
1734
  - Temporarily disabling setting lobPrefetchSize
1709
1735
 
1710
- ## node-oracledb v1.0.0 (17 Aug 2015)
1736
+ ## node-oracledb [v1.0.0](https://github.com/oracle/node-oracledb/compare/v0.7.0...v1.0.0) (17 Aug 2015)
1711
1737
 
1712
1738
  - Implemented Stream interface for CLOB and BLOB types, adding support for
1713
1739
  LOB queries, inserts, and PL/SQL LOB bind variables
@@ -1738,7 +1764,7 @@ and
1738
1764
 
1739
1765
  - Correctly throw an error when array and named bind syntaxes are mixed together.
1740
1766
 
1741
- ## node-oracledb v0.7.0 (20 Jul 2015)
1767
+ ## node-oracledb [v0.7.0](https://github.com/oracle/node-oracledb/compare/v0.6.0...v0.7.0) (20 Jul 2015)
1742
1768
 
1743
1769
  - Added result set support for fetching large data sets.
1744
1770
 
@@ -1754,13 +1780,13 @@ and
1754
1780
 
1755
1781
  - Renumbered the values used by the Oracledb Constants.
1756
1782
 
1757
- ## node-oracledb v0.6.0 (26 May 2015)
1783
+ ## node-oracledb [v0.6.0](https://github.com/oracle/node-oracledb/compare/v0.5.0...v0.6.0) (26 May 2015)
1758
1784
 
1759
1785
  - Node-oracledb now builds with Node.js 0.10, Node.js 0.12 and io.js (Richard Natal).
1760
1786
 
1761
1787
  - Fixed naming of `autoCommit` in examples.
1762
1788
 
1763
- ## node-oracledb v0.5.0 (5 May 2015)
1789
+ ## node-oracledb [v0.5.0](https://github.com/oracle/node-oracledb/compare/v0.4.2...v0.5.0) (5 May 2015)
1764
1790
 
1765
1791
  - Changed the `isAutoCommit` attribute name to `autoCommit`.
1766
1792
 
@@ -1772,7 +1798,7 @@ and
1772
1798
 
1773
1799
  - Rectified the error message for invalid type properties.
1774
1800
 
1775
- ## node-oracledb v0.4.2 (28 Mar 2015)
1801
+ ## node-oracledb [v0.4.2](https://github.com/oracle/node-oracledb/compare/v0.4.1...v0.4.2) (28 Mar 2015)
1776
1802
 
1777
1803
  - node-oracledb is now officially installable from https://www.npmjs.com/package/oracledb (Tim Branyen)
1778
1804
 
@@ -1782,7 +1808,7 @@ and
1782
1808
 
1783
1809
  - Changed the default Instant Client directory on AIX from /opt/oracle/instantclient_12_1 to /opt/oracle/instantclient.
1784
1810
 
1785
- ## node-oracledb v0.4.1 (13 Mar 2015)
1811
+ ## node-oracledb [v0.4.1](https://github.com/oracle/node-oracledb/compare/v0.3.1...v0.4.1) (13 Mar 2015)
1786
1812
 
1787
1813
  - Added support for External Authentication.
1788
1814
 
@@ -1796,7 +1822,7 @@ and
1796
1822
 
1797
1823
  - Some code refactoring (Krishna Narasimhan).
1798
1824
 
1799
- ## node-oracledb v0.3.1 (16 Feb 2015)
1825
+ ## node-oracledb [v0.3.1](https://github.com/oracle/node-oracledb/compare/v0.2.4...v0.3.1) (16 Feb 2015)
1800
1826
 
1801
1827
  - Added Windows build configuration (Rinie Kervel).
1802
1828
 
package/README.md CHANGED
@@ -1,10 +1,10 @@
1
- # node-oracledb version 5.4.0
1
+ # node-oracledb version 5.5.0
2
2
 
3
3
  The node-oracledb add-on for Node.js powers high performance Oracle Database
4
4
  applications. Applications can be written in TypeScript, or directly in
5
5
  JavaScript.
6
6
 
7
- Use node-oracledb 5.4.0 to connect Node.js 14, or later, to Oracle Database.
7
+ Use node-oracledb 5.5.0 to connect Node.js 14, or later, to Oracle Database.
8
8
  Older versions of node-oracledb may work with older versions of Node.js.
9
9
 
10
10
  Node-oracledb supports basic and advanced features of Oracle Database
@@ -1,4 +1,4 @@
1
- This product calls the top level APIs of Node.js.
1
+ This product calls the top level APIs of Node.js.
2
2
 
3
3
  Node.js is licensed for use as follows:
4
4
 
@@ -0,0 +1 @@
1
+ oracledb-5.5.0-darwin-x64.node v18.8.0 6bbe60772e67967e524cedb23c8e501fd8d18cf0 1b40d66d5375522445b9a05a2243317057ef11c3 Wed, 07 Sep 2022 08:36:54 GMT
@@ -0,0 +1 @@
1
+ oracledb-5.5.0-linux-x64.node v10.23.1 6bbe60772e67967e524cedb23c8e501fd8d18cf0 1b40d66d5375522445b9a05a2243317057ef11c3 Wed, 07 Sep 2022 08:40:30 GMT
@@ -0,0 +1 @@
1
+ oracledb-5.5.0-win32-x64.node v18.8.0 77dd8c6c2822588ae3996f1c810f97bcab25b954 1b40d66d5375522445b9a05a2243317057ef11c3 Wed, 07 Sep 2022 07:01:17 GMT
package/lib/oracledb.js CHANGED
@@ -106,6 +106,7 @@ class OracleDb {
106
106
  this.shutdown = nodbUtil.callbackify(shutdown).bind(_oracledb);
107
107
  this.startup = nodbUtil.callbackify(startup).bind(_oracledb);
108
108
  this.initOracleClient = this.initOracleClient.bind(_oracledb);
109
+ this._accessTokenHandler = this._accessTokenHandler.bind(_oracledb);
109
110
  }
110
111
 
111
112
  // temporary method for determining if an object is a date until
@@ -114,6 +115,22 @@ class OracleDb {
114
115
  return util.isDate(val);
115
116
  }
116
117
 
118
+ // handler for access token callbacks
119
+ async _accessTokenHandler(userFn, externalObj, refresh) {
120
+ let accessToken;
121
+ try {
122
+ let result = userFn(refresh);
123
+ if (result instanceof Promise) {
124
+ result = await result;
125
+ }
126
+
127
+ _checkToken(result);
128
+ accessToken = result;
129
+ } finally {
130
+ this._returnAccessToken(externalObj, accessToken);
131
+ }
132
+ }
133
+
117
134
  // retrieves a pool from the pool cache (synchronous method)
118
135
  getPool(poolAlias) {
119
136
  let pool;
@@ -175,6 +192,21 @@ async function createPool(poolAttrs) {
175
192
  throw new Error(nodbUtil.getErrorMessage('NJS-046', poolAlias));
176
193
  }
177
194
 
195
+ if (poolAttrs.accessToken !== undefined) {
196
+ // cannot set username or password for token based authentication
197
+ if (poolAttrs.user !== undefined ||
198
+ poolAttrs.password !== undefined) {
199
+ throw new Error(nodbUtil.getErrorMessage('NJS-084'));
200
+ }
201
+
202
+ // homogeneous and externalAuth must be set to true for token based
203
+ // authentication
204
+ if (poolAttrs.homogeneous === false ||
205
+ poolAttrs.externalAuth === false) {
206
+ throw new Error(nodbUtil.getErrorMessage('NJS-085'));
207
+ }
208
+ }
209
+
178
210
  // create an adjusted set of pool attributes to pass to the C layer; the
179
211
  // session callback must be removed if it is a JavaScript function and the
180
212
  // queue timeout is used to specify the maximum amount of time that the C
@@ -192,44 +224,33 @@ async function createPool(poolAttrs) {
192
224
  adjustedPoolAttrs.queueTimeout = this.queueTimeout;
193
225
  }
194
226
 
195
- // Need to prevent another call in the same stack from succeeding, otherwise
196
- // two pools could be created with the same poolAlias and the second one that
197
- // comes back would overwrite the first in the cache.
198
- if (poolAlias) {
199
- tempUsedPoolAliases[poolAlias] = true;
200
- }
201
-
202
- if (adjustedPoolAttrs.accessToken !== undefined) {
203
- // token and privateKey must be set for token based
204
- // authentication
205
- if (adjustedPoolAttrs.accessToken.token === undefined ||
206
- adjustedPoolAttrs.accessToken.token === '' ||
207
- adjustedPoolAttrs.accessToken.privateKey === undefined ||
208
- adjustedPoolAttrs.accessToken.privateKey === '') {
209
- throw new Error(nodbUtil.getErrorMessage('NJS-084'));
227
+ // token based authentication
228
+ if (poolAttrs.accessToken !== undefined) {
229
+ // accessTokenCallback is depricated from node-oracledb 5.5
230
+ if (poolAttrs.accessTokenCallback !== undefined &&
231
+ typeof poolAttrs.accessToken === 'function') {
232
+ throw new Error(nodbUtil.getErrorMessage('NJS-088'));
210
233
  }
211
234
 
212
- // cannot set username or password for token based authentication
213
- if (adjustedPoolAttrs.user !== undefined ||
214
- adjustedPoolAttrs.password !== undefined) {
215
- throw new Error(nodbUtil.getErrorMessage('NJS-084'));
216
- }
235
+ let accessToken;
236
+ if (typeof poolAttrs.accessToken === 'function') {
237
+ adjustedPoolAttrs.accessTokenCallback = poolAttrs.accessToken;
238
+ accessToken = await poolAttrs.accessToken(false);
217
239
 
218
- // homogeneous and externalAuth must be set to true for token based
219
- // authentication
220
- if (adjustedPoolAttrs.homogeneous === false ||
221
- adjustedPoolAttrs.externalAuth === false) {
222
- throw new Error(nodbUtil.getErrorMessage('NJS-085'));
240
+ if (_isTokenExpired(accessToken)) {
241
+ accessToken = await poolAttrs.accessToken(true);
242
+ }
243
+ } else {
244
+ accessToken = poolAttrs.accessToken;
223
245
  }
224
-
225
- adjustedPoolAttrs.token = adjustedPoolAttrs.accessToken.token;
226
- adjustedPoolAttrs.privateKey =
227
- adjustedPoolAttrs.accessToken.privateKey;
246
+ _checkToken(accessToken, adjustedPoolAttrs);
228
247
  }
229
248
 
230
- if (adjustedPoolAttrs.accessToken === undefined &&
231
- adjustedPoolAttrs.accessTokenCallback !== undefined) {
232
- throw new Error(nodbUtil.getErrorMessage('NJS-084'));
249
+ // Need to prevent another call in the same stack from succeeding, otherwise
250
+ // two pools could be created with the same poolAlias and the second one that
251
+ // comes back would overwrite the first in the cache.
252
+ if (poolAlias) {
253
+ tempUsedPoolAliases[poolAlias] = true;
233
254
  }
234
255
 
235
256
  try {
@@ -305,15 +326,6 @@ async function getConnection(a1) {
305
326
  // otherwise, create a new standalone connection
306
327
  } else {
307
328
  if (connAttrs.accessToken !== undefined) {
308
- // token and privateKey must be set for token based
309
- // authentication
310
- if (connAttrs.accessToken.token === undefined ||
311
- connAttrs.accessToken.token === '' ||
312
- connAttrs.accessToken.privateKey === undefined ||
313
- connAttrs.accessToken.privateKey === '') {
314
- throw new Error(nodbUtil.getErrorMessage('NJS-084'));
315
- }
316
-
317
329
  // cannot set username or password for token based authentication
318
330
  if (connAttrs.user !== undefined ||
319
331
  connAttrs.password !== undefined) {
@@ -325,9 +337,17 @@ async function getConnection(a1) {
325
337
  throw new Error(nodbUtil.getErrorMessage('NJS-086'));
326
338
  }
327
339
 
328
- connAttrs.token = connAttrs.accessToken.token;
329
- connAttrs.privateKey =
330
- connAttrs.accessToken.privateKey;
340
+ let accessToken;
341
+ if (typeof connAttrs.accessToken === 'function') {
342
+ accessToken = await connAttrs.accessToken(false);
343
+
344
+ if (_isTokenExpired(accessToken)) {
345
+ accessToken = await connAttrs.accessToken(true);
346
+ }
347
+ } else {
348
+ accessToken = connAttrs.accessToken;
349
+ }
350
+ _checkToken(accessToken, connAttrs);
331
351
  }
332
352
 
333
353
  try {
@@ -427,6 +447,78 @@ async function startup(a1, a2) {
427
447
  }
428
448
 
429
449
 
450
+ //-----------------------------------------------------------------------------
451
+ // _isTokenExpiredUtil()
452
+ // Function to check validity and expiry of token
453
+ //-----------------------------------------------------------------------------
454
+ function _isTokenExpiredUtil(accessToken) {
455
+ nodbUtil.assert(typeof accessToken === 'string', 'NJS-084', 1);
456
+
457
+ if (accessToken.split('.')[1] === undefined) {
458
+ throw new Error(nodbUtil.getErrorMessage('NJS-084'));
459
+ }
460
+
461
+ const base64Url = accessToken.split('.')[1];
462
+ const base64 = base64Url.replace(/-/g, '+').replace(/_/g, '/');
463
+ const buff = Buffer.from(base64, 'base64');
464
+ const payloadInit = buff.toString('ascii');
465
+
466
+ let expiry = JSON.parse(payloadInit).exp;
467
+ nodbUtil.assert(expiry != undefined, 'NJS-084');
468
+ expiry = expiry * 1000;
469
+
470
+ return (new Date().getTime() > expiry);
471
+ }
472
+
473
+
474
+ //-----------------------------------------------------------------------------
475
+ // _isTokenExpired()
476
+ // Function to check validity of token parameter
477
+ //-----------------------------------------------------------------------------
478
+ function _isTokenExpired(accessToken) {
479
+ switch (typeof accessToken) {
480
+ case 'string':
481
+ if (accessToken === '') {
482
+ throw new Error(nodbUtil.getErrorMessage('NJS-084'));
483
+ }
484
+
485
+ return _isTokenExpiredUtil(accessToken);
486
+ case 'object':
487
+ if (accessToken.token === undefined ||
488
+ accessToken.token === '' ||
489
+ accessToken.privateKey === undefined ||
490
+ accessToken.privateKey === '') {
491
+ throw new Error(nodbUtil.getErrorMessage('NJS-084'));
492
+ }
493
+
494
+ return _isTokenExpiredUtil(accessToken.token);
495
+ default:
496
+ throw new Error(nodbUtil.getErrorMessage('NJS-084'));
497
+ }
498
+ }
499
+
500
+
501
+ //-----------------------------------------------------------------------------
502
+ // _checkToken()
503
+ // Function to check validity of token parameter
504
+ //-----------------------------------------------------------------------------
505
+ function _checkToken(accessToken, attrs) {
506
+ if (_isTokenExpired(accessToken)) {
507
+ throw new Error(nodbUtil.getErrorMessage('NJS-087'));
508
+ }
509
+
510
+ if (attrs === undefined)
511
+ return;
512
+
513
+ if (typeof accessToken === 'string') {
514
+ attrs.token = accessToken;
515
+ } else {
516
+ attrs.token = accessToken.token;
517
+ attrs.privateKey = accessToken.privateKey;
518
+ }
519
+ }
520
+
521
+
430
522
  // create instance which will be exported
431
523
  let oracleDbInst = new OracleDb();
432
524
 
package/lib/resultset.js CHANGED
@@ -225,6 +225,19 @@ class ResultSet {
225
225
  return this._connection._getDbObjectClassJS(schema, name);
226
226
  }
227
227
 
228
+ [Symbol.asyncIterator]() {
229
+ const resultSet = this;
230
+ return {
231
+ async next() {
232
+ const row = await resultSet.getRow();
233
+ return {value: row, done: row === undefined};
234
+ },
235
+ return() {
236
+ return {done: true};
237
+ }
238
+ };
239
+ }
240
+
228
241
  toQueryStream() {
229
242
  nodbUtil.checkArgCount(arguments, 0, 0);
230
243
 
package/lib/util.js CHANGED
@@ -67,9 +67,11 @@ const errorMessages = {
67
67
  'NJS-081': 'NJS-081: concurrent operations on a connection are disabled',
68
68
  'NJS-082': 'NJS-082: connection pool is being reconfigured',
69
69
  'NJS-083': 'NJS-083: pool statistics not enabled',
70
- 'NJS-084': 'NJS-084: invalid or missing parameter with token based authentication. The token and privateKey attributes must contain values. Other credentials cannot be specified',
70
+ 'NJS-084': 'NJS-084: invalid access token',
71
71
  'NJS-085': 'NJS-085: invalid connection pool configuration with token based authentication. The homogeneous and externalAuth attributes must be set to true',
72
- 'NJS-086': 'NJS-086: invalid standalone configuration with token based authentication. The externalAuth attribute must be set to true'
72
+ 'NJS-086': 'NJS-086: invalid standalone configuration with token based authentication. The externalAuth attribute must be set to true',
73
+ 'NJS-087': 'NJS-087: access token has expired',
74
+ 'NJS-088': 'NJS-088: accessTokenCallback cannot be specified when accessToken is a function'
73
75
  };
74
76
 
75
77
  // getInstallURL returns a string with installation URL
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "oracledb",
3
- "version": "5.4.0",
3
+ "version": "5.5.0",
4
4
  "description": "A Node.js module for Oracle Database access from JavaScript and TypeScript",
5
5
  "license": "Apache-2.0",
6
6
  "homepage": "http://oracle.github.io/node-oracledb/",
@@ -1 +0,0 @@
1
- oracledb-5.4.0-darwin-x64.node v18.2.0 84de9360da1af5b66be23bd5dcf0de230baf2a86 7682f57b334c378986a2687b418fe45daaf70af0 Wed, 01 Jun 2022 07:28:15 GMT
@@ -1 +0,0 @@
1
- oracledb-5.4.0-linux-x64.node v10.23.1 84de9360da1af5b66be23bd5dcf0de230baf2a86 7682f57b334c378986a2687b418fe45daaf70af0 Wed, 01 Jun 2022 07:08:49 GMT
@@ -1 +0,0 @@
1
- oracledb-5.4.0-win32-x64.node v18.2.0 84de9360da1af5b66be23bd5dcf0de230baf2a86 7682f57b334c378986a2687b418fe45daaf70af0 Wed, 01 Jun 2022 07:24:49 GMT