@nesgarbo/node-jt400 5.4.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 (97) hide show
  1. package/LICENSE +20 -0
  2. package/README.md +511 -0
  3. package/dist/index.d.ts +13 -0
  4. package/dist/index.js +71 -0
  5. package/dist/index.js.map +1 -0
  6. package/dist/integration-test/call-rpg-spec.d.ts +1 -0
  7. package/dist/integration-test/call-rpg-spec.js +88 -0
  8. package/dist/integration-test/call-rpg-spec.js.map +1 -0
  9. package/dist/integration-test/dataq-spec.d.ts +1 -0
  10. package/dist/integration-test/dataq-spec.js +42 -0
  11. package/dist/integration-test/dataq-spec.js.map +1 -0
  12. package/dist/integration-test/db.d.ts +2 -0
  13. package/dist/integration-test/db.js +8 -0
  14. package/dist/integration-test/db.js.map +1 -0
  15. package/dist/integration-test/db2-connect-spec.d.ts +1 -0
  16. package/dist/integration-test/db2-connect-spec.js +34 -0
  17. package/dist/integration-test/db2-connect-spec.js.map +1 -0
  18. package/dist/integration-test/db2-pool-spec.d.ts +1 -0
  19. package/dist/integration-test/db2-pool-spec.js +191 -0
  20. package/dist/integration-test/db2-pool-spec.js.map +1 -0
  21. package/dist/integration-test/ifs-spec.d.ts +1 -0
  22. package/dist/integration-test/ifs-spec.js +118 -0
  23. package/dist/integration-test/ifs-spec.js.map +1 -0
  24. package/dist/integration-test/msgf-spec.d.ts +1 -0
  25. package/dist/integration-test/msgf-spec.js +25 -0
  26. package/dist/integration-test/msgf-spec.js.map +1 -0
  27. package/dist/integration-test/msgq-spec.d.ts +1 -0
  28. package/dist/integration-test/msgq-spec.js +34 -0
  29. package/dist/integration-test/msgq-spec.js.map +1 -0
  30. package/dist/java/JT400.d.ts +77 -0
  31. package/dist/java/JT400.js +3 -0
  32. package/dist/java/JT400.js.map +1 -0
  33. package/dist/java/index.d.ts +11 -0
  34. package/dist/java/index.js +45 -0
  35. package/dist/java/index.js.map +1 -0
  36. package/dist/lib/baseConnection.d.ts +5 -0
  37. package/dist/lib/baseConnection.js +264 -0
  38. package/dist/lib/baseConnection.js.map +1 -0
  39. package/dist/lib/baseConnection.types.d.ts +53 -0
  40. package/dist/lib/baseConnection.types.js +7 -0
  41. package/dist/lib/baseConnection.types.js.map +1 -0
  42. package/dist/lib/connection.d.ts +13 -0
  43. package/dist/lib/connection.js +143 -0
  44. package/dist/lib/connection.js.map +1 -0
  45. package/dist/lib/connection.types.d.ts +77 -0
  46. package/dist/lib/connection.types.js +3 -0
  47. package/dist/lib/connection.types.js.map +1 -0
  48. package/dist/lib/handleError.d.ts +3 -0
  49. package/dist/lib/handleError.js +25 -0
  50. package/dist/lib/handleError.js.map +1 -0
  51. package/dist/lib/ifs/index.d.ts +4 -0
  52. package/dist/lib/ifs/index.js +47 -0
  53. package/dist/lib/ifs/index.js.map +1 -0
  54. package/dist/lib/ifs/read_stream.d.ts +6 -0
  55. package/dist/lib/ifs/read_stream.js +33 -0
  56. package/dist/lib/ifs/read_stream.js.map +1 -0
  57. package/dist/lib/ifs/types.d.ts +16 -0
  58. package/dist/lib/ifs/types.js +3 -0
  59. package/dist/lib/ifs/types.js.map +1 -0
  60. package/dist/lib/ifs/write_stream.d.ts +6 -0
  61. package/dist/lib/ifs/write_stream.js +39 -0
  62. package/dist/lib/ifs/write_stream.js.map +1 -0
  63. package/dist/lib/inMemoryConnection.d.ts +7 -0
  64. package/dist/lib/inMemoryConnection.js +35 -0
  65. package/dist/lib/inMemoryConnection.js.map +1 -0
  66. package/dist/lib/insertList.d.ts +4 -0
  67. package/dist/lib/insertList.js +44 -0
  68. package/dist/lib/insertList.js.map +1 -0
  69. package/dist/lib/jdbcstream.d.ts +1 -0
  70. package/dist/lib/jdbcstream.js +50 -0
  71. package/dist/lib/jdbcstream.js.map +1 -0
  72. package/dist/lib/jdbcwritestream.d.ts +1 -0
  73. package/dist/lib/jdbcwritestream.js +37 -0
  74. package/dist/lib/jdbcwritestream.js.map +1 -0
  75. package/dist/lib/logger.d.ts +7 -0
  76. package/dist/lib/logger.js +13 -0
  77. package/dist/lib/logger.js.map +1 -0
  78. package/dist/lib/sqlutil.d.ts +1 -0
  79. package/dist/lib/sqlutil.js +18 -0
  80. package/dist/lib/sqlutil.js.map +1 -0
  81. package/dist/lib/streamTransformers.d.ts +2 -0
  82. package/dist/lib/streamTransformers.js +30 -0
  83. package/dist/lib/streamTransformers.js.map +1 -0
  84. package/dist/unit-test/hsql-spec.d.ts +1 -0
  85. package/dist/unit-test/hsql-spec.js +495 -0
  86. package/dist/unit-test/hsql-spec.js.map +1 -0
  87. package/dist/unit-test/sqlutil-spec.d.ts +1 -0
  88. package/dist/unit-test/sqlutil-spec.js +20 -0
  89. package/dist/unit-test/sqlutil-spec.js.map +1 -0
  90. package/dist/unit-test/streamTransformers-spec.d.ts +1 -0
  91. package/dist/unit-test/streamTransformers-spec.js +98 -0
  92. package/dist/unit-test/streamTransformers-spec.js.map +1 -0
  93. package/java/lib/hsqldb.jar +0 -0
  94. package/java/lib/json-simple-1.1.1.jar +0 -0
  95. package/java/lib/jt400.jar +0 -0
  96. package/java/lib/jt400wrap.jar +0 -0
  97. package/package.json +72 -0
