oracledb 6.10.0 → 7.0.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.
Files changed (84) hide show
  1. package/LICENSE.txt +1 -1
  2. package/NOTICE.txt +1 -1
  3. package/README.md +9 -9
  4. package/build/Release/oracledb-7.0.0-darwin-arm64.node +0 -0
  5. package/build/Release/oracledb-7.0.0-darwin-arm64.node-buildinfo.txt +1 -0
  6. package/build/Release/oracledb-7.0.0-js-buildinfo.txt +1 -0
  7. package/build/Release/oracledb-7.0.0-linux-arm64.node +0 -0
  8. package/build/Release/oracledb-7.0.0-linux-arm64.node-buildinfo.txt +1 -0
  9. package/build/Release/oracledb-7.0.0-linux-x64.node +0 -0
  10. package/build/Release/oracledb-7.0.0-linux-x64.node-buildinfo.txt +1 -0
  11. package/build/Release/oracledb-7.0.0-win32-x64.node +0 -0
  12. package/build/Release/oracledb-7.0.0-win32-x64.node-buildinfo.txt +1 -0
  13. package/eslint.config.js +39 -0
  14. package/lib/connection.js +412 -37
  15. package/lib/endUserSecurityContext.js +176 -0
  16. package/lib/errors.js +86 -5
  17. package/lib/impl/connection.js +76 -2
  18. package/lib/impl/datahandlers/buffer.js +19 -5
  19. package/lib/impl/datahandlers/vector.js +25 -5
  20. package/lib/impl/lob.js +9 -0
  21. package/lib/impl/parserHelpers.js +443 -0
  22. package/lib/impl/resultset.js +1 -1
  23. package/lib/lob.js +27 -14
  24. package/lib/obfuscation.js +97 -0
  25. package/lib/oracledb.js +148 -43
  26. package/lib/parser.js +204 -0
  27. package/lib/pipeline.js +113 -0
  28. package/lib/pool.js +16 -1
  29. package/lib/resultset.js +42 -21
  30. package/lib/settings.js +1 -0
  31. package/lib/thin/connection.js +467 -53
  32. package/lib/thin/dbObject.js +7 -1
  33. package/lib/thin/lob.js +20 -1
  34. package/lib/thin/pool.js +42 -62
  35. package/lib/thin/protocol/capabilities.js +18 -3
  36. package/lib/thin/protocol/constants.js +82 -2
  37. package/lib/thin/protocol/encryptDecrypt.js +43 -8
  38. package/lib/thin/protocol/messages/auth.js +6 -1
  39. package/lib/thin/protocol/messages/base.js +245 -4
  40. package/lib/thin/protocol/messages/dataType.js +8 -3
  41. package/lib/thin/protocol/messages/directPathLoadStream.js +377 -0
  42. package/lib/thin/protocol/messages/directPathOp.js +65 -0
  43. package/lib/thin/protocol/messages/directPathPrepare.js +158 -0
  44. package/lib/thin/protocol/messages/endPipeline.js +56 -0
  45. package/lib/thin/protocol/messages/execute.js +9 -7
  46. package/lib/thin/protocol/messages/index.js +9 -1
  47. package/lib/thin/protocol/messages/protocol.js +2 -2
  48. package/lib/thin/protocol/messages/withData.js +8 -140
  49. package/lib/thin/protocol/packet.js +115 -24
  50. package/lib/thin/protocol/protocol.js +110 -25
  51. package/lib/thin/protocol/utils.js +1 -26
  52. package/lib/thin/resultSet.js +13 -19
  53. package/lib/thin/sqlnet/ezConnectResolver.js +2 -2
  54. package/lib/thin/sqlnet/networkSession.js +62 -40
  55. package/lib/thin/sqlnet/ntTcp.js +24 -0
  56. package/lib/thin/sqlnet/nvStrToNvPair.js +50 -25
  57. package/lib/thin/sqlnet/packet.js +25 -4
  58. package/lib/thin/sqlnet/paramParser.js +10 -7
  59. package/lib/thin/statementCache.js +2 -4
  60. package/lib/traceHandler.js +59 -2
  61. package/lib/transformer.js +8 -3
  62. package/lib/types.js +35 -21
  63. package/lib/util.js +6 -6
  64. package/lib/version.js +3 -3
  65. package/package/install.js +5 -5
  66. package/package/prunebinaries.js +1 -1
  67. package/package.json +1 -1
  68. package/plugins/configProviders/awsCommon.js +125 -0
  69. package/plugins/configProviders/awss3/index.js +138 -0
  70. package/plugins/configProviders/awssecretsmanager/index.js +147 -0
  71. package/plugins/configProviders/azure/index.js +4 -5
  72. package/plugins/token/extensionAzure/index.js +0 -1
  73. package/plugins/token/extensionOci/index.js +0 -1
  74. package/build/Release/oracledb-6.10.0-darwin-arm64.node +0 -0
  75. package/build/Release/oracledb-6.10.0-darwin-arm64.node-buildinfo.txt +0 -1
  76. package/build/Release/oracledb-6.10.0-darwin-x64.node +0 -0
  77. package/build/Release/oracledb-6.10.0-darwin-x64.node-buildinfo.txt +0 -1
  78. package/build/Release/oracledb-6.10.0-js-buildinfo.txt +0 -1
  79. package/build/Release/oracledb-6.10.0-linux-arm64.node +0 -0
  80. package/build/Release/oracledb-6.10.0-linux-arm64.node-buildinfo.txt +0 -1
  81. package/build/Release/oracledb-6.10.0-linux-x64.node +0 -0
  82. package/build/Release/oracledb-6.10.0-linux-x64.node-buildinfo.txt +0 -1
  83. package/build/Release/oracledb-6.10.0-win32-x64.node +0 -0
  84. package/build/Release/oracledb-6.10.0-win32-x64.node-buildinfo.txt +0 -1
