@nesgarbo/node-jt400 6.0.3 → 6.0.4

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 (152) hide show
  1. package/README.md +330 -369
  2. package/dist-cjs/index.d.cts +12 -5
  3. package/dist-cjs/index.js.map +1 -1
  4. package/dist-cjs/java/JT400.d.cts +3 -3
  5. package/dist-cjs/java/JT400.js.map +1 -1
  6. package/dist-cjs/java/index.js +4 -3
  7. package/dist-cjs/java/index.js.map +1 -1
  8. package/dist-cjs/lib/baseConnection.js +124 -166
  9. package/dist-cjs/lib/baseConnection.js.map +1 -1
  10. package/dist-cjs/lib/baseConnection.types.d.cts +11 -7
  11. package/dist-cjs/lib/baseConnection.types.js.map +1 -1
  12. package/dist-cjs/lib/connection.js +12 -25
  13. package/dist-cjs/lib/connection.js.map +1 -1
  14. package/dist-cjs/lib/connection.types.d.cts +39 -12
  15. package/dist-cjs/lib/connection.types.js.map +1 -1
  16. package/dist-cjs/lib/handleError.d.cts +1 -3
  17. package/dist-cjs/lib/handleError.js +3 -2
  18. package/dist-cjs/lib/handleError.js.map +1 -1
  19. package/dist-cjs/lib/ifs/read_stream.d.cts +6 -1
  20. package/dist-cjs/lib/ifs/read_stream.js +23 -32
  21. package/dist-cjs/lib/ifs/read_stream.js.map +1 -1
  22. package/dist-cjs/lib/ifs/write_stream.d.cts +7 -1
  23. package/dist-cjs/lib/ifs/write_stream.js +13 -24
  24. package/dist-cjs/lib/ifs/write_stream.js.map +1 -1
  25. package/dist-cjs/lib/inMemoryConnection.d.cts +1 -1
  26. package/dist-cjs/lib/inMemoryConnection.js +4 -4
  27. package/dist-cjs/lib/inMemoryConnection.js.map +1 -1
  28. package/dist-cjs/lib/insertList.js +12 -13
  29. package/dist-cjs/lib/insertList.js.map +1 -1
  30. package/dist-cjs/lib/jdbcstream.d.cts +16 -1
  31. package/dist-cjs/lib/jdbcstream.js +31 -36
  32. package/dist-cjs/lib/jdbcstream.js.map +1 -1
  33. package/dist-cjs/lib/jdbcwritestream.d.cts +4 -1
  34. package/dist-cjs/lib/jdbcwritestream.js +7 -20
  35. package/dist-cjs/lib/jdbcwritestream.js.map +1 -1
  36. package/dist-cjs/lib/logger.d.cts +4 -4
  37. package/dist-cjs/lib/logger.js.map +1 -1
  38. package/dist-cjs/lib/sqlutil.d.cts +4 -1
  39. package/dist-cjs/lib/sqlutil.js +1 -0
  40. package/dist-cjs/lib/sqlutil.js.map +1 -1
  41. package/dist-cjs/lib/streamTransformers.d.cts +2 -1
  42. package/dist-cjs/lib/streamTransformers.js +1 -1
  43. package/dist-cjs/lib/streamTransformers.js.map +1 -1
  44. package/dist-cjs/typings/jsonstream.d.js +1 -0
  45. package/dist-cjs/typings/jsonstream.d.js.map +1 -0
  46. package/dist-esm/index.d.ts +12 -5
  47. package/dist-esm/index.js.map +1 -1
  48. package/dist-esm/java/JT400.d.ts +3 -3
  49. package/dist-esm/java/index.js +3 -10
  50. package/dist-esm/java/index.js.map +1 -1
  51. package/dist-esm/lib/baseConnection.js +124 -166
  52. package/dist-esm/lib/baseConnection.js.map +1 -1
  53. package/dist-esm/lib/baseConnection.types.d.ts +11 -7
  54. package/dist-esm/lib/baseConnection.types.js.map +1 -1
  55. package/dist-esm/lib/connection.js +12 -25
  56. package/dist-esm/lib/connection.js.map +1 -1
  57. package/dist-esm/lib/connection.types.d.ts +39 -12
  58. package/dist-esm/lib/handleError.d.ts +1 -3
  59. package/dist-esm/lib/handleError.js +3 -2
  60. package/dist-esm/lib/handleError.js.map +1 -1
  61. package/dist-esm/lib/ifs/read_stream.d.ts +6 -1
  62. package/dist-esm/lib/ifs/read_stream.js +23 -22
  63. package/dist-esm/lib/ifs/read_stream.js.map +1 -1
  64. package/dist-esm/lib/ifs/write_stream.d.ts +7 -1
  65. package/dist-esm/lib/ifs/write_stream.js +13 -14
  66. package/dist-esm/lib/ifs/write_stream.js.map +1 -1
  67. package/dist-esm/lib/inMemoryConnection.d.ts +1 -1
  68. package/dist-esm/lib/inMemoryConnection.js +4 -4
  69. package/dist-esm/lib/inMemoryConnection.js.map +1 -1
  70. package/dist-esm/lib/insertList.js +12 -13
  71. package/dist-esm/lib/insertList.js.map +1 -1
  72. package/dist-esm/lib/jdbcstream.d.ts +16 -1
  73. package/dist-esm/lib/jdbcstream.js +31 -36
  74. package/dist-esm/lib/jdbcstream.js.map +1 -1
  75. package/dist-esm/lib/jdbcwritestream.d.ts +4 -1
  76. package/dist-esm/lib/jdbcwritestream.js +7 -10
  77. package/dist-esm/lib/jdbcwritestream.js.map +1 -1
  78. package/dist-esm/lib/logger.d.ts +4 -4
  79. package/dist-esm/lib/logger.js.map +1 -1
  80. package/dist-esm/lib/sqlutil.d.ts +4 -1
  81. package/dist-esm/lib/sqlutil.js +1 -0
  82. package/dist-esm/lib/sqlutil.js.map +1 -1
  83. package/dist-esm/lib/streamTransformers.d.ts +2 -1
  84. package/dist-esm/lib/streamTransformers.js +1 -1
  85. package/dist-esm/lib/streamTransformers.js.map +1 -1
  86. package/package.json +16 -21
  87. package/dist-cjs/integration-test/call-rpg-spec.d.cts +0 -2
  88. package/dist-cjs/integration-test/call-rpg-spec.js +0 -101
  89. package/dist-cjs/integration-test/call-rpg-spec.js.map +0 -1
  90. package/dist-cjs/integration-test/dataq-spec.d.cts +0 -2
  91. package/dist-cjs/integration-test/dataq-spec.js +0 -57
  92. package/dist-cjs/integration-test/dataq-spec.js.map +0 -1
  93. package/dist-cjs/integration-test/db.d.cts +0 -8
  94. package/dist-cjs/integration-test/db.js +0 -31
  95. package/dist-cjs/integration-test/db.js.map +0 -1
  96. package/dist-cjs/integration-test/db2-connect-spec.d.cts +0 -2
  97. package/dist-cjs/integration-test/db2-connect-spec.js +0 -42
  98. package/dist-cjs/integration-test/db2-connect-spec.js.map +0 -1
  99. package/dist-cjs/integration-test/db2-pool-spec.d.cts +0 -2
  100. package/dist-cjs/integration-test/db2-pool-spec.js +0 -213
  101. package/dist-cjs/integration-test/db2-pool-spec.js.map +0 -1
  102. package/dist-cjs/integration-test/ifs-spec.d.cts +0 -2
  103. package/dist-cjs/integration-test/ifs-spec.js +0 -140
  104. package/dist-cjs/integration-test/ifs-spec.js.map +0 -1
  105. package/dist-cjs/integration-test/msgf-spec.d.cts +0 -2
  106. package/dist-cjs/integration-test/msgf-spec.js +0 -34
  107. package/dist-cjs/integration-test/msgf-spec.js.map +0 -1
  108. package/dist-cjs/integration-test/msgq-spec.d.cts +0 -2
  109. package/dist-cjs/integration-test/msgq-spec.js +0 -45
  110. package/dist-cjs/integration-test/msgq-spec.js.map +0 -1
  111. package/dist-cjs/unit-test/hsql-spec.d.cts +0 -2
  112. package/dist-cjs/unit-test/hsql-spec.js +0 -488
  113. package/dist-cjs/unit-test/hsql-spec.js.map +0 -1
  114. package/dist-cjs/unit-test/sqlutil-spec.d.cts +0 -2
  115. package/dist-cjs/unit-test/sqlutil-spec.js +0 -43
  116. package/dist-cjs/unit-test/sqlutil-spec.js.map +0 -1
  117. package/dist-cjs/unit-test/streamTransformers-spec.d.cts +0 -2
  118. package/dist-cjs/unit-test/streamTransformers-spec.js +0 -121
  119. package/dist-cjs/unit-test/streamTransformers-spec.js.map +0 -1
  120. package/dist-esm/integration-test/call-rpg-spec.d.ts +0 -2
  121. package/dist-esm/integration-test/call-rpg-spec.js +0 -79
  122. package/dist-esm/integration-test/call-rpg-spec.js.map +0 -1
  123. package/dist-esm/integration-test/dataq-spec.d.ts +0 -2
  124. package/dist-esm/integration-test/dataq-spec.js +0 -35
  125. package/dist-esm/integration-test/dataq-spec.js.map +0 -1
  126. package/dist-esm/integration-test/db.d.ts +0 -8
  127. package/dist-esm/integration-test/db.js +0 -8
  128. package/dist-esm/integration-test/db.js.map +0 -1
  129. package/dist-esm/integration-test/db2-connect-spec.d.ts +0 -2
  130. package/dist-esm/integration-test/db2-connect-spec.js +0 -20
  131. package/dist-esm/integration-test/db2-connect-spec.js.map +0 -1
  132. package/dist-esm/integration-test/db2-pool-spec.d.ts +0 -2
  133. package/dist-esm/integration-test/db2-pool-spec.js +0 -197
  134. package/dist-esm/integration-test/db2-pool-spec.js.map +0 -1
  135. package/dist-esm/integration-test/ifs-spec.d.ts +0 -2
  136. package/dist-esm/integration-test/ifs-spec.js +0 -118
  137. package/dist-esm/integration-test/ifs-spec.js.map +0 -1
  138. package/dist-esm/integration-test/msgf-spec.d.ts +0 -2
  139. package/dist-esm/integration-test/msgf-spec.js +0 -12
  140. package/dist-esm/integration-test/msgf-spec.js.map +0 -1
  141. package/dist-esm/integration-test/msgq-spec.d.ts +0 -2
  142. package/dist-esm/integration-test/msgq-spec.js +0 -23
  143. package/dist-esm/integration-test/msgq-spec.js.map +0 -1
  144. package/dist-esm/unit-test/hsql-spec.d.ts +0 -2
  145. package/dist-esm/unit-test/hsql-spec.js +0 -466
  146. package/dist-esm/unit-test/hsql-spec.js.map +0 -1
  147. package/dist-esm/unit-test/sqlutil-spec.d.ts +0 -2
  148. package/dist-esm/unit-test/sqlutil-spec.js +0 -21
  149. package/dist-esm/unit-test/sqlutil-spec.js.map +0 -1
  150. package/dist-esm/unit-test/streamTransformers-spec.d.ts +0 -2
  151. package/dist-esm/unit-test/streamTransformers-spec.js +0 -99
  152. package/dist-esm/unit-test/streamTransformers-spec.js.map +0 -1
