@nesgarbo/node-jt400 5.4.2 → 6.0.1

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 (271) hide show
  1. package/README.md +16 -6
  2. package/dist-cjs/index.d.cts +18 -0
  3. package/dist-cjs/index.js +86 -0
  4. package/dist-cjs/index.js.map +1 -0
  5. package/dist-cjs/integration-test/call-rpg-spec.d.cts +2 -0
  6. package/dist-cjs/integration-test/call-rpg-spec.js +101 -0
  7. package/dist-cjs/integration-test/call-rpg-spec.js.map +1 -0
  8. package/dist-cjs/integration-test/dataq-spec.d.cts +2 -0
  9. package/dist-cjs/integration-test/dataq-spec.js +57 -0
  10. package/dist-cjs/integration-test/dataq-spec.js.map +1 -0
  11. package/dist-cjs/integration-test/db.d.cts +8 -0
  12. package/dist-cjs/integration-test/db.js +31 -0
  13. package/dist-cjs/integration-test/db.js.map +1 -0
  14. package/dist-cjs/integration-test/db2-connect-spec.d.cts +2 -0
  15. package/dist-cjs/integration-test/db2-connect-spec.js +42 -0
  16. package/dist-cjs/integration-test/db2-connect-spec.js.map +1 -0
  17. package/dist-cjs/integration-test/db2-pool-spec.d.cts +2 -0
  18. package/dist-cjs/integration-test/db2-pool-spec.js +213 -0
  19. package/dist-cjs/integration-test/db2-pool-spec.js.map +1 -0
  20. package/dist-cjs/integration-test/ifs-spec.d.cts +2 -0
  21. package/dist-cjs/integration-test/ifs-spec.js +140 -0
  22. package/dist-cjs/integration-test/ifs-spec.js.map +1 -0
  23. package/dist-cjs/integration-test/msgf-spec.d.cts +2 -0
  24. package/dist-cjs/integration-test/msgf-spec.js +34 -0
  25. package/dist-cjs/integration-test/msgf-spec.js.map +1 -0
  26. package/dist-cjs/integration-test/msgq-spec.d.cts +2 -0
  27. package/dist-cjs/integration-test/msgq-spec.js +45 -0
  28. package/dist-cjs/integration-test/msgq-spec.js.map +1 -0
  29. package/dist-cjs/java/JT400.d.cts +79 -0
  30. package/dist-cjs/java/JT400.js +16 -0
  31. package/dist-cjs/java/JT400.js.map +1 -0
  32. package/dist-cjs/java/index.d.cts +10 -0
  33. package/dist-cjs/java/index.js +57 -0
  34. package/dist-cjs/java/index.js.map +1 -0
  35. package/dist-cjs/lib/baseConnection.d.cts +9 -0
  36. package/dist-cjs/lib/baseConnection.js +301 -0
  37. package/dist-cjs/lib/baseConnection.js.map +1 -0
  38. package/dist-cjs/lib/baseConnection.types.d.cts +56 -0
  39. package/dist-cjs/lib/baseConnection.types.js +30 -0
  40. package/dist-cjs/lib/baseConnection.types.js.map +1 -0
  41. package/dist-cjs/lib/connection.d.cts +16 -0
  42. package/dist-cjs/lib/connection.js +179 -0
  43. package/dist-cjs/lib/connection.js.map +1 -0
  44. package/dist-cjs/lib/connection.types.d.cts +80 -0
  45. package/dist-cjs/lib/connection.types.js +16 -0
  46. package/dist-cjs/lib/connection.types.js.map +1 -0
  47. package/dist-cjs/lib/handleError.d.cts +5 -0
  48. package/dist-cjs/lib/handleError.js +43 -0
  49. package/dist-cjs/lib/handleError.js.map +1 -0
  50. package/dist-cjs/lib/ifs/index.d.cts +7 -0
  51. package/dist-cjs/lib/ifs/index.js +64 -0
  52. package/dist-cjs/lib/ifs/index.js.map +1 -0
  53. package/dist-cjs/lib/ifs/read_stream.d.cts +8 -0
  54. package/dist-cjs/lib/ifs/read_stream.js +61 -0
  55. package/dist-cjs/lib/ifs/read_stream.js.map +1 -0
  56. package/dist-cjs/lib/ifs/types.d.cts +19 -0
  57. package/dist-cjs/lib/ifs/types.js +16 -0
  58. package/dist-cjs/lib/ifs/types.js.map +1 -0
  59. package/dist-cjs/lib/ifs/write_stream.d.cts +8 -0
  60. package/dist-cjs/lib/ifs/write_stream.js +52 -0
  61. package/dist-cjs/lib/ifs/write_stream.js.map +1 -0
  62. package/dist-cjs/lib/inMemoryConnection.d.cts +14 -0
  63. package/dist-cjs/lib/inMemoryConnection.js +59 -0
  64. package/dist-cjs/lib/inMemoryConnection.js.map +1 -0
  65. package/dist-cjs/lib/insertList.d.cts +8 -0
  66. package/dist-cjs/lib/insertList.js +58 -0
  67. package/dist-cjs/lib/insertList.js.map +1 -0
  68. package/dist-cjs/lib/jdbcstream.d.cts +3 -0
  69. package/dist-cjs/lib/jdbcstream.js +66 -0
  70. package/dist-cjs/lib/jdbcstream.js.map +1 -0
  71. package/dist-cjs/lib/jdbcwritestream.d.cts +3 -0
  72. package/dist-cjs/lib/jdbcwritestream.js +66 -0
  73. package/dist-cjs/lib/jdbcwritestream.js.map +1 -0
  74. package/dist-cjs/lib/logger.d.cts +9 -0
  75. package/dist-cjs/lib/logger.js +39 -0
  76. package/dist-cjs/lib/logger.js.map +1 -0
  77. package/dist-cjs/lib/sqlutil.d.cts +3 -0
  78. package/dist-cjs/lib/sqlutil.js +37 -0
  79. package/dist-cjs/lib/sqlutil.js.map +1 -0
  80. package/dist-cjs/lib/streamTransformers.d.cts +5 -0
  81. package/dist-cjs/lib/streamTransformers.js +56 -0
  82. package/dist-cjs/lib/streamTransformers.js.map +1 -0
  83. package/dist-cjs/package.json +3 -0
  84. package/dist-cjs/unit-test/hsql-spec.d.cts +2 -0
  85. package/dist-cjs/unit-test/hsql-spec.js +488 -0
  86. package/dist-cjs/unit-test/hsql-spec.js.map +1 -0
  87. package/dist-cjs/unit-test/sqlutil-spec.d.cts +2 -0
  88. package/dist-cjs/unit-test/sqlutil-spec.js +43 -0
  89. package/dist-cjs/unit-test/sqlutil-spec.js.map +1 -0
  90. package/dist-cjs/unit-test/streamTransformers-spec.d.cts +2 -0
  91. package/dist-cjs/unit-test/streamTransformers-spec.js +121 -0
  92. package/dist-cjs/unit-test/streamTransformers-spec.js.map +1 -0
  93. package/dist-esm/index.d.ts +18 -0
  94. package/dist-esm/index.js +59 -0
  95. package/dist-esm/index.js.map +1 -0
  96. package/dist-esm/integration-test/call-rpg-spec.d.ts +2 -0
  97. package/dist-esm/integration-test/call-rpg-spec.js +79 -0
  98. package/dist-esm/integration-test/call-rpg-spec.js.map +1 -0
  99. package/dist-esm/integration-test/dataq-spec.d.ts +2 -0
  100. package/dist-esm/integration-test/dataq-spec.js +35 -0
  101. package/dist-esm/integration-test/dataq-spec.js.map +1 -0
  102. package/dist-esm/integration-test/db.d.ts +8 -0
  103. package/dist-esm/integration-test/db.js +8 -0
  104. package/dist-esm/integration-test/db.js.map +1 -0
  105. package/dist-esm/integration-test/db2-connect-spec.d.ts +2 -0
  106. package/dist-esm/integration-test/db2-connect-spec.js +20 -0
  107. package/dist-esm/integration-test/db2-connect-spec.js.map +1 -0
  108. package/dist-esm/integration-test/db2-pool-spec.d.ts +2 -0
  109. package/dist-esm/integration-test/db2-pool-spec.js +197 -0
  110. package/dist-esm/integration-test/db2-pool-spec.js.map +1 -0
  111. package/dist-esm/integration-test/ifs-spec.d.ts +2 -0
  112. package/dist-esm/integration-test/ifs-spec.js +118 -0
  113. package/dist-esm/integration-test/ifs-spec.js.map +1 -0
  114. package/dist-esm/integration-test/msgf-spec.d.ts +2 -0
  115. package/dist-esm/integration-test/msgf-spec.js +12 -0
  116. package/dist-esm/integration-test/msgf-spec.js.map +1 -0
  117. package/dist-esm/integration-test/msgq-spec.d.ts +2 -0
  118. package/dist-esm/integration-test/msgq-spec.js +23 -0
  119. package/dist-esm/integration-test/msgq-spec.js.map +1 -0
  120. package/{dist → dist-esm}/java/JT400.d.ts +16 -14
  121. package/dist-esm/java/JT400.js +1 -0
  122. package/dist-esm/java/JT400.js.map +1 -0
  123. package/dist-esm/java/index.d.ts +10 -0
  124. package/dist-esm/java/index.js +40 -0
  125. package/dist-esm/java/index.js.map +1 -0
  126. package/dist-esm/lib/baseConnection.d.ts +9 -0
  127. package/dist-esm/lib/baseConnection.js +278 -0
  128. package/dist-esm/lib/baseConnection.js.map +1 -0
  129. package/dist-esm/lib/baseConnection.types.d.ts +56 -0
  130. package/dist-esm/lib/baseConnection.types.js +6 -0
  131. package/dist-esm/lib/baseConnection.types.js.map +1 -0
  132. package/dist-esm/lib/connection.d.ts +16 -0
  133. package/dist-esm/lib/connection.js +146 -0
  134. package/dist-esm/lib/connection.js.map +1 -0
  135. package/{dist → dist-esm}/lib/connection.types.d.ts +24 -21
  136. package/dist-esm/lib/connection.types.js +1 -0
  137. package/dist-esm/lib/connection.types.js.map +1 -0
  138. package/dist-esm/lib/handleError.d.ts +5 -0
  139. package/dist-esm/lib/handleError.js +20 -0
  140. package/dist-esm/lib/handleError.js.map +1 -0
  141. package/dist-esm/lib/ifs/index.d.ts +7 -0
  142. package/dist-esm/lib/ifs/index.js +41 -0
  143. package/dist-esm/lib/ifs/index.js.map +1 -0
  144. package/dist-esm/lib/ifs/read_stream.d.ts +8 -0
  145. package/dist-esm/lib/ifs/read_stream.js +28 -0
  146. package/dist-esm/lib/ifs/read_stream.js.map +1 -0
  147. package/{dist → dist-esm}/lib/ifs/types.d.ts +5 -2
  148. package/dist-esm/lib/ifs/types.js +1 -0
  149. package/dist-esm/lib/ifs/types.js.map +1 -0
  150. package/dist-esm/lib/ifs/write_stream.d.ts +8 -0
  151. package/dist-esm/lib/ifs/write_stream.js +19 -0
  152. package/dist-esm/lib/ifs/write_stream.js.map +1 -0
  153. package/dist-esm/lib/inMemoryConnection.d.ts +14 -0
  154. package/dist-esm/lib/inMemoryConnection.js +36 -0
  155. package/dist-esm/lib/inMemoryConnection.js.map +1 -0
  156. package/dist-esm/lib/insertList.d.ts +8 -0
  157. package/dist-esm/lib/insertList.js +34 -0
  158. package/dist-esm/lib/insertList.js.map +1 -0
  159. package/dist-esm/lib/jdbcstream.d.ts +3 -0
  160. package/dist-esm/lib/jdbcstream.js +43 -0
  161. package/dist-esm/lib/jdbcstream.js.map +1 -0
  162. package/dist-esm/lib/jdbcwritestream.d.ts +3 -0
  163. package/dist-esm/lib/jdbcwritestream.js +33 -0
  164. package/dist-esm/lib/jdbcwritestream.js.map +1 -0
  165. package/{dist → dist-esm}/lib/logger.d.ts +4 -2
  166. package/dist-esm/lib/logger.js +16 -0
  167. package/dist-esm/lib/logger.js.map +1 -0
  168. package/dist-esm/lib/sqlutil.d.ts +3 -0
  169. package/dist-esm/lib/sqlutil.js +14 -0
  170. package/dist-esm/lib/sqlutil.js.map +1 -0
  171. package/dist-esm/lib/streamTransformers.d.ts +5 -0
  172. package/dist-esm/lib/streamTransformers.js +33 -0
  173. package/dist-esm/lib/streamTransformers.js.map +1 -0
  174. package/dist-esm/package.json +3 -0
  175. package/dist-esm/unit-test/hsql-spec.d.ts +2 -0
  176. package/dist-esm/unit-test/hsql-spec.js +466 -0
  177. package/dist-esm/unit-test/hsql-spec.js.map +1 -0
  178. package/dist-esm/unit-test/sqlutil-spec.d.ts +2 -0
  179. package/dist-esm/unit-test/sqlutil-spec.js +21 -0
  180. package/dist-esm/unit-test/sqlutil-spec.js.map +1 -0
  181. package/dist-esm/unit-test/streamTransformers-spec.d.ts +2 -0
  182. package/dist-esm/unit-test/streamTransformers-spec.js +99 -0
  183. package/dist-esm/unit-test/streamTransformers-spec.js.map +1 -0
  184. package/java/lib/jt400wrap.jar +0 -0
  185. package/package.json +39 -19
  186. package/dist/index.d.ts +0 -13
  187. package/dist/index.js +0 -67
  188. package/dist/index.js.map +0 -1
  189. package/dist/integration-test/call-rpg-spec.d.ts +0 -1
  190. package/dist/integration-test/call-rpg-spec.js +0 -88
  191. package/dist/integration-test/call-rpg-spec.js.map +0 -1
  192. package/dist/integration-test/dataq-spec.d.ts +0 -1
  193. package/dist/integration-test/dataq-spec.js +0 -42
  194. package/dist/integration-test/dataq-spec.js.map +0 -1
  195. package/dist/integration-test/db.d.ts +0 -2
  196. package/dist/integration-test/db.js +0 -8
  197. package/dist/integration-test/db.js.map +0 -1
  198. package/dist/integration-test/db2-connect-spec.d.ts +0 -1
  199. package/dist/integration-test/db2-connect-spec.js +0 -34
  200. package/dist/integration-test/db2-connect-spec.js.map +0 -1
  201. package/dist/integration-test/db2-pool-spec.d.ts +0 -1
  202. package/dist/integration-test/db2-pool-spec.js +0 -191
  203. package/dist/integration-test/db2-pool-spec.js.map +0 -1
  204. package/dist/integration-test/ifs-spec.d.ts +0 -1
  205. package/dist/integration-test/ifs-spec.js +0 -118
  206. package/dist/integration-test/ifs-spec.js.map +0 -1
  207. package/dist/integration-test/msgf-spec.d.ts +0 -1
  208. package/dist/integration-test/msgf-spec.js +0 -25
  209. package/dist/integration-test/msgf-spec.js.map +0 -1
  210. package/dist/integration-test/msgq-spec.d.ts +0 -1
  211. package/dist/integration-test/msgq-spec.js +0 -34
  212. package/dist/integration-test/msgq-spec.js.map +0 -1
  213. package/dist/java/JT400.js +0 -3
  214. package/dist/java/JT400.js.map +0 -1
  215. package/dist/java/index.d.ts +0 -7
  216. package/dist/java/index.js +0 -33
  217. package/dist/java/index.js.map +0 -1
  218. package/dist/lib/baseConnection.d.ts +0 -5
  219. package/dist/lib/baseConnection.js +0 -264
  220. package/dist/lib/baseConnection.js.map +0 -1
  221. package/dist/lib/baseConnection.types.d.ts +0 -53
  222. package/dist/lib/baseConnection.types.js +0 -7
  223. package/dist/lib/baseConnection.types.js.map +0 -1
  224. package/dist/lib/connection.d.ts +0 -10
  225. package/dist/lib/connection.js +0 -143
  226. package/dist/lib/connection.js.map +0 -1
  227. package/dist/lib/connection.types.js +0 -3
  228. package/dist/lib/connection.types.js.map +0 -1
  229. package/dist/lib/handleError.d.ts +0 -3
  230. package/dist/lib/handleError.js +0 -25
  231. package/dist/lib/handleError.js.map +0 -1
  232. package/dist/lib/ifs/index.d.ts +0 -3
  233. package/dist/lib/ifs/index.js +0 -45
  234. package/dist/lib/ifs/index.js.map +0 -1
  235. package/dist/lib/ifs/read_stream.d.ts +0 -6
  236. package/dist/lib/ifs/read_stream.js +0 -28
  237. package/dist/lib/ifs/read_stream.js.map +0 -1
  238. package/dist/lib/ifs/types.js +0 -3
  239. package/dist/lib/ifs/types.js.map +0 -1
  240. package/dist/lib/ifs/write_stream.d.ts +0 -6
  241. package/dist/lib/ifs/write_stream.js +0 -25
  242. package/dist/lib/ifs/write_stream.js.map +0 -1
  243. package/dist/lib/inMemoryConnection.d.ts +0 -7
  244. package/dist/lib/inMemoryConnection.js +0 -33
  245. package/dist/lib/inMemoryConnection.js.map +0 -1
  246. package/dist/lib/insertList.d.ts +0 -4
  247. package/dist/lib/insertList.js +0 -44
  248. package/dist/lib/insertList.js.map +0 -1
  249. package/dist/lib/jdbcstream.d.ts +0 -1
  250. package/dist/lib/jdbcstream.js +0 -50
  251. package/dist/lib/jdbcstream.js.map +0 -1
  252. package/dist/lib/jdbcwritestream.d.ts +0 -1
  253. package/dist/lib/jdbcwritestream.js +0 -37
  254. package/dist/lib/jdbcwritestream.js.map +0 -1
  255. package/dist/lib/logger.js +0 -13
  256. package/dist/lib/logger.js.map +0 -1
  257. package/dist/lib/sqlutil.d.ts +0 -1
  258. package/dist/lib/sqlutil.js +0 -18
  259. package/dist/lib/sqlutil.js.map +0 -1
  260. package/dist/lib/streamTransformers.d.ts +0 -2
  261. package/dist/lib/streamTransformers.js +0 -30
  262. package/dist/lib/streamTransformers.js.map +0 -1
  263. package/dist/unit-test/hsql-spec.d.ts +0 -1
  264. package/dist/unit-test/hsql-spec.js +0 -495
  265. package/dist/unit-test/hsql-spec.js.map +0 -1
  266. package/dist/unit-test/sqlutil-spec.d.ts +0 -1
  267. package/dist/unit-test/sqlutil-spec.js +0 -20
  268. package/dist/unit-test/sqlutil-spec.js.map +0 -1
  269. package/dist/unit-test/streamTransformers-spec.d.ts +0 -1
  270. package/dist/unit-test/streamTransformers-spec.js +0 -98
  271. package/dist/unit-test/streamTransformers-spec.js.map +0 -1
@@ -0,0 +1,2 @@
1
+
2
+ export { }
@@ -0,0 +1,118 @@
1
+ import assert from "assert";
2
+ import streamEqual from "stream-equal";
3
+ import { jt400 } from "./db.js";
4
+ const { ifs } = jt400;
5
+ describe("ifs", () => {
6
+ it("should read file", (done) => {
7
+ const stream = ifs().createReadStream("/atm/test/hello_world.txt");
8
+ let data = "";
9
+ stream.on("data", (chunk) => {
10
+ data += chunk;
11
+ });
12
+ stream.on("end", () => {
13
+ assert.strictEqual(data, "Hall\xF3 heimur!\n");
14
+ done();
15
+ });
16
+ stream.on("error", done);
17
+ }).timeout(5e4);
18
+ it("should get file metadata", async () => {
19
+ const metadata = await ifs().fileMetadata("/atm/test/hello_world.txt");
20
+ assert.deepStrictEqual(metadata, {
21
+ exists: true,
22
+ length: 15
23
+ });
24
+ });
25
+ describe("list files", () => {
26
+ it("should list files", async () => {
27
+ const files = await ifs().listFiles("/atm/test");
28
+ assert.ok(files.length > 0);
29
+ });
30
+ it("should return empty array for empty folder", async () => {
31
+ const files = await ifs().listFiles("/atm/test/emptyFolder");
32
+ assert.strictEqual(files.length, 0);
33
+ });
34
+ it("should return empty array for a folder that does not exist", async () => {
35
+ const files = await ifs().listFiles("/atm/test/does-not-exist");
36
+ assert.strictEqual(files.length, 0);
37
+ });
38
+ it("should return empty array if the folder is a file", async () => {
39
+ const files = await ifs().listFiles("/atm/test/hello_world.txt");
40
+ assert.strictEqual(files.length, 0);
41
+ });
42
+ });
43
+ describe("move file", () => {
44
+ it("should return true if the file exist", async () => {
45
+ const res = await ifs().moveFile(
46
+ "/atm/test/file-to-move.txt",
47
+ "/atm/test/file-moved.txt"
48
+ );
49
+ assert.strictEqual(res, true);
50
+ await ifs().moveFile(
51
+ "/atm/test/file-moved.txt",
52
+ "/atm/test/file-to-move.txt"
53
+ );
54
+ });
55
+ it("should return false if the file does not exist", async () => {
56
+ const res = await ifs().moveFile(
57
+ "/atm/test/does-not-exist.txt",
58
+ "/atm/test/does-not-exist2.txt"
59
+ );
60
+ assert.strictEqual(res, false);
61
+ });
62
+ });
63
+ it("should get metadata for file that does not exists", async () => {
64
+ const metadata = await ifs().fileMetadata(
65
+ "/atm/test/___file_that_does_not_exists____.txt"
66
+ );
67
+ assert.deepStrictEqual(metadata, {
68
+ exists: false,
69
+ length: 0
70
+ });
71
+ });
72
+ it("should read filename promise", (done) => {
73
+ const stream = ifs().createReadStream(
74
+ Promise.resolve("/atm/test/hello_world.txt")
75
+ );
76
+ let data = "";
77
+ stream.on("data", (chunk) => {
78
+ data += chunk;
79
+ });
80
+ stream.on("end", () => {
81
+ assert.strictEqual(data, "Hall\xF3 heimur!\n");
82
+ done();
83
+ });
84
+ stream.on("error", done);
85
+ }).timeout(5e4);
86
+ it("should write file", (done) => {
87
+ const rs = ifs().createReadStream("/atm/test/hello_world.txt");
88
+ const ws = ifs().createWriteStream("/atm/test2/new_file.txt", {
89
+ append: false
90
+ });
91
+ rs.pipe(ws).on("finish", () => {
92
+ const stream = ifs().createReadStream("/atm/test2/new_file.txt");
93
+ let data = "";
94
+ stream.on("data", (chunk) => {
95
+ data += chunk;
96
+ });
97
+ stream.on("end", () => {
98
+ assert.strictEqual(data, "Hall\xF3 heimur!\n");
99
+ done();
100
+ });
101
+ stream.on("error", done);
102
+ }).on("error", done);
103
+ }).timeout(5e3);
104
+ it("should pipe image", () => {
105
+ const rs = ifs().createReadStream("/atm/test/image.jpg");
106
+ const ws = ifs().createWriteStream("/atm/test2/image.jpg", {
107
+ append: false
108
+ });
109
+ rs.pipe(ws).on("finish", () => {
110
+ const oldImage = ifs().createReadStream("/atm/test/image.jpg");
111
+ const newImage = ifs().createReadStream("/atm/test2/image.jpg");
112
+ return streamEqual(oldImage, newImage).then((equal) => {
113
+ assert.strictEqual(equal, true);
114
+ });
115
+ });
116
+ }).timeout(5e4);
117
+ });
118
+ //# sourceMappingURL=ifs-spec.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../ts-src/integration-test/ifs-spec.ts"],"sourcesContent":["import assert from 'assert'\nimport streamEqual from 'stream-equal'\nimport { jt400 } from './db.js'\nconst { ifs } = jt400\n\ndescribe('ifs', () => {\n it('should read file', (done) => {\n const stream = ifs().createReadStream('/atm/test/hello_world.txt')\n let data = ''\n stream.on('data', (chunk) => {\n data += chunk\n })\n\n stream.on('end', () => {\n assert.strictEqual(data, 'Halló heimur!\\n')\n done()\n })\n\n stream.on('error', done)\n }).timeout(50000)\n\n it('should get file metadata', async () => {\n const metadata = await ifs().fileMetadata('/atm/test/hello_world.txt')\n assert.deepStrictEqual(metadata, {\n exists: true,\n length: 15,\n })\n })\n describe('list files', () => {\n it('should list files', async () => {\n const files = await ifs().listFiles('/atm/test')\n assert.ok(files.length > 0)\n })\n it('should return empty array for empty folder', async () => {\n const files = await ifs().listFiles('/atm/test/emptyFolder')\n assert.strictEqual(files.length, 0)\n })\n it('should return empty array for a folder that does not exist', async () => {\n const files = await ifs().listFiles('/atm/test/does-not-exist')\n assert.strictEqual(files.length, 0)\n })\n it('should return empty array if the folder is a file', async () => {\n const files = await ifs().listFiles('/atm/test/hello_world.txt')\n assert.strictEqual(files.length, 0)\n })\n })\n describe('move file', () => {\n it('should return true if the file exist', async () => {\n const res = await ifs().moveFile(\n '/atm/test/file-to-move.txt',\n '/atm/test/file-moved.txt',\n )\n assert.strictEqual(res, true)\n await ifs().moveFile(\n '/atm/test/file-moved.txt',\n '/atm/test/file-to-move.txt',\n )\n })\n it('should return false if the file does not exist', async () => {\n const res = await ifs().moveFile(\n '/atm/test/does-not-exist.txt',\n '/atm/test/does-not-exist2.txt',\n )\n assert.strictEqual(res, false)\n })\n })\n\n it('should get metadata for file that does not exists', async () => {\n const metadata = await ifs().fileMetadata(\n '/atm/test/___file_that_does_not_exists____.txt',\n )\n\n assert.deepStrictEqual(metadata, {\n exists: false,\n length: 0,\n })\n })\n\n it('should read filename promise', (done) => {\n const stream = ifs().createReadStream(\n Promise.resolve('/atm/test/hello_world.txt'),\n )\n let data = ''\n stream.on('data', (chunk) => {\n data += chunk\n })\n\n stream.on('end', () => {\n assert.strictEqual(data, 'Halló heimur!\\n')\n done()\n })\n\n stream.on('error', done)\n }).timeout(50000)\n\n it('should write file', (done) => {\n const rs = ifs().createReadStream('/atm/test/hello_world.txt')\n const ws = ifs().createWriteStream('/atm/test2/new_file.txt', {\n append: false,\n })\n\n rs.pipe(ws)\n .on('finish', () => {\n const stream = ifs().createReadStream('/atm/test2/new_file.txt')\n let data = ''\n stream.on('data', (chunk) => {\n data += chunk\n })\n\n stream.on('end', () => {\n assert.strictEqual(data, 'Halló heimur!\\n')\n done()\n /*\n ifs().deleteFile('/atm/test2/new_file.txt')\n .then((res) => {\n assert.strictEqual(res, true);\n done();\n })\n .catch(done);\n */\n })\n\n stream.on('error', done)\n })\n .on('error', done)\n }).timeout(5000)\n\n it('should pipe image', () => {\n const rs = ifs().createReadStream('/atm/test/image.jpg')\n const ws = ifs().createWriteStream('/atm/test2/image.jpg', {\n append: false,\n })\n\n rs.pipe(ws).on('finish', () => {\n const oldImage = ifs().createReadStream('/atm/test/image.jpg')\n const newImage = ifs().createReadStream('/atm/test2/image.jpg')\n\n return streamEqual(oldImage, newImage).then((equal) => {\n assert.strictEqual(equal, true)\n })\n })\n }).timeout(50000)\n})\n"],"mappings":"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","names":[]}
@@ -0,0 +1,2 @@
1
+
2
+ export { }
@@ -0,0 +1,12 @@
1
+ import { jt400 } from "./db.js";
2
+ import assert from "assert";
3
+ describe("MessageFileHandler", async function() {
4
+ it("should open a message file and read an id", async () => {
5
+ const file = await jt400.openMessageFile({ path: "/QSYS.LIB/QCPFMSG.MSGF" });
6
+ const msg = await file.read({ messageId: "CPF2105" });
7
+ const expectedText = "Object &1 in &2 type *&3 not found.";
8
+ const text = await msg.getText();
9
+ assert.strictEqual(text, expectedText);
10
+ }).timeout(5e3);
11
+ });
12
+ //# sourceMappingURL=msgf-spec.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../ts-src/integration-test/msgf-spec.ts"],"sourcesContent":["import { jt400 } from './db.js'\nimport assert from 'assert'\n\ndescribe('MessageFileHandler', async function () {\n it('should open a message file and read an id', async () => {\n const file = await jt400.openMessageFile({ path: '/QSYS.LIB/QCPFMSG.MSGF' })\n const msg = await file.read({ messageId: 'CPF2105' })\n const expectedText = 'Object &1 in &2 type *&3 not found.'\n const text = await msg.getText()\n assert.strictEqual(text, expectedText)\n }).timeout(5000)\n})\n"],"mappings":"AAAA,SAAS,aAAa;AACtB,OAAO,YAAY;AAEnB,SAAS,sBAAsB,iBAAkB;AAC/C,KAAG,6CAA6C,YAAY;AAC1D,UAAM,OAAO,MAAM,MAAM,gBAAgB,EAAE,MAAM,yBAAyB,CAAC;AAC3E,UAAM,MAAM,MAAM,KAAK,KAAK,EAAE,WAAW,UAAU,CAAC;AACpD,UAAM,eAAe;AACrB,UAAM,OAAO,MAAM,IAAI,QAAQ;AAC/B,WAAO,YAAY,MAAM,YAAY;AAAA,EACvC,CAAC,EAAE,QAAQ,GAAI;AACjB,CAAC;","names":[]}
@@ -0,0 +1,2 @@
1
+
2
+ export { }
@@ -0,0 +1,23 @@
1
+ import assert from "assert";
2
+ import { jt400 } from "./db.js";
3
+ xdescribe("MessageQ", function() {
4
+ let msgq;
5
+ beforeEach(async () => {
6
+ msgq = await jt400.openMessageQ({
7
+ name: process.env.AS400_TEST_MESSAGE_Q || ""
8
+ });
9
+ const readnext = async () => {
10
+ const message = await msgq.read();
11
+ if (message) {
12
+ return readnext();
13
+ }
14
+ };
15
+ await readnext();
16
+ });
17
+ it("should open a message queue and write/read a message.", async () => {
18
+ const testMessage = "Test Message";
19
+ await msgq.sendInformational(testMessage);
20
+ assert.strictEqual(await msgq.read(), testMessage);
21
+ }).timeout(5e3);
22
+ });
23
+ //# sourceMappingURL=msgq-spec.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../ts-src/integration-test/msgq-spec.ts"],"sourcesContent":["import assert from 'assert'\nimport { jt400 } from './db.js'\nxdescribe('MessageQ', function () {\n let msgq\n beforeEach(async () => {\n // Clear queue\n msgq = await jt400.openMessageQ({\n name: process.env.AS400_TEST_MESSAGE_Q || '',\n })\n\n const readnext = async () => {\n const message = await msgq.read()\n if (message) {\n return readnext()\n }\n }\n\n await readnext()\n })\n\n it('should open a message queue and write/read a message.', async () => {\n const testMessage = 'Test Message'\n await msgq.sendInformational(testMessage)\n assert.strictEqual(await msgq.read(), testMessage)\n }).timeout(5000)\n})\n"],"mappings":"AAAA,OAAO,YAAY;AACnB,SAAS,aAAa;AACtB,UAAU,YAAY,WAAY;AAChC,MAAI;AACJ,aAAW,YAAY;AAErB,WAAO,MAAM,MAAM,aAAa;AAAA,MAC9B,MAAM,QAAQ,IAAI,wBAAwB;AAAA,IAC5C,CAAC;AAED,UAAM,WAAW,YAAY;AAC3B,YAAM,UAAU,MAAM,KAAK,KAAK;AAChC,UAAI,SAAS;AACX,eAAO,SAAS;AAAA,MAClB;AAAA,IACF;AAEA,UAAM,SAAS;AAAA,EACjB,CAAC;AAED,KAAG,yDAAyD,YAAY;AACtE,UAAM,cAAc;AACpB,UAAM,KAAK,kBAAkB,WAAW;AACxC,WAAO,YAAY,MAAM,KAAK,KAAK,GAAG,WAAW;AAAA,EACnD,CAAC,EAAE,QAAQ,GAAI;AACjB,CAAC;","names":[]}
@@ -1,8 +1,8 @@
1
- export interface ResultStream {
1
+ interface ResultStream {
2
2
  close: () => Promise<void>;
3
3
  read: () => Promise<string>;
4
4
  }
5
- export interface StatementWrap {
5
+ interface StatementWrap {
6
6
  isQuerySync: () => boolean;
7
7
  close: () => Promise<void>;
8
8
  updated: () => Promise<number>;
@@ -11,12 +11,12 @@ export interface StatementWrap {
11
11
  asArray: () => Promise<string>;
12
12
  next: () => Promise<string>;
13
13
  }
14
- export interface TablesReadStream {
14
+ interface TablesReadStream {
15
15
  close: () => Promise<void>;
16
16
  read: () => Promise<string>;
17
17
  getMetaData: () => Promise<string>;
18
18
  }
19
- export interface JDBCConnection {
19
+ interface JDBCConnection {
20
20
  query: (sql: string, jsonParams: string, trim: boolean) => Promise<string>;
21
21
  queryAsStream: (sql: string, jsonParams: string, bufferSize: number) => Promise<ResultStream>;
22
22
  execute: (sql: string, jsonParams: string) => Promise<StatementWrap>;
@@ -26,41 +26,41 @@ export interface JDBCConnection {
26
26
  batchUpdate: (sql: string, jsonParams: string) => Promise<number[]>;
27
27
  insertAndGetId: (sql: string, jsonParams: string) => Promise<number>;
28
28
  }
29
- export interface Transaction extends JDBCConnection {
29
+ interface Transaction extends JDBCConnection {
30
30
  commit: () => Promise<void>;
31
31
  rollback: () => Promise<void>;
32
32
  end: () => Promise<void>;
33
33
  }
34
- export interface Pgm {
34
+ interface Pgm {
35
35
  run: (jsonParams: string, timeout: number) => Promise<string>;
36
36
  }
37
- export interface MessageQ {
37
+ interface MessageQ {
38
38
  read: (wait: number) => Promise<string>;
39
39
  sendInformational: (message: string) => Promise<void>;
40
40
  }
41
- export interface KeyedDataQueueResponse {
41
+ interface KeyedDataQueueResponse {
42
42
  getData: () => Promise<string>;
43
43
  write: (data: string) => Promise<void>;
44
44
  }
45
- export interface KeyedDataQ {
45
+ interface KeyedDataQ {
46
46
  read: (key: string, wait: number) => Promise<string>;
47
47
  readResponse: (key: string, wait: number, writeKeyLength: number) => Promise<KeyedDataQueueResponse>;
48
48
  write: (key: string, data: string) => Promise<void>;
49
49
  }
50
- export interface AS400Message {
50
+ interface AS400Message {
51
51
  getText: () => Promise<string>;
52
52
  }
53
- export interface MessageFileHandler {
53
+ interface MessageFileHandler {
54
54
  read: (messageId: string) => Promise<AS400Message>;
55
55
  }
56
- export interface IfsReadStream {
56
+ interface IfsReadStream {
57
57
  read: () => Promise<Buffer>;
58
58
  }
59
- export interface IfsWriteStream {
59
+ interface IfsWriteStream {
60
60
  write: (data: Buffer) => Promise<void>;
61
61
  flush: () => Promise<void>;
62
62
  }
63
- export interface JT400 extends JDBCConnection {
63
+ interface JT400 extends JDBCConnection {
64
64
  createTransactionSync: () => Transaction;
65
65
  getPrimaryKeys: (catalog: string, schema: string, table: string) => Promise<string>;
66
66
  pgmSync: (programName: string, paramsSchemaJsonStr: string, libraryName?: string, ccsid?: number) => Pgm;
@@ -75,3 +75,5 @@ export interface JT400 extends JDBCConnection {
75
75
  getIfsFileMetadata: (fileName: string) => Promise<string>;
76
76
  close: () => Promise<void>;
77
77
  }
78
+
79
+ export type { AS400Message, IfsReadStream, IfsWriteStream, JDBCConnection, JT400, KeyedDataQ, KeyedDataQueueResponse, MessageFileHandler, MessageQ, Pgm, ResultStream, StatementWrap, TablesReadStream, Transaction };
@@ -0,0 +1 @@
1
+ //# sourceMappingURL=JT400.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":[],"sourcesContent":[],"mappings":"","names":[]}
@@ -0,0 +1,10 @@
1
+ import { JT400 } from './JT400.js';
2
+
3
+ interface JavaBridge {
4
+ createConnection: (config: string) => Promise<JT400>;
5
+ createPool: (config: string) => JT400;
6
+ createInMemoryConnection: () => JT400;
7
+ }
8
+ declare const initJavaBridge: () => JavaBridge;
9
+
10
+ export { type JavaBridge, initJavaBridge };
@@ -0,0 +1,40 @@
1
+ import path from "node:path";
2
+ import { fileURLToPath } from "node:url";
3
+ var getFilename = () => fileURLToPath(import.meta.url);
4
+ var getDirname = () => path.dirname(getFilename());
5
+ var __dirname = /* @__PURE__ */ getDirname();
6
+ var __filename = /* @__PURE__ */ getFilename();
7
+ import { appendClasspath, ensureJvm, importClass } from "java-bridge";
8
+ import { join as joinPath } from "path";
9
+ const initJavaBridge = () => {
10
+ const JAR_DIR = joinPath(__dirname, "/../../java/lib");
11
+ appendClasspath([
12
+ joinPath(JAR_DIR, "jt400.jar"),
13
+ joinPath(JAR_DIR, "jt400wrap.jar"),
14
+ joinPath(JAR_DIR, "json-simple-1.1.1.jar"),
15
+ joinPath(JAR_DIR, "hsqldb.jar")
16
+ ]);
17
+ ensureJvm({
18
+ opts: [
19
+ "-Xrs",
20
+ "-Dcom.ibm.as400.access.AS400.guiAvailable=false",
21
+ "--enable-native-access=ALL-UNNAMED"
22
+ ]
23
+ });
24
+ const JT400Class = importClass("nodejt400.JT400");
25
+ const HsqlClientClass = importClass("nodejt400.HsqlClient");
26
+ return {
27
+ createConnection: (config) => JT400Class.createConnection(config),
28
+ // async
29
+ createPool: (config) => JT400Class.createPoolSync(config),
30
+ // sync si tu wrapper lo expone
31
+ createInMemoryConnection: () => {
32
+ const instance = new HsqlClientClass();
33
+ return instance;
34
+ }
35
+ };
36
+ };
37
+ export {
38
+ initJavaBridge
39
+ };
40
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../node_modules/tsup/assets/esm_shims.js","../../ts-src/java/index.ts"],"sourcesContent":["// Shim globals in esm bundle\nimport path from 'node:path'\nimport { fileURLToPath } from 'node:url'\n\nconst getFilename = () => fileURLToPath(import.meta.url)\nconst getDirname = () => path.dirname(getFilename())\n\nexport const __dirname = /* @__PURE__ */ getDirname()\nexport const __filename = /* @__PURE__ */ getFilename()\n","// src/common/libs/jt400/javaBridge.ts\nimport { appendClasspath, ensureJvm, importClass } from 'java-bridge'\nimport { join as joinPath } from 'path'\nimport type { JT400 } from './JT400'\n\nexport interface JavaBridge {\n createConnection: (config: string) => Promise<JT400>\n createPool: (config: string) => JT400\n createInMemoryConnection: () => JT400\n}\n\nexport const initJavaBridge = (): JavaBridge => {\n const JAR_DIR = joinPath(__dirname, '/../../java/lib')\n\n appendClasspath([\n joinPath(JAR_DIR, 'jt400.jar'),\n joinPath(JAR_DIR, 'jt400wrap.jar'),\n joinPath(JAR_DIR, 'json-simple-1.1.1.jar'),\n joinPath(JAR_DIR, 'hsqldb.jar'),\n ])\n\n // Opciones JVM (esto te funcionó)\n ensureJvm({\n opts: [\n '-Xrs',\n '-Dcom.ibm.as400.access.AS400.guiAvailable=false',\n '--enable-native-access=ALL-UNNAMED',\n ],\n })\n\n // Clases del wrapper Java\n const JT400Class: any = importClass('nodejt400.JT400')\n const HsqlClientClass: any = importClass('nodejt400.HsqlClient')\n\n return {\n createConnection: (config: string) =>\n JT400Class.createConnection(config) as Promise<JT400>, // async\n createPool: (config: string) => JT400Class.createPoolSync(config) as JT400, // sync si tu wrapper lo expone\n createInMemoryConnection: () => {\n // En java-bridge se instancia con `new`\n const instance = new HsqlClientClass()\n return instance as JT400\n },\n }\n}\n\n// export const initNewJavaBridge = (): JavaBridge => {\n// ensureJvm({\n// // This option should not have any effect when not using electron or not having the application packaged.\n// // https://github.com/MarkusJx/node-java-bridge?tab=readme-ov-file#notes-on-electron\n// isPackagedElectron: true,\n\n// opts: [\n// '-Xrs',\n// '-Dcom.ibm.as400.access.AS400.guiAvailable=false', // Removes gui prompts\n// ],\n// })\n// appendClasspath(\n// ['jt400.jar', 'jt400wrap.jar', 'json-simple-1.1.1.jar', 'hsqldb.jar'].map(\n// (jar) => joinPath(currentDir, '/../../java/lib/', jar)\n// )\n// )\n\n// const JT400Class = importClass('nodejt400.JT400')\n// return {\n// createConnection: (config: string) => JT400Class.createConnection(config),\n// createInMemoryConnection: () => {\n// const HsqlClientClass = importClass('nodejt400.HsqlClient')\n// const instance: any = new HsqlClientClass()\n// return instance\n// },\n// createPool: (config: string) => JT400Class.createPoolSync(config),\n// bufferToJavaType: (buffer: Buffer) => buffer,\n// javaTypeToBuffer: (javaType: any) => javaType,\n// }\n// }\n"],"mappings":"AACA,OAAO,UAAU;AACjB,SAAS,qBAAqB;AAE9B,IAAM,cAAc,MAAM,cAAc,YAAY,GAAG;AACvD,IAAM,aAAa,MAAM,KAAK,QAAQ,YAAY,CAAC;AAE5C,IAAM,YAA4B,2BAAW;AAC7C,IAAM,aAA6B,4BAAY;ACPtD,SAAS,iBAAiB,WAAW,mBAAmB;AACxD,SAAS,QAAQ,gBAAgB;AAS1B,MAAM,iBAAiB,MAAkB;AAC9C,QAAM,UAAU,SAAS,WAAW,iBAAiB;AAErD,kBAAgB;AAAA,IACd,SAAS,SAAS,WAAW;AAAA,IAC7B,SAAS,SAAS,eAAe;AAAA,IACjC,SAAS,SAAS,uBAAuB;AAAA,IACzC,SAAS,SAAS,YAAY;AAAA,EAChC,CAAC;AAGD,YAAU;AAAA,IACR,MAAM;AAAA,MACJ;AAAA,MACA;AAAA,MACA;AAAA,IACF;AAAA,EACF,CAAC;AAGD,QAAM,aAAkB,YAAY,iBAAiB;AACrD,QAAM,kBAAuB,YAAY,sBAAsB;AAE/D,SAAO;AAAA,IACL,kBAAkB,CAAC,WACjB,WAAW,iBAAiB,MAAM;AAAA;AAAA,IACpC,YAAY,CAAC,WAAmB,WAAW,eAAe,MAAM;AAAA;AAAA,IAChE,0BAA0B,MAAM;AAE9B,YAAM,WAAW,IAAI,gBAAgB;AACrC,aAAO;AAAA,IACT;AAAA,EACF;AACF;","names":[]}
@@ -0,0 +1,9 @@
1
+ import { JDBCConnection } from '../java/JT400.js';
2
+ import { BaseConnection } from './baseConnection.types.js';
3
+ import { CreateInsertList } from './insertList.js';
4
+ import { Logger } from './logger.js';
5
+ import 'stream';
6
+
7
+ declare const createBaseConnection: (jdbcConnection: JDBCConnection, insertListFun: CreateInsertList, logger: Logger, inMemory: boolean) => BaseConnection;
8
+
9
+ export { createBaseConnection };
@@ -0,0 +1,278 @@
1
+ import { parse } from "JSONStream";
2
+ import { handleError } from "./handleError.js";
3
+ import { JdbcStream } from "./jdbcstream.js";
4
+ import { createJdbcWriteStream } from "./jdbcwritestream.js";
5
+ import { arrayToObject } from "./streamTransformers.js";
6
+ function convertDateValues(v) {
7
+ return v instanceof Date ? v.toISOString().replace("T", " ").replace("Z", "") : v;
8
+ }
9
+ function paramsToJson(params) {
10
+ return JSON.stringify((params || []).map(convertDateValues));
11
+ }
12
+ const createBaseConnection = function(jdbcConnection, insertListFun, logger, inMemory) {
13
+ const baseConnection = {
14
+ query(sql, params = [], options) {
15
+ const jsonParams = paramsToJson(params);
16
+ const trim = options && options.trim !== void 0 ? options.trim : true;
17
+ logger.debug(
18
+ { sql, state: "starting", parameterCount: params.length },
19
+ "Executing IBMI DB query"
20
+ );
21
+ const startTime = process.hrtime.bigint();
22
+ return jdbcConnection.query(sql, jsonParams, trim).then(JSON.parse).then((result) => {
23
+ logger.info(
24
+ {
25
+ sql,
26
+ state: "finished",
27
+ duration: Number(process.hrtime.bigint() - startTime),
28
+ parameterCount: params.length,
29
+ resultSize: result.length
30
+ },
31
+ "IBMI DB query executed"
32
+ );
33
+ return result;
34
+ }).catch(handleError({ sql, params }));
35
+ },
36
+ createReadStream(sql, params = []) {
37
+ const jsonParams = paramsToJson(params);
38
+ logger.debug(
39
+ { sql, state: "starting", parameterCount: params.length },
40
+ "Executing IBMI DB query as stream"
41
+ );
42
+ const startTime = process.hrtime.bigint();
43
+ const stream = new JdbcStream({
44
+ jdbcStreamPromise: jdbcConnection.queryAsStream(sql, jsonParams, 100).catch(handleError({ sql, params }))
45
+ });
46
+ stream.on("end", () => {
47
+ logger.info(
48
+ {
49
+ sql,
50
+ state: "finished",
51
+ duration: Number(process.hrtime.bigint() - startTime),
52
+ parameterCount: params.length
53
+ },
54
+ "IBMI DB query as stream ended"
55
+ );
56
+ });
57
+ return stream;
58
+ },
59
+ execute(sql, params = []) {
60
+ const jsonParams = paramsToJson(params);
61
+ logger.debug(
62
+ { sql, state: "starting", parameterCount: params.length },
63
+ "Executing IBMI DB sql statement"
64
+ );
65
+ return jdbcConnection.execute(sql, jsonParams).then((statement) => {
66
+ const isQuery = statement.isQuerySync();
67
+ let stream;
68
+ const stWrap = {
69
+ isQuery() {
70
+ return isQuery;
71
+ },
72
+ metadata() {
73
+ return statement.getMetaData().then(JSON.parse);
74
+ },
75
+ asArray() {
76
+ const startTime = process.hrtime.bigint();
77
+ return statement.asArray().then(JSON.parse).then((result) => {
78
+ logger.info(
79
+ {
80
+ sql,
81
+ state: "finished",
82
+ duration: Number(process.hrtime.bigint() - startTime),
83
+ parameterCount: params.length,
84
+ resultSize: result.length
85
+ },
86
+ "IBMI DB query executed"
87
+ );
88
+ return result;
89
+ });
90
+ },
91
+ asStream(options) {
92
+ const startTime = process.hrtime.bigint();
93
+ options = options || {};
94
+ stream = new JdbcStream({
95
+ jdbcStream: statement.asStreamSync(options.bufferSize || 100)
96
+ });
97
+ stream.on("end", () => {
98
+ logger.info(
99
+ {
100
+ sql,
101
+ state: "finished",
102
+ duration: Number(process.hrtime.bigint() - startTime),
103
+ parameterCount: params.length
104
+ },
105
+ "IBMI DB query as stream ended"
106
+ );
107
+ });
108
+ return stream;
109
+ },
110
+ asObjectStream(options) {
111
+ const startTime = process.hrtime.bigint();
112
+ options = options || {};
113
+ const parseJSON = parse("*");
114
+ return statement.getMetaData().then(JSON.parse).then((metadata) => {
115
+ const transformArrayToObject = arrayToObject(metadata);
116
+ stream = new JdbcStream({
117
+ jdbcStream: statement.asStreamSync(
118
+ options.bufferSize || 100
119
+ )
120
+ });
121
+ stream.on("end", () => {
122
+ logger.info(
123
+ {
124
+ sql,
125
+ state: "finished",
126
+ duration: Number(process.hrtime.bigint() - startTime),
127
+ parameterCount: params.length
128
+ },
129
+ "IBMI DB query as object stream ended"
130
+ );
131
+ });
132
+ return stream.pipe(parseJSON).pipe(transformArrayToObject);
133
+ });
134
+ },
135
+ asIterable() {
136
+ const startTime = process.hrtime.bigint();
137
+ return {
138
+ [Symbol.asyncIterator]() {
139
+ return {
140
+ async next() {
141
+ return statement.next().then(JSON.parse).then((value) => {
142
+ const done = !value;
143
+ if (done) {
144
+ logger.info(
145
+ {
146
+ sql,
147
+ state: "finished",
148
+ duration: Number(
149
+ process.hrtime.bigint() - startTime
150
+ ),
151
+ parameterCount: jsonParams.length
152
+ },
153
+ "IBMI DB query as iterable executed"
154
+ );
155
+ }
156
+ return {
157
+ done,
158
+ value
159
+ };
160
+ });
161
+ }
162
+ };
163
+ }
164
+ };
165
+ },
166
+ updated() {
167
+ return statement.updated();
168
+ },
169
+ close() {
170
+ if (stream) {
171
+ stream.close();
172
+ } else {
173
+ return statement.close();
174
+ }
175
+ }
176
+ };
177
+ return stWrap;
178
+ }).catch(handleError({ sql, params }));
179
+ },
180
+ update(sql, params = []) {
181
+ const jsonParams = paramsToJson(params);
182
+ logger.info(
183
+ { sql, state: "starting", parameterCount: params.length },
184
+ "Executing IBMI DB update"
185
+ );
186
+ const startTime = process.hrtime.bigint();
187
+ return jdbcConnection.update(sql, jsonParams).then((result) => {
188
+ logger.info(
189
+ {
190
+ sql,
191
+ state: "finished",
192
+ duration: Number(process.hrtime.bigint() - startTime),
193
+ parameterCount: params.length,
194
+ result
195
+ },
196
+ "IBMI DB update executed"
197
+ );
198
+ return result;
199
+ }).catch(handleError({ sql, params }));
200
+ },
201
+ createWriteStream(sql, options) {
202
+ logger.debug({ sql, state: "starting" }, "Executing IBMI DB write stream");
203
+ const startTime = process.hrtime.bigint();
204
+ const stream = createJdbcWriteStream(
205
+ baseConnection.batchUpdate,
206
+ sql,
207
+ options && options.bufferSize
208
+ );
209
+ stream.on("finish", () => {
210
+ logger.info(
211
+ {
212
+ sql,
213
+ state: "finished",
214
+ duration: Number(process.hrtime.bigint() - startTime)
215
+ },
216
+ "IBMI DB write stream ended"
217
+ );
218
+ });
219
+ return stream;
220
+ },
221
+ batchUpdate(sql, paramsList) {
222
+ const params = (paramsList || []).map((row) => {
223
+ return row.map(convertDateValues);
224
+ });
225
+ const jsonParams = JSON.stringify(params);
226
+ logger.info(
227
+ { sql, state: "starting", parameterCount: params.length },
228
+ "Executing IBMI DB batch update"
229
+ );
230
+ const startTime = process.hrtime.bigint();
231
+ return jdbcConnection.batchUpdate(sql, jsonParams).then((res) => {
232
+ const result = Array.from(res);
233
+ logger.info(
234
+ {
235
+ sql,
236
+ state: "finished",
237
+ duration: Number(process.hrtime.bigint() - startTime),
238
+ parameterCount: params.length,
239
+ result
240
+ },
241
+ "IBMI DB batch update executed"
242
+ );
243
+ return result;
244
+ }).catch(handleError({ sql, params }));
245
+ },
246
+ insertAndGetId(sql, params = []) {
247
+ const jsonParams = paramsToJson(params);
248
+ logger.info(
249
+ { sql, state: "starting", parameterCount: params.length },
250
+ "Executing IBMI DB insert and get id"
251
+ );
252
+ const startTime = process.hrtime.bigint();
253
+ return jdbcConnection.insertAndGetId(sql, jsonParams).then((result) => {
254
+ logger.info(
255
+ {
256
+ sql,
257
+ state: "finished",
258
+ duration: Number(process.hrtime.bigint() - startTime),
259
+ parameterCount: params.length
260
+ },
261
+ "IBMI DB insert and get id executed"
262
+ );
263
+ return result;
264
+ }).catch(handleError({ sql, params }));
265
+ },
266
+ insertList(tableName, idColumn, list) {
267
+ return insertListFun(baseConnection)(tableName, idColumn, list);
268
+ },
269
+ isInMemory() {
270
+ return inMemory;
271
+ }
272
+ };
273
+ return baseConnection;
274
+ };
275
+ export {
276
+ createBaseConnection
277
+ };
278
+ //# sourceMappingURL=baseConnection.js.map