@@ -0,0 +1,147 @@
1
+ // Copyright (c) 2026, Oracle and/or its affiliates.
2
+ //-----------------------------------------------------------------------------
3
+ //
4
+ // This software is dual-licensed to you under the Universal Permissive License
5
+ // (UPL) 1.0 as shown at https://oss.oracle.com/licenses/upl and Apache License
6
+ // 2.0 as shown at http://www.apache.org/licenses/LICENSE-2.0. You may choose
7
+ // either license.
8
+ //
9
+ // If you elect to accept the software under the Apache License, Version 2.0,
10
+ // the following applies:
11
+ //
12
+ // Licensed under the Apache License, Version 2.0 (the "License");
13
+ // you may not use this file except in compliance with the License.
14
+ // You may obtain a copy of the License at
15
+ //
16
+ // https://www.apache.org/licenses/LICENSE-2.0
17
+ //
18
+ // Unless required by applicable law or agreed to in writing, software
19
+ // distributed under the License is distributed on an "AS IS" BASIS,
20
+ // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
21
+ // See the License for the specific language governing permissions and
22
+ // limitations under the License.
23
+ //
24
+ //-----------------------------------------------------------------------------
25
+
26
+ "use strict";
27
+
28
+ const util = require("node:util");
29
+ const { base } = require("../base.js");
30
+ const {
31
+ createAwsCredential,
32
+ initAwsCommon,
33
+ initAwsRequestHandler,
34
+ resolveRegion
35
+ } = require("../awsCommon.js");
36
+ const oracledb = require("oracledb");
37
+
38
+ let SecretsManagerClient, GetSecretValueCommand;
39
+
40
+ class AWSSecretsManagerProvider extends base {
41
+ constructor(provider_arg, urlExtendedPart) {
42
+ super(urlExtendedPart);
43
+ if (provider_arg) {
44
+ this._addParam("secretname", provider_arg);
45
+ }
46
+ }
47
+
48
+ init() {
49
+ initAwsCommon();
50
+ ({ SecretsManagerClient, GetSecretValueCommand } = require("@aws-sdk/client-secrets-manager"));
51
+ this.requestHandler = initAwsRequestHandler(this.paramMap);
52
+ }
53
+
54
+ resolveSecretString(response) {
55
+ let secretString = response.SecretString;
56
+ if (!secretString && response.SecretBinary) {
57
+ secretString = Buffer.from(response.SecretBinary, "base64").toString(
58
+ "utf-8"
59
+ );
60
+ }
61
+
62
+ if (!secretString) {
63
+ throw new Error("Secret payload is empty");
64
+ }
65
+
66
+ return secretString;
67
+ }
68
+
69
+ async returnConfig() {
70
+ const fetchRegion = await resolveRegion(this.paramMap);
71
+
72
+ this.credential = createAwsCredential(
73
+ this.paramMap,
74
+ this.requestHandler,
75
+ fetchRegion
76
+ );
77
+
78
+ const secretsManagerClient = new SecretsManagerClient({
79
+ region: fetchRegion,
80
+ credentials: this.credential,
81
+ requestHandler: this.requestHandler,
82
+ });
83
+
84
+ const secretIdentifier = this.paramMap.get("secretname");
85
+ if (!secretIdentifier) {
86
+ throw new Error(
87
+ "Secret identifier not provided for AWS Secrets Manager ConfigProvider."
88
+ );
89
+ }
90
+
91
+ const input = {
92
+ SecretId: secretIdentifier,
93
+ };
94
+
95
+ const versionId = this.paramMap.get("versionid");
96
+ if (versionId) {
97
+ input.VersionId = versionId;
98
+ }
99
+
100
+ try {
101
+ const command = new GetSecretValueCommand(input);
102
+ const response = await secretsManagerClient.send(command);
103
+
104
+ const secretString = this.resolveSecretString(response);
105
+
106
+ try {
107
+ return JSON.parse(secretString);
108
+ } catch {
109
+ return secretString;
110
+ }
111
+ } catch (e) {
112
+ throw new Error(
113
+ `Failed to retrieve configuration from AWS Secrets Manager: ${e.message}`
114
+ );
115
+ } finally {
116
+ secretsManagerClient.destroy();
117
+ }
118
+ }
119
+ }
120
+
121
+
122
+ async function hookFn(args) {
123
+ const configProvider = new AWSSecretsManagerProvider(
124
+ args.provider_arg,
125
+ args.urlExtendedPart
126
+ );
127
+
128
+ if (args.paramMap) {
129
+ configProvider.paramMap = args.paramMap;
130
+ }
131
+
132
+ try {
133
+ configProvider.init();
134
+ } catch (err) {
135
+ const errmsg = util.format(
136
+ "AWS Secrets Manager Config Provider failed to load required modules: %s\n%s",
137
+ err.message,
138
+ err.stack
139
+ );
140
+ throw new Error(errmsg);
141
+ }
142
+
143
+ const cfg = await configProvider.returnConfig();
144
+ return [cfg, null];
145
+ }
146
+
147
+ oracledb.registerConfigurationProviderHook("awssecretsmanager", hookFn);
@@ -29,6 +29,7 @@ let ClientSecretCredential, ClientCertificateCredential, ChainedTokenCredential,
29
29
  const util = require('node:util');
30
30
  const { base } = require("../base.js");
31
31
  const oracledb = require('oracledb');
32
+
32
33
  class AzureProvider extends base {
33
34
  constructor(provider_arg, urlExtendedPart) {
34
35
  super(urlExtendedPart);
@@ -96,7 +97,7 @@ class AzureProvider extends base {
96
97
  return credential;
97
98
  }
98
99
  async returnConfig() {
99
- const configObject = {};
100
+ let configObject = {};
100
101
  const label = this.paramMap.get("label");
101
102
  try {
102
103
  this.credential = await this.returnAzureCredential();
@@ -115,10 +116,8 @@ class AzureProvider extends base {
115
116
  const params = (await this.retrieveParamValueFromAzureConfigurationProvider(client, label, 'njs'));
116
117
  if (params) {
117
118
  const obj = JSON.parse(params);
118
- for (const key in obj) {
119
- var val = obj[key];
120
- configObject[key] = val;
121
- }
119
+ const spreadNjs = { ...obj };
120
+ configObject = { ...configObject, ...spreadNjs };
122
121
  } else {
123
122
  configObject['njs'] = null;
124
123
  }
@@ -91,7 +91,6 @@ async function servicePrincipalCredentials(params) {
91
91
 
92
92
  function hookFn(options) {
93
93
  if (options.tokenAuthConfigAzure) {
94
- // eslint-disable-next-line no-unused-vars
95
94
  options.accessToken = async function callbackFn(refresh, config) {
96
95
  return await getToken(config);
97
96
  };
@@ -200,7 +200,6 @@ async function instancePrincipalAuthentication(accessTokenConfig) {
200
200
  //---------------------------------------------------------------------------
201
201
  function hookFn(options) {
202
202
  if (options.tokenAuthConfigOci) {
203
- // eslint-disable-next-line no-unused-vars
204
203
  options.accessToken = async function callbackFn(refresh, config) {
205
204
  return await getToken(config);
206
205
  };
@@ -1 +0,0 @@
1
- oracledb-6.10.0-darwin-arm64.node v22.17.1 71ba4e79b3fb8ffe6191e84eb0422c9bdfbb6c9d 8b14d5980d7d6116abb8865c7baed9e458698dbf Thu, 09 Oct 2025 15:26:22 GMT
@@ -1 +0,0 @@
1
- oracledb-6.10.0-darwin-x64.node v20.11.1 71ba4e79b3fb8ffe6191e84eb0422c9bdfbb6c9d 8b14d5980d7d6116abb8865c7baed9e458698dbf Thu, 09 Oct 2025 15:33:20 GMT
@@ -1 +0,0 @@
1
- 71ba4e79b3fb8ffe6191e84eb0422c9bdfbb6c9d
@@ -1 +0,0 @@
1
- oracledb-6.10.0-linux-arm64.node v20.19.2 71ba4e79b3fb8ffe6191e84eb0422c9bdfbb6c9d 8b14d5980d7d6116abb8865c7baed9e458698dbf Thu, 09 Oct 2025 13:43:20 GMT
@@ -1 +0,0 @@
1
- oracledb-6.10.0-linux-x64.node v22.16.0 71ba4e79b3fb8ffe6191e84eb0422c9bdfbb6c9d 8b14d5980d7d6116abb8865c7baed9e458698dbf Thu, 09 Oct 2025 13:31:19 GMT
@@ -1 +0,0 @@
1
- oracledb-6.10.0-win32-x64.node v22.17.1 71ba4e79b3fb8ffe6191e84eb0422c9bdfbb6c9d 8b14d5980d7d6116abb8865c7baed9e458698dbf Thu, 09 Oct 2025 13:31:10 GMT