@@ -0,0 +1,77 @@
1
+ export interface ResultStream {
2
+ close: () => Promise<void>;
3
+ read: () => Promise<string>;
4
+ }
5
+ export interface StatementWrap {
6
+ isQuerySync: () => boolean;
7
+ close: () => Promise<void>;
8
+ updated: () => Promise<number>;
9
+ getMetaData: () => Promise<string>;
10
+ asStreamSync: (bufferSize: number) => ResultStream;
11
+ asArray: () => Promise<string>;
12
+ next: () => Promise<string>;
13
+ }
14
+ export interface TablesReadStream {
15
+ close: () => Promise<void>;
16
+ read: () => Promise<string>;
17
+ getMetaData: () => Promise<string>;
18
+ }
19
+ export interface JDBCConnection {
20
+ query: (sql: string, jsonParams: string, trim: boolean) => Promise<string>;
21
+ queryAsStream: (sql: string, jsonParams: string, bufferSize: number) => Promise<ResultStream>;
22
+ execute: (sql: string, jsonParams: string) => Promise<StatementWrap>;
23
+ getTablesAsStreamSync: (catalog: string, schema: string, tableName: string) => TablesReadStream;
24
+ getColumns: (catalog: string, schema: string, tableNamePattern: string, columnNamePattern: string) => Promise<string>;
25
+ update: (sql: string, jsonParams: string) => Promise<number>;
26
+ batchUpdate: (sql: string, jsonParams: string) => Promise<number[]>;
27
+ insertAndGetId: (sql: string, jsonParams: string) => Promise<number>;
28
+ }
29
+ export interface Transaction extends JDBCConnection {
30
+ commit: () => Promise<void>;
31
+ rollback: () => Promise<void>;
32
+ end: () => Promise<void>;
33
+ }
34
+ export interface Pgm {
35
+ run: (jsonParams: string, timeout: number) => Promise<string>;
36
+ }
37
+ export interface MessageQ {
38
+ read: (wait: number) => Promise<string>;
39
+ sendInformational: (message: string) => Promise<void>;
40
+ }
41
+ export interface KeyedDataQueueResponse {
42
+ getData: () => Promise<string>;
43
+ write: (data: string) => Promise<void>;
44
+ }
45
+ export interface KeyedDataQ {
46
+ read: (key: string, wait: number) => Promise<string>;
47
+ readResponse: (key: string, wait: number, writeKeyLength: number) => Promise<KeyedDataQueueResponse>;
48
+ write: (key: string, data: string) => Promise<void>;
49
+ }
50
+ export interface AS400Message {
51
+ getText: () => Promise<string>;
52
+ }
53
+ export interface MessageFileHandler {
54
+ read: (messageId: string) => Promise<AS400Message>;
55
+ }
56
+ export interface IfsReadStream {
57
+ read: () => Promise<Buffer>;
58
+ }
59
+ export interface IfsWriteStream {
60
+ write: (data: Buffer) => Promise<void>;
61
+ flush: () => Promise<void>;
62
+ }
63
+ export interface JT400 extends JDBCConnection {
64
+ createTransactionSync: () => Transaction;
65
+ getPrimaryKeys: (catalog: string, schema: string, table: string) => Promise<string>;
66
+ pgmSync: (programName: string, paramsSchemaJsonStr: string, libraryName?: string, ccsid?: number) => Pgm;
67
+ openMessageQ: (name: string, isPath: boolean) => Promise<MessageQ>;
68
+ createKeyedDataQSync: (name: string) => KeyedDataQ;
69
+ openMessageFile: (path: string) => Promise<MessageFileHandler>;
70
+ createIfsReadStream: (fileName: string) => Promise<IfsReadStream>;
71
+ createIfsWriteStream: (folderPath: string, fileName: string, append: boolean, ccsid?: number) => Promise<IfsWriteStream>;
72
+ listIfsFiles: (folderName: string) => Promise<string[]>;
73
+ moveIfsFile: (fileName: string, newFileName: string) => Promise<boolean>;
74
+ deleteIfsFile: (fileName: string) => Promise<boolean>;
75
+ getIfsFileMetadata: (fileName: string) => Promise<string>;
76
+ close: () => Promise<void>;
77
+ }
@@ -0,0 +1,3 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ //# sourceMappingURL=JT400.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"JT400.js","sourceRoot":"./ts-src/","sources":["java/JT400.ts"],"names":[],"mappings":""}
@@ -0,0 +1,11 @@
1
+ import { JT400 } from './JT400';
2
+ export type BufferToJavaType = (buffer: Buffer) => any;
3
+ export type JavaTypeToBuffer = (javaType: any) => Buffer | null;
4
+ export interface JavaBridge {
5
+ createConnection: (config: string) => Promise<JT400>;
6
+ createPool: (config: string) => JT400;
7
+ createInMemoryConnection: () => JT400;
8
+ bufferToJavaType: BufferToJavaType;
9
+ javaTypeToBuffer: JavaTypeToBuffer;
10
+ }
11
+ export declare const initJavaBridge: () => JavaBridge;
@@ -0,0 +1,45 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.initJavaBridge = void 0;
4
+ const jvm = require("java");
5
+ const path_1 = require("path");
6
+ const util_1 = require("util");
7
+ const initJavaBridge = () => {
8
+ ;
9
+ jvm.asyncOptions = {
10
+ asyncSuffix: undefined,
11
+ syncSuffix: 'Sync',
12
+ promiseSuffix: '',
13
+ promisify: util_1.promisify,
14
+ };
15
+ jvm.options.push('-Xrs');
16
+ jvm.options.push('-Dcom.ibm.as400.access.AS400.guiAvailable=false');
17
+ const jars = [
18
+ 'jt400.jar',
19
+ 'jt400wrap.jar',
20
+ 'json-simple-1.1.1.jar',
21
+ 'hsqldb.jar',
22
+ ];
23
+ jars.map((jar) => {
24
+ jvm.classpath.push((0, path_1.join)(__dirname, '/../../java/lib/', jar));
25
+ });
26
+ const JT400Class = jvm.import('nodejt400.JT400');
27
+ return {
28
+ createConnection: (config) => JT400Class.createConnection(config),
29
+ createInMemoryConnection: () => {
30
+ const HsqlClientClass = jvm.import('nodejt400.HsqlClient');
31
+ const instance = new HsqlClientClass();
32
+ return instance;
33
+ },
34
+ createPool: (config) => JT400Class.createPoolSync(config),
35
+ bufferToJavaType: (buffer) => {
36
+ const byteArray = jvm.newArray('byte', [...buffer]);
37
+ return byteArray;
38
+ },
39
+ javaTypeToBuffer: (javaType) => {
40
+ return javaType ? Buffer.from(javaType) : null;
41
+ },
42
+ };
43
+ };
44
+ exports.initJavaBridge = initJavaBridge;
45
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"./ts-src/","sources":["java/index.ts"],"names":[],"mappings":";;;AAAA,4BAA2B;AAE3B,+BAAuC;AACvC,+BAAgC;AAezB,MAAM,cAAc,GAAG,GAAe,EAAE;IAC7C,CAAC;IAAC,GAAW,CAAC,YAAY,GAAG;QAC3B,WAAW,EAAE,SAAS;QACtB,UAAU,EAAE,MAAM;QAClB,aAAa,EAAE,EAAE;QACjB,SAAS,EAAE,gBAAS;KACrB,CAAA;IACD,GAAG,CAAC,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,CAAA;IACxB,GAAG,CAAC,OAAO,CAAC,IAAI,CAAC,iDAAiD,CAAC,CAAA;IAEnE,MAAM,IAAI,GAAG;QACX,WAAW;QACX,eAAe;QACf,uBAAuB;QACvB,YAAY;KACb,CAAA;IACD,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE;QACf,GAAG,CAAC,SAAS,CAAC,IAAI,CAAC,IAAA,WAAQ,EAAC,SAAS,EAAE,kBAAkB,EAAE,GAAG,CAAC,CAAC,CAAA;IAClE,CAAC,CAAC,CAAA;IAEF,MAAM,UAAU,GAAG,GAAG,CAAC,MAAM,CAAC,iBAAiB,CAAC,CAAA;IAChD,OAAO;QACL,gBAAgB,EAAE,CAAC,MAAc,EAAE,EAAE,CAAC,UAAU,CAAC,gBAAgB,CAAC,MAAM,CAAC;QACzE,wBAAwB,EAAE,GAAG,EAAE;YAC7B,MAAM,eAAe,GAAG,GAAG,CAAC,MAAM,CAAC,sBAAsB,CAAC,CAAA;YAC1D,MAAM,QAAQ,GAAQ,IAAI,eAAe,EAAE,CAAA;YAC3C,OAAO,QAAQ,CAAA;QACjB,CAAC;QACD,UAAU,EAAE,CAAC,MAAc,EAAE,EAAE,CAAC,UAAU,CAAC,cAAc,CAAC,MAAM,CAAC;QACjE,gBAAgB,EAAE,CAAC,MAAc,EAAE,EAAE;YACnC,MAAM,SAAS,GAAG,GAAG,CAAC,QAAQ,CAAC,MAAM,EAAE,CAAC,GAAG,MAAM,CAAC,CAAC,CAAA;YACnD,OAAO,SAAS,CAAA;QAClB,CAAC;QACD,gBAAgB,EAAE,CAAC,QAAa,EAAE,EAAE;YAClC,OAAO,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,IAAI,CAAA;QAChD,CAAC;KACF,CAAA;AACH,CAAC,CAAA;AArCY,QAAA,cAAc,kBAqC1B"}
@@ -0,0 +1,5 @@
1
+ import { JDBCConnection } from '../java/JT400';
2
+ import { BaseConnection } from './baseConnection.types';
3
+ import { CreateInsertList } from './insertList';
4
+ import { Logger } from './logger';
5
+ export declare const createBaseConnection: (jdbcConnection: JDBCConnection, insertListFun: CreateInsertList, logger: Logger, inMemory: boolean) => BaseConnection;
@@ -0,0 +1,264 @@
1
+ "use strict";
2
+ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
3
+ function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
4
+ return new (P || (P = Promise))(function (resolve, reject) {
5
+ function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
6
+ function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
7
+ function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
8
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
9
+ });
10
+ };
11
+ Object.defineProperty(exports, "__esModule", { value: true });
12
+ exports.createBaseConnection = void 0;
13
+ const JSONStream_1 = require("JSONStream");
14
+ const handleError_1 = require("./handleError");
15
+ const jdbcstream_1 = require("./jdbcstream");
16
+ const jdbcwritestream_1 = require("./jdbcwritestream");
17
+ const streamTransformers_1 = require("./streamTransformers");
18
+ function convertDateValues(v) {
19
+ return v instanceof Date
20
+ ? v.toISOString().replace('T', ' ').replace('Z', '')
21
+ : v;
22
+ }
23
+ function paramsToJson(params) {
24
+ return JSON.stringify((params || []).map(convertDateValues));
25
+ }
26
+ const createBaseConnection = function (jdbcConnection, insertListFun, logger, inMemory) {
27
+ const baseConnection = {
28
+ query(sql, params = [], options) {
29
+ const jsonParams = paramsToJson(params);
30
+ const trim = options && options.trim !== undefined ? options.trim : true;
31
+ logger.debug({ sql, state: 'starting', parameterCount: params.length }, 'Executing IBMI DB query');
32
+ const startTime = process.hrtime.bigint();
33
+ return jdbcConnection
34
+ .query(sql, jsonParams, trim)
35
+ .then(JSON.parse)
36
+ .then((result) => {
37
+ logger.info({
38
+ sql,
39
+ state: 'finished',
40
+ duration: Number(process.hrtime.bigint() - startTime),
41
+ parameterCount: params.length,
42
+ resultSize: result.length,
43
+ }, 'IBMI DB query executed');
44
+ return result;
45
+ })
46
+ .catch((0, handleError_1.handleError)({ sql, params }));
47
+ },
48
+ createReadStream(sql, params = []) {
49
+ const jsonParams = paramsToJson(params);
50
+ logger.debug({ sql, state: 'starting', parameterCount: params.length }, 'Executing IBMI DB query as stream');
51
+ const startTime = process.hrtime.bigint();
52
+ const stream = new jdbcstream_1.JdbcStream({
53
+ jdbcStreamPromise: jdbcConnection
54
+ .queryAsStream(sql, jsonParams, 100)
55
+ .catch((0, handleError_1.handleError)({ sql, params })),
56
+ });
57
+ stream.on('end', () => {
58
+ logger.info({
59
+ sql,
60
+ state: 'finished',
61
+ duration: Number(process.hrtime.bigint() - startTime),
62
+ parameterCount: params.length,
63
+ }, 'IBMI DB query as stream ended');
64
+ });
65
+ return stream;
66
+ },
67
+ execute(sql, params = []) {
68
+ const jsonParams = paramsToJson(params);
69
+ logger.debug({ sql, state: 'starting', parameterCount: params.length }, 'Executing IBMI DB sql statement');
70
+ return jdbcConnection
71
+ .execute(sql, jsonParams)
72
+ .then((statement) => {
73
+ const isQuery = statement.isQuerySync();
74
+ let stream;
75
+ const stWrap = {
76
+ isQuery() {
77
+ return isQuery;
78
+ },
79
+ metadata() {
80
+ return statement.getMetaData().then(JSON.parse);
81
+ },
82
+ asArray() {
83
+ const startTime = process.hrtime.bigint();
84
+ return statement
85
+ .asArray()
86
+ .then(JSON.parse)
87
+ .then((result) => {
88
+ logger.info({
89
+ sql,
90
+ state: 'finished',
91
+ duration: Number(process.hrtime.bigint() - startTime),
92
+ parameterCount: params.length,
93
+ resultSize: result.length,
94
+ }, 'IBMI DB query executed');
95
+ return result;
96
+ });
97
+ },
98
+ asStream(options) {
99
+ const startTime = process.hrtime.bigint();
100
+ options = options || {};
101
+ stream = new jdbcstream_1.JdbcStream({
102
+ jdbcStream: statement.asStreamSync(options.bufferSize || 100),
103
+ });
104
+ stream.on('end', () => {
105
+ logger.info({
106
+ sql,
107
+ state: 'finished',
108
+ duration: Number(process.hrtime.bigint() - startTime),
109
+ parameterCount: params.length,
110
+ }, 'IBMI DB query as stream ended');
111
+ });
112
+ return stream;
113
+ },
114
+ asObjectStream(options) {
115
+ const startTime = process.hrtime.bigint();
116
+ options = options || {};
117
+ const parseJSON = (0, JSONStream_1.parse)('*');
118
+ return statement
119
+ .getMetaData()
120
+ .then(JSON.parse)
121
+ .then((metadata) => {
122
+ const transformArrayToObject = (0, streamTransformers_1.arrayToObject)(metadata);
123
+ stream = new jdbcstream_1.JdbcStream({
124
+ jdbcStream: statement.asStreamSync(options.bufferSize || 100),
125
+ });
126
+ stream.on('end', () => {
127
+ logger.info({
128
+ sql,
129
+ state: 'finished',
130
+ duration: Number(process.hrtime.bigint() - startTime),
131
+ parameterCount: params.length,
132
+ }, 'IBMI DB query as object stream ended');
133
+ });
134
+ return stream.pipe(parseJSON).pipe(transformArrayToObject);
135
+ });
136
+ },
137
+ asIterable() {
138
+ const startTime = process.hrtime.bigint();
139
+ return {
140
+ [Symbol.asyncIterator]() {
141
+ return {
142
+ next() {
143
+ return __awaiter(this, void 0, void 0, function* () {
144
+ return statement
145
+ .next()
146
+ .then(JSON.parse)
147
+ .then((value) => {
148
+ const done = !Boolean(value);
149
+ if (done) {
150
+ logger.info({
151
+ sql,
152
+ state: 'finished',
153
+ duration: Number(process.hrtime.bigint() - startTime),
154
+ parameterCount: jsonParams.length,
155
+ }, 'IBMI DB query as iterable executed');
156
+ }
157
+ return {
158
+ done,
159
+ value,
160
+ };
161
+ });
162
+ });
163
+ },
164
+ };
165
+ },
166
+ };
167
+ },
168
+ updated() {
169
+ return statement.updated();
170
+ },
171
+ close() {
172
+ if (stream) {
173
+ stream.close();
174
+ }
175
+ else {
176
+ return statement.close();
177
+ }
178
+ },
179
+ };
180
+ return stWrap;
181
+ })
182
+ .catch((0, handleError_1.handleError)({ sql, params }));
183
+ },
184
+ update(sql, params = []) {
185
+ const jsonParams = paramsToJson(params);
186
+ logger.info({ sql, state: 'starting', parameterCount: params.length }, 'Executing IBMI DB update');
187
+ const startTime = process.hrtime.bigint();
188
+ return jdbcConnection
189
+ .update(sql, jsonParams)
190
+ .then((result) => {
191
+ logger.info({
192
+ sql,
193
+ state: 'finished',
194
+ duration: Number(process.hrtime.bigint() - startTime),
195
+ parameterCount: params.length,
196
+ result: result,
197
+ }, 'IBMI DB update executed');
198
+ return result;
199
+ })
200
+ .catch((0, handleError_1.handleError)({ sql, params }));
201
+ },
202
+ createWriteStream(sql, options) {
203
+ logger.debug({ sql, state: 'starting' }, 'Executing IBMI DB write stream');
204
+ const startTime = process.hrtime.bigint();
205
+ const stream = (0, jdbcwritestream_1.createJdbcWriteStream)(baseConnection.batchUpdate, sql, options && options.bufferSize);
206
+ stream.on('finish', () => {
207
+ logger.info({
208
+ sql,
209
+ state: 'finished',
210
+ duration: Number(process.hrtime.bigint() - startTime),
211
+ }, 'IBMI DB write stream ended');
212
+ });
213
+ return stream;
214
+ },
215
+ batchUpdate(sql, paramsList) {
216
+ const params = (paramsList || []).map((row) => {
217
+ return row.map(convertDateValues);
218
+ });
219
+ const jsonParams = JSON.stringify(params);
220
+ logger.info({ sql, state: 'starting', parameterCount: params.length }, 'Executing IBMI DB batch update');
221
+ const startTime = process.hrtime.bigint();
222
+ return jdbcConnection
223
+ .batchUpdate(sql, jsonParams)
224
+ .then((res) => {
225
+ const result = Array.from(res);
226
+ logger.info({
227
+ sql,
228
+ state: 'finished',
229
+ duration: Number(process.hrtime.bigint() - startTime),
230
+ parameterCount: params.length,
231
+ result: result,
232
+ }, 'IBMI DB batch update executed');
233
+ return result;
234
+ })
235
+ .catch((0, handleError_1.handleError)({ sql, params }));
236
+ },
237
+ insertAndGetId(sql, params = []) {
238
+ const jsonParams = paramsToJson(params);
239
+ logger.info({ sql, state: 'starting', parameterCount: params.length }, 'Executing IBMI DB insert and get id');
240
+ const startTime = process.hrtime.bigint();
241
+ return jdbcConnection
242
+ .insertAndGetId(sql, jsonParams)
243
+ .then((result) => {
244
+ logger.info({
245
+ sql,
246
+ state: 'finished',
247
+ duration: Number(process.hrtime.bigint() - startTime),
248
+ parameterCount: params.length,
249
+ }, 'IBMI DB insert and get id executed');
250
+ return result;
251
+ })
252
+ .catch((0, handleError_1.handleError)({ sql, params }));
253
+ },
254
+ insertList(tableName, idColumn, list) {
255
+ return insertListFun(baseConnection)(tableName, idColumn, list);
256
+ },
257
+ isInMemory() {
258
+ return inMemory;
259
+ },
260
+ };
261
+ return baseConnection;
262
+ };
263
+ exports.createBaseConnection = createBaseConnection;
264
+ //# sourceMappingURL=baseConnection.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"baseConnection.js","sourceRoot":"./ts-src/","sources":["lib/baseConnection.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,53 @@
1
+ import { Readable, Writable } from 'stream';
2
+ export { Readable, Writable };
3
+ export interface CLOB {
4
+ type: 'CLOB';
5
+ value: string;
6
+ }
7
+ export interface BLOB {
8
+ type: 'BLOB';
9
+ value: string;
10
+ }
11
+ export type Param = string | number | Date | null | CLOB | BLOB;
12
+ export interface QueryOptions {
13
+ trim: boolean;
14
+ }
15
+ export interface Metadata {
16
+ name: string;
17
+ typeName: string;
18
+ precision: number;
19
+ scale: number;
20
+ }
21
+ export interface Statement {
22
+ isQuery: () => boolean;
23
+ metadata: () => Promise<Metadata[]>;
24
+ asArray: () => Promise<string[][]>;
25
+ asIterable: () => AsyncIterable<string[]>;
26
+ asStream: (options?: any) => Readable;
27
+ asObjectStream: (options?: any) => Promise<Readable>;
28
+ updated: () => Promise<number>;
29
+ close: Close;
30
+ }
31
+ export type Execute = (sql: string, params?: Param[]) => Promise<Statement>;
32
+ export type Query = <T>(sql: string, params?: Param[], options?: QueryOptions) => Promise<T[]>;
33
+ export type Update = (sql: string, params?: Param[]) => Promise<number>;
34
+ export type CreateReadStream = (sql: string, params?: Param[]) => Readable;
35
+ export type InsertAndGetId = (sql: string, params?: Param[]) => Promise<number>;
36
+ export interface WriteStreamOptions {
37
+ bufferSize: number;
38
+ }
39
+ export type CreateWriteStream = (sql: string, options?: WriteStreamOptions) => Writable;
40
+ export type BatchUpdate = (sql: string, params?: Param[][]) => Promise<number[]>;
41
+ export type Close = () => void;
42
+ export type InsertList = (tableName: string, idColumn: string, rows: any[]) => Promise<number[]>;
43
+ export interface BaseConnection {
44
+ query: Query;
45
+ update: Update;
46
+ isInMemory: () => boolean;
47
+ createReadStream: CreateReadStream;
48
+ insertAndGetId: InsertAndGetId;
49
+ insertList: InsertList;
50
+ createWriteStream: CreateWriteStream;
51
+ batchUpdate: BatchUpdate;
52
+ execute: Execute;
53
+ }
@@ -0,0 +1,7 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.Writable = exports.Readable = void 0;
4
+ const stream_1 = require("stream");
5
+ Object.defineProperty(exports, "Readable", { enumerable: true, get: function () { return stream_1.Readable; } });
6
+ Object.defineProperty(exports, "Writable", { enumerable: true, get: function () { return stream_1.Writable; } });
7
+ //# sourceMappingURL=baseConnection.types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"baseConnection.types.js","sourceRoot":"./ts-src/","sources":["lib/baseConnection.types.ts"],"names":[],"mappings":";;;AAAA,mCAA2C;AAClC,yFADA,iBAAQ,OACA;AAAE,yFADA,iBAAQ,OACA"}
@@ -0,0 +1,13 @@
1
+ import { BufferToJavaType, JavaTypeToBuffer } from '../java';
2
+ import { JT400 } from '../java/JT400';
3
+ import { Connection } from './connection.types';
4
+ import { CreateInsertList } from './insertList';
5
+ import { Logger } from './logger';
6
+ export declare function createConnection({ connection, insertListFun, bufferToJavaType, javaTypeToBuffer, inMemory, logger, }: {
7
+ connection: JT400;
8
+ insertListFun: CreateInsertList;
9
+ bufferToJavaType: BufferToJavaType;
10
+ javaTypeToBuffer: JavaTypeToBuffer;
11
+ inMemory: boolean;
12
+ logger: Logger;
13
+ }): Connection;
@@ -0,0 +1,143 @@
1
+ "use strict";
2
+ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
3
+ function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
4
+ return new (P || (P = Promise))(function (resolve, reject) {
5
+ function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
6
+ function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
7
+ function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
8
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
9
+ });
10
+ };
11
+ Object.defineProperty(exports, "__esModule", { value: true });
12
+ exports.createConnection = createConnection;
13
+ const util_1 = require("util");
14
+ const baseConnection_1 = require("./baseConnection");
15
+ const handleError_1 = require("./handleError");
16
+ const ifs_1 = require("./ifs");
17
+ const jdbcstream_1 = require("./jdbcstream");
18
+ const JSONStream = require("JSONStream");
19
+ const isJustNameMessageQ = function (opt) {
20
+ return opt.name !== undefined;
21
+ };
22
+ function createConnection({ connection, insertListFun, bufferToJavaType, javaTypeToBuffer, inMemory, logger, }) {
23
+ const baseConnection = (0, baseConnection_1.createBaseConnection)(connection, insertListFun, logger, inMemory);
24
+ const jt400 = Object.assign(Object.assign({}, baseConnection), { transaction(transactionFunction) {
25
+ return __awaiter(this, void 0, void 0, function* () {
26
+ const t = connection.createTransactionSync();
27
+ const transactionContext = (0, baseConnection_1.createBaseConnection)(t, insertListFun, logger, inMemory);
28
+ try {
29
+ const res = yield transactionFunction(transactionContext);
30
+ yield t.commit();
31
+ return res;
32
+ }
33
+ catch (err) {
34
+ yield t.rollback();
35
+ throw err;
36
+ }
37
+ finally {
38
+ yield t.end();
39
+ }
40
+ });
41
+ },
42
+ getTablesAsStream(opt) {
43
+ return new jdbcstream_1.JdbcStream({
44
+ jdbcStream: connection.getTablesAsStreamSync(opt.catalog, opt.schema, opt.table || '%'),
45
+ }).pipe(JSONStream.parse([true]));
46
+ },
47
+ getColumns(opt) {
48
+ return connection
49
+ .getColumns(opt.catalog, opt.schema, opt.table, opt.columns || '%')
50
+ .then(JSON.parse);
51
+ },
52
+ getPrimaryKeys(opt) {
53
+ return connection
54
+ .getPrimaryKeys(opt.catalog, opt.schema, opt.table)
55
+ .then(JSON.parse);
56
+ },
57
+ openMessageQ(opt) {
58
+ return __awaiter(this, void 0, void 0, function* () {
59
+ const hasPath = !isJustNameMessageQ(opt);
60
+ const name = isJustNameMessageQ(opt) ? opt.name : opt.path;
61
+ const dq = yield connection.openMessageQ(name, hasPath);
62
+ return {
63
+ read() {
64
+ let wait = -1;
65
+ if (arguments[0] === Object(arguments[0])) {
66
+ wait = arguments[0].wait || wait;
67
+ }
68
+ return dq.read(wait);
69
+ },
70
+ sendInformational(messageText) {
71
+ return dq.sendInformational(messageText);
72
+ },
73
+ };
74
+ });
75
+ },
76
+ createKeyedDataQ(opt) {
77
+ const dq = connection.createKeyedDataQSync(opt.name);
78
+ const readRes = function (key, wait, writeKeyLength) {
79
+ return __awaiter(this, void 0, void 0, function* () {
80
+ const res = yield dq.readResponse(key, wait, writeKeyLength);
81
+ const data = yield res.getData();
82
+ return {
83
+ data,
84
+ write: (data) => res.write(data),
85
+ };
86
+ });
87
+ };
88
+ return {
89
+ write(key, data) {
90
+ return dq.write(key, data);
91
+ },
92
+ read() {
93
+ let wait = -1;
94
+ let key;
95
+ let writeKeyLength;
96
+ if (arguments[0] === Object(arguments[0])) {
97
+ key = arguments[0].key;
98
+ wait = arguments[0].wait || wait;
99
+ writeKeyLength = arguments[0].writeKeyLength;
100
+ }
101
+ else {
102
+ key = arguments[0];
103
+ }
104
+ return writeKeyLength
105
+ ? readRes(key, wait, writeKeyLength)
106
+ : dq.read(key, wait);
107
+ },
108
+ };
109
+ },
110
+ openMessageFile(opt) {
111
+ return __awaiter(this, void 0, void 0, function* () {
112
+ const messageFile = yield connection.openMessageFile(opt.path);
113
+ return {
114
+ read() {
115
+ const messageId = arguments[0].messageId;
116
+ return messageFile.read(messageId);
117
+ },
118
+ };
119
+ });
120
+ },
121
+ ifs() {
122
+ return (0, ifs_1.ifs)(connection, bufferToJavaType, javaTypeToBuffer);
123
+ },
124
+ defineProgram(opt) {
125
+ const pgm = connection.pgmSync(opt.programName, JSON.stringify(opt.paramsSchema), opt.libraryName || '*LIBL', opt.ccsid);
126
+ return function run(params, timeout = 3) {
127
+ return pgm
128
+ .run(JSON.stringify(params), timeout)
129
+ .then(JSON.parse)
130
+ .catch((0, handleError_1.handleError)({ programName: opt.programName, params, timeout }));
131
+ };
132
+ }, pgm: (0, util_1.deprecate)(function (programName, paramsSchema, libraryName) {
133
+ return this.defineProgram({
134
+ programName,
135
+ paramsSchema,
136
+ libraryName,
137
+ });
138
+ }, 'pgm function is deprecated and will be removed in version 5.0. Please use defineProgram.'), close() {
139
+ return connection.close();
140
+ } });
141
+ return jt400;
142
+ }
143
+ //# sourceMappingURL=connection.js.map