@@ -1,118 +0,0 @@
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
@@ -1 +0,0 @@
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":[]}
@@ -1,2 +0,0 @@
1
-
2
- export { }
@@ -1,12 +0,0 @@
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
@@ -1 +0,0 @@
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":[]}
@@ -1,2 +0,0 @@
1
-
2
- export { }
@@ -1,23 +0,0 @@
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
@@ -1 +0,0 @@
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,2 +0,0 @@
1
-
2
- export { }
@@ -1,466 +0,0 @@
1
- import { useInMemoryDb } from "../index.js";
2
- import { Readable } from "stream";
3
- import { parse } from "JSONStream";
4
- import assert from "assert";
5
- const jt400 = useInMemoryDb();
6
- describe("hsql in memory", () => {
7
- beforeEach(() => {
8
- return jt400.update(
9
- "create table testtbl (ID DECIMAL(15, 0) GENERATED BY DEFAULT AS IDENTITY(START WITH 1234567891234), NAME VARCHAR(300), START DATE, STAMP TIMESTAMP, PRIMARY KEY(ID))"
10
- ).then(
11
- () => jt400.update("insert into testtbl (NAME) values('Foo bar baz')")
12
- );
13
- });
14
- afterEach(() => {
15
- return jt400.update("drop table testtbl");
16
- });
17
- describe("query", () => {
18
- it("should be in memory", () => {
19
- assert.strictEqual(jt400.isInMemory(), true);
20
- });
21
- it("should select form testtbl", async () => {
22
- const res = await jt400.query("select * from testtbl");
23
- assert.strictEqual(res.length, 1);
24
- });
25
- it("should use column alias when selecting", async () => {
26
- const res = await jt400.query("select ID, NAME MYNAME from testtbl");
27
- assert.ok("MYNAME" in res[0]);
28
- });
29
- it("should query as stream", (done) => {
30
- const stream = jt400.createReadStream("select * from testtbl");
31
- const jsonStream = stream.pipe(parse([true]));
32
- const data = [];
33
- jsonStream.on("data", (row) => {
34
- data.push(row);
35
- });
36
- jsonStream.on("end", () => {
37
- try {
38
- assert.strictEqual(data.length, 1);
39
- done();
40
- } catch (e) {
41
- done(e);
42
- }
43
- });
44
- stream.on("error", done);
45
- });
46
- it("should fail queryAsStream with oops error", (done) => {
47
- const sql = "select * from testtbl";
48
- const params = ["a"];
49
- const stream = jt400.createReadStream(sql, params);
50
- const jsonStream = stream.pipe(parse([true]));
51
- jsonStream.on("end", () => {
52
- stream.emit("error", new Error("wrong error"));
53
- });
54
- stream.on("error", (err) => {
55
- try {
56
- assert.strictEqual(
57
- err.message,
58
- "Argumento incorrecto en una llamada JDBC: parameter index out of range: 1"
59
- );
60
- done();
61
- } catch (e) {
62
- done(e);
63
- }
64
- });
65
- });
66
- });
67
- describe("insert", () => {
68
- it("should insert and return id", async () => {
69
- const res = await jt400.insertAndGetId(
70
- "insert into testtbl (NAME) values(?)",
71
- ["foo"]
72
- );
73
- assert.strictEqual(res, 1234567891235);
74
- });
75
- it("should insert list", async () => {
76
- const res = await jt400.insertList("testtbl", "ID", [
77
- {
78
- NAME: "foo"
79
- },
80
- {
81
- NAME: "bar"
82
- }
83
- ]);
84
- assert.deepStrictEqual(res, [1234567891235, 1234567891236]);
85
- const select = await jt400.query("select * from testtbl");
86
- assert.strictEqual(select.length, 3);
87
- });
88
- it("should insert date and timestamp", async () => {
89
- const ids = await jt400.insertList("testtbl", "ID", [
90
- {
91
- START: (/* @__PURE__ */ new Date()).toISOString().substr(0, 10),
92
- STAMP: /* @__PURE__ */ new Date()
93
- }
94
- ]);
95
- assert.deepStrictEqual(ids, [1234567891235]);
96
- });
97
- it("should create write stream", (done) => {
98
- const dataStream = new Readable({ objectMode: true });
99
- let c = 97;
100
- dataStream._read = function() {
101
- dataStream.push([String.fromCharCode(c++)]);
102
- if (c > "z".charCodeAt(0)) {
103
- dataStream.push(null);
104
- }
105
- };
106
- const ws = jt400.createWriteStream(
107
- "insert into testtbl (NAME) VALUES(?)",
108
- { bufferSize: 10 }
109
- );
110
- dataStream.pipe(ws).on("finish", () => {
111
- jt400.query("select name from testtbl").then((res) => {
112
- assert.strictEqual(res.length, 27);
113
- }).then(done, done);
114
- }).on("error", done);
115
- });
116
- });
117
- describe("batch update", () => {
118
- it("should insert batch", async () => {
119
- const res = await jt400.batchUpdate(
120
- "insert into testtbl (NAME,START) values(?, ?)",
121
- [
122
- ["foo", "2015-01-02"],
123
- ["bar", "2015-03-04"]
124
- ]
125
- );
126
- assert.deepStrictEqual(res, [1, 1]);
127
- });
128
- it("should fail insert batch with oops-error", () => {
129
- const sql = "insert into testtbl (NAME,START) values(?, ?)";
130
- const params = [
131
- ["foo", "2015-01-02"],
132
- ["bar", "2015-03-04"],
133
- ["a", "b", "c", "d"]
134
- ];
135
- return jt400.batchUpdate(sql, params).then(() => {
136
- throw new Error("wrong error");
137
- }).catch((error) => {
138
- assert.strictEqual(
139
- error.message,
140
- "excepci\xF3n de datos: formato fecha/hora incorrecto"
141
- );
142
- assert.ok(error.cause.stack.includes("JdbcJsonClient.setParams"));
143
- assert.strictEqual(error.context.sql, sql);
144
- assert.deepStrictEqual(error.context.params, params);
145
- assert.strictEqual(error.category, "ProgrammerError");
146
- });
147
- });
148
- });
149
- describe("pgm call mock", () => {
150
- let callFoo;
151
- let input;
152
- beforeEach(() => {
153
- callFoo = jt400.defineProgram({
154
- programName: "foo",
155
- paramsSchema: [
156
- {
157
- name: "bar",
158
- size: 10
159
- },
160
- {
161
- name: "baz",
162
- size: 9,
163
- decimals: 2
164
- }
165
- ]
166
- });
167
- input = {
168
- bar: "a",
169
- baz: 10
170
- };
171
- });
172
- it("should return input by default", async () => {
173
- const res = await callFoo(input);
174
- assert.deepStrictEqual(res, input);
175
- });
176
- it("should register mock", async () => {
177
- jt400.mockPgm("foo", (input2) => {
178
- input2.baz = 20;
179
- return input2;
180
- });
181
- const res = await callFoo(input);
182
- assert.strictEqual(res.baz, 20);
183
- });
184
- });
185
- describe("should mock ifs", () => {
186
- it("should get metadata", async () => {
187
- const metadata = await jt400.ifs().fileMetadata("/foo/bar.txt");
188
- assert.deepStrictEqual(metadata, {
189
- exists: false,
190
- length: 0
191
- });
192
- });
193
- });
194
- describe("execute", () => {
195
- it("should get metadata", async () => {
196
- const statement = await jt400.execute("select * from testtbl");
197
- const metadata = await statement.metadata();
198
- assert.deepStrictEqual(metadata, [
199
- {
200
- name: "ID",
201
- typeName: "DECIMAL",
202
- precision: 15,
203
- scale: 0
204
- },
205
- {
206
- name: "NAME",
207
- typeName: "VARCHAR",
208
- precision: 300,
209
- scale: 0
210
- },
211
- {
212
- name: "START",
213
- typeName: "DATE",
214
- precision: 10,
215
- scale: 0
216
- },
217
- {
218
- name: "STAMP",
219
- typeName: "TIMESTAMP",
220
- precision: 26,
221
- scale: 6
222
- }
223
- ]);
224
- });
225
- it("should get result as stream", (done) => {
226
- jt400.execute("select * from testtbl").then((statement) => {
227
- const stream = statement.asStream();
228
- let data = "";
229
- assert.strictEqual(statement.isQuery(), true);
230
- stream.on("data", (chunk) => {
231
- data += chunk;
232
- });
233
- stream.on("end", () => {
234
- try {
235
- assert.strictEqual(
236
- data,
237
- '[["1234567891234","Foo bar baz",null,null]]'
238
- );
239
- done();
240
- } catch (err) {
241
- done(err);
242
- }
243
- });
244
- stream.on("error", done);
245
- }).catch(done);
246
- });
247
- it("should get result as object stream", (done) => {
248
- jt400.execute("select * from testtbl").then((statement) => statement.asObjectStream()).then((stream) => {
249
- const data = [];
250
- stream.on("data", (chunk) => {
251
- data.push(chunk);
252
- });
253
- stream.on("end", () => {
254
- try {
255
- assert.deepStrictEqual(data, [
256
- {
257
- ID: "1234567891234",
258
- NAME: "Foo bar baz",
259
- START: null,
260
- STAMP: null
261
- }
262
- ]);
263
- done();
264
- } catch (err) {
265
- done(err);
266
- }
267
- });
268
- stream.on("error", done);
269
- }).catch(done);
270
- });
271
- it("should get result as array", async () => {
272
- const statement = await jt400.execute("select * from testtbl");
273
- const data = await statement.asArray();
274
- assert.deepStrictEqual(data, [
275
- ["1234567891234", "Foo bar baz", null, null]
276
- ]);
277
- });
278
- it("should get result as iterable", async () => {
279
- const statement = await jt400.execute("select * from testtbl");
280
- const rows = statement.asIterable();
281
- let count = 0;
282
- for await (const row of rows) {
283
- count++;
284
- assert.deepStrictEqual(row, [
285
- "1234567891234",
286
- "Foo bar baz",
287
- null,
288
- null
289
- ]);
290
- }
291
- assert.strictEqual(count, 1);
292
- });
293
- it("should pipe to JSONStream", (done) => {
294
- let i = 1;
295
- const data = [];
296
- while (i < 110) {
297
- data.push(i++);
298
- }
299
- data.reduce((memo, item) => {
300
- return memo.then(
301
- () => jt400.update("insert into testtbl (NAME) values(?)", ["n" + item])
302
- );
303
- }, Promise.resolve()).then(() => jt400.execute("select NAME from testtbl order by ID")).then((statement) => statement.asStream().pipe(parse([true]))).then((stream) => {
304
- const res = [];
305
- stream.on("data", (row) => {
306
- res.push(row);
307
- });
308
- stream.on("end", () => {
309
- assert.strictEqual(res.length, 110);
310
- res.forEach((row, index) => {
311
- if (index > 0) {
312
- assert.deepStrictEqual(row[0], "n" + index);
313
- }
314
- });
315
- done();
316
- });
317
- stream.on("error", done);
318
- }).catch(done);
319
- });
320
- it("should get update count", async () => {
321
- const statement = await jt400.execute("update testtbl set NAME=?", [
322
- "testing"
323
- ]);
324
- assert.strictEqual(statement.isQuery(), false);
325
- const updated = await statement.updated();
326
- assert.strictEqual(updated, 1);
327
- });
328
- it("should close stream", (done) => {
329
- let i = 1;
330
- const data = [];
331
- while (i < 40) {
332
- data.push(i++);
333
- }
334
- Promise.all(
335
- data.map(
336
- (item) => jt400.update("insert into testtbl (NAME) values(?)", ["n" + item])
337
- )
338
- ).then(() => {
339
- const res = [];
340
- return jt400.execute("select NAME from testtbl").then((statement) => {
341
- const stream = statement.asStream({
342
- bufferSize: 10
343
- }).pipe(parse([true]));
344
- stream.on("data", (row) => {
345
- res.push(row);
346
- if (res.length >= 10) {
347
- statement.close();
348
- }
349
- });
350
- stream.on("end", () => {
351
- assert.ok(res.length < 21);
352
- done();
353
- });
354
- stream.on("error", done);
355
- });
356
- }).catch(done);
357
- });
358
- });
359
- describe("metadata", () => {
360
- it("should return table metadata as stream", (done) => {
361
- const stream = jt400.getTablesAsStream({
362
- schema: "PUBLIC"
363
- });
364
- const schema = [];
365
- stream.on("data", (data) => {
366
- schema.push(data);
367
- });
368
- stream.on("end", () => {
369
- assert.deepStrictEqual(schema, [
370
- {
371
- schema: "PUBLIC",
372
- table: "TESTTBL",
373
- remarks: ""
374
- }
375
- ]);
376
- done();
377
- });
378
- stream.on("error", done);
379
- });
380
- it("should return columns", async () => {
381
- const res = await jt400.getColumns({
382
- schema: "PUBLIC",
383
- table: "TESTTBL"
384
- });
385
- assert.deepStrictEqual(res, [
386
- {
387
- name: "ID",
388
- typeName: "DECIMAL",
389
- precision: 15,
390
- scale: 0
391
- },
392
- {
393
- name: "NAME",
394
- typeName: "VARCHAR",
395
- precision: 300,
396
- scale: 0
397
- },
398
- {
399
- name: "START",
400
- typeName: "DATE",
401
- precision: 10,
402
- scale: 0
403
- },
404
- {
405
- name: "STAMP",
406
- typeName: "TIMESTAMP",
407
- precision: 26,
408
- scale: 0
409
- }
410
- ]);
411
- });
412
- it("should return primary key", async () => {
413
- const res = await jt400.getPrimaryKeys({
414
- table: "TESTTBL"
415
- });
416
- assert.strictEqual(res.length, 1);
417
- assert.strictEqual(res[0].name, "ID");
418
- });
419
- });
420
- describe("transaction", () => {
421
- it("should commit", () => {
422
- let rowId;
423
- return jt400.transaction((transaction) => {
424
- return transaction.insertAndGetId(
425
- "insert into testtbl (NAME) values('Transaction 1')"
426
- ).then((res) => {
427
- rowId = res;
428
- return transaction.update(
429
- "update testtbl set NAME='Transaction 2' where id=?",
430
- [rowId]
431
- );
432
- });
433
- }).then(
434
- () => jt400.query("select NAME from testtbl where id=?", [rowId])
435
- ).then((res) => {
436
- assert.deepStrictEqual(res[0].NAME, "Transaction 2");
437
- });
438
- });
439
- it("should rollback", () => {
440
- const fakeError = new Error("fake error");
441
- let rowId;
442
- return jt400.transaction((transaction) => {
443
- return transaction.insertAndGetId(
444
- "insert into testtbl (NAME) values('Transaction 1')"
445
- ).then((res) => {
446
- rowId = res;
447
- throw fakeError;
448
- });
449
- }).catch((err) => {
450
- assert.strictEqual(err, fakeError);
451
- }).then(() => jt400.query("select NAME from testtbl where id=?", [rowId])).then((res) => {
452
- assert.strictEqual(res.length, 0);
453
- });
454
- });
455
- it("should batch update", async () => {
456
- const res = await jt400.transaction((transaction) => {
457
- return transaction.batchUpdate("insert into testtbl (NAME) values(?)", [
458
- ["Foo"],
459
- ["Bar"]
460
- ]);
461
- });
462
- assert.deepStrictEqual(res, [1, 1]);
463
- });
464
- });
465
- });
466
- //# sourceMappingURL=hsql-spec.js.map