@nesgarbo/node-jt400 5.4.3 → 6.0.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +16 -6
- package/dist-cjs/index.d.cts +18 -0
- package/dist-cjs/index.js +86 -0
- package/dist-cjs/index.js.map +1 -0
- package/dist-cjs/integration-test/call-rpg-spec.d.cts +2 -0
- package/dist-cjs/integration-test/call-rpg-spec.js +101 -0
- package/dist-cjs/integration-test/call-rpg-spec.js.map +1 -0
- package/dist-cjs/integration-test/dataq-spec.d.cts +2 -0
- package/dist-cjs/integration-test/dataq-spec.js +57 -0
- package/dist-cjs/integration-test/dataq-spec.js.map +1 -0
- package/dist-cjs/integration-test/db.d.cts +8 -0
- package/dist-cjs/integration-test/db.js +31 -0
- package/dist-cjs/integration-test/db.js.map +1 -0
- package/dist-cjs/integration-test/db2-connect-spec.d.cts +2 -0
- package/dist-cjs/integration-test/db2-connect-spec.js +42 -0
- package/dist-cjs/integration-test/db2-connect-spec.js.map +1 -0
- package/dist-cjs/integration-test/db2-pool-spec.d.cts +2 -0
- package/dist-cjs/integration-test/db2-pool-spec.js +213 -0
- package/dist-cjs/integration-test/db2-pool-spec.js.map +1 -0
- package/dist-cjs/integration-test/ifs-spec.d.cts +2 -0
- package/dist-cjs/integration-test/ifs-spec.js +140 -0
- package/dist-cjs/integration-test/ifs-spec.js.map +1 -0
- package/dist-cjs/integration-test/msgf-spec.d.cts +2 -0
- package/dist-cjs/integration-test/msgf-spec.js +34 -0
- package/dist-cjs/integration-test/msgf-spec.js.map +1 -0
- package/dist-cjs/integration-test/msgq-spec.d.cts +2 -0
- package/dist-cjs/integration-test/msgq-spec.js +45 -0
- package/dist-cjs/integration-test/msgq-spec.js.map +1 -0
- package/dist-cjs/java/JT400.d.cts +88 -0
- package/dist-cjs/java/JT400.js +16 -0
- package/dist-cjs/java/JT400.js.map +1 -0
- package/dist-cjs/java/index.d.cts +10 -0
- package/dist-cjs/java/index.js +67 -0
- package/dist-cjs/java/index.js.map +1 -0
- package/dist-cjs/lib/baseConnection.d.cts +9 -0
- package/dist-cjs/lib/baseConnection.js +367 -0
- package/dist-cjs/lib/baseConnection.js.map +1 -0
- package/dist-cjs/lib/baseConnection.types.d.cts +62 -0
- package/dist-cjs/lib/baseConnection.types.js +30 -0
- package/dist-cjs/lib/baseConnection.types.js.map +1 -0
- package/dist-cjs/lib/connection.d.cts +16 -0
- package/dist-cjs/lib/connection.js +179 -0
- package/dist-cjs/lib/connection.js.map +1 -0
- package/dist-cjs/lib/connection.types.d.cts +80 -0
- package/dist-cjs/lib/connection.types.js +16 -0
- package/dist-cjs/lib/connection.types.js.map +1 -0
- package/dist-cjs/lib/handleError.d.cts +5 -0
- package/dist-cjs/lib/handleError.js +43 -0
- package/dist-cjs/lib/handleError.js.map +1 -0
- package/dist-cjs/lib/ifs/index.d.cts +7 -0
- package/dist-cjs/lib/ifs/index.js +64 -0
- package/dist-cjs/lib/ifs/index.js.map +1 -0
- package/dist-cjs/lib/ifs/read_stream.d.cts +8 -0
- package/dist-cjs/lib/ifs/read_stream.js +61 -0
- package/dist-cjs/lib/ifs/read_stream.js.map +1 -0
- package/dist-cjs/lib/ifs/types.d.cts +19 -0
- package/dist-cjs/lib/ifs/types.js +16 -0
- package/dist-cjs/lib/ifs/types.js.map +1 -0
- package/dist-cjs/lib/ifs/write_stream.d.cts +8 -0
- package/dist-cjs/lib/ifs/write_stream.js +52 -0
- package/dist-cjs/lib/ifs/write_stream.js.map +1 -0
- package/dist-cjs/lib/inMemoryConnection.d.cts +14 -0
- package/dist-cjs/lib/inMemoryConnection.js +59 -0
- package/dist-cjs/lib/inMemoryConnection.js.map +1 -0
- package/dist-cjs/lib/insertList.d.cts +8 -0
- package/dist-cjs/lib/insertList.js +58 -0
- package/dist-cjs/lib/insertList.js.map +1 -0
- package/dist-cjs/lib/jdbcstream.d.cts +3 -0
- package/dist-cjs/lib/jdbcstream.js +66 -0
- package/dist-cjs/lib/jdbcstream.js.map +1 -0
- package/dist-cjs/lib/jdbcwritestream.d.cts +3 -0
- package/dist-cjs/lib/jdbcwritestream.js +66 -0
- package/dist-cjs/lib/jdbcwritestream.js.map +1 -0
- package/dist-cjs/lib/logger.d.cts +9 -0
- package/dist-cjs/lib/logger.js +39 -0
- package/dist-cjs/lib/logger.js.map +1 -0
- package/dist-cjs/lib/sqlutil.d.cts +3 -0
- package/dist-cjs/lib/sqlutil.js +37 -0
- package/dist-cjs/lib/sqlutil.js.map +1 -0
- package/dist-cjs/lib/streamTransformers.d.cts +5 -0
- package/dist-cjs/lib/streamTransformers.js +56 -0
- package/dist-cjs/lib/streamTransformers.js.map +1 -0
- package/dist-cjs/package.json +3 -0
- package/dist-cjs/unit-test/hsql-spec.d.cts +2 -0
- package/dist-cjs/unit-test/hsql-spec.js +488 -0
- package/dist-cjs/unit-test/hsql-spec.js.map +1 -0
- package/dist-cjs/unit-test/sqlutil-spec.d.cts +2 -0
- package/dist-cjs/unit-test/sqlutil-spec.js +43 -0
- package/dist-cjs/unit-test/sqlutil-spec.js.map +1 -0
- package/dist-cjs/unit-test/streamTransformers-spec.d.cts +2 -0
- package/dist-cjs/unit-test/streamTransformers-spec.js +121 -0
- package/dist-cjs/unit-test/streamTransformers-spec.js.map +1 -0
- package/dist-esm/index.d.ts +18 -0
- package/dist-esm/index.js +59 -0
- package/dist-esm/index.js.map +1 -0
- package/dist-esm/integration-test/call-rpg-spec.d.ts +2 -0
- package/dist-esm/integration-test/call-rpg-spec.js +79 -0
- package/dist-esm/integration-test/call-rpg-spec.js.map +1 -0
- package/dist-esm/integration-test/dataq-spec.d.ts +2 -0
- package/dist-esm/integration-test/dataq-spec.js +35 -0
- package/dist-esm/integration-test/dataq-spec.js.map +1 -0
- package/dist-esm/integration-test/db.d.ts +8 -0
- package/dist-esm/integration-test/db.js +8 -0
- package/dist-esm/integration-test/db.js.map +1 -0
- package/dist-esm/integration-test/db2-connect-spec.d.ts +2 -0
- package/dist-esm/integration-test/db2-connect-spec.js +20 -0
- package/dist-esm/integration-test/db2-connect-spec.js.map +1 -0
- package/dist-esm/integration-test/db2-pool-spec.d.ts +2 -0
- package/dist-esm/integration-test/db2-pool-spec.js +197 -0
- package/dist-esm/integration-test/db2-pool-spec.js.map +1 -0
- package/dist-esm/integration-test/ifs-spec.d.ts +2 -0
- package/dist-esm/integration-test/ifs-spec.js +118 -0
- package/dist-esm/integration-test/ifs-spec.js.map +1 -0
- package/dist-esm/integration-test/msgf-spec.d.ts +2 -0
- package/dist-esm/integration-test/msgf-spec.js +12 -0
- package/dist-esm/integration-test/msgf-spec.js.map +1 -0
- package/dist-esm/integration-test/msgq-spec.d.ts +2 -0
- package/dist-esm/integration-test/msgq-spec.js +23 -0
- package/dist-esm/integration-test/msgq-spec.js.map +1 -0
- package/{dist → dist-esm}/java/JT400.d.ts +25 -14
- package/dist-esm/java/JT400.js +1 -0
- package/dist-esm/java/JT400.js.map +1 -0
- package/dist-esm/java/index.d.ts +10 -0
- package/dist-esm/java/index.js +40 -0
- package/dist-esm/java/index.js.map +1 -0
- package/dist-esm/lib/baseConnection.d.ts +9 -0
- package/dist-esm/lib/baseConnection.js +344 -0
- package/dist-esm/lib/baseConnection.js.map +1 -0
- package/dist-esm/lib/baseConnection.types.d.ts +62 -0
- package/dist-esm/lib/baseConnection.types.js +6 -0
- package/dist-esm/lib/baseConnection.types.js.map +1 -0
- package/dist-esm/lib/connection.d.ts +16 -0
- package/dist-esm/lib/connection.js +146 -0
- package/dist-esm/lib/connection.js.map +1 -0
- package/{dist → dist-esm}/lib/connection.types.d.ts +24 -21
- package/dist-esm/lib/connection.types.js +1 -0
- package/dist-esm/lib/connection.types.js.map +1 -0
- package/dist-esm/lib/handleError.d.ts +5 -0
- package/dist-esm/lib/handleError.js +20 -0
- package/dist-esm/lib/handleError.js.map +1 -0
- package/dist-esm/lib/ifs/index.d.ts +7 -0
- package/dist-esm/lib/ifs/index.js +41 -0
- package/dist-esm/lib/ifs/index.js.map +1 -0
- package/dist-esm/lib/ifs/read_stream.d.ts +8 -0
- package/dist-esm/lib/ifs/read_stream.js +28 -0
- package/dist-esm/lib/ifs/read_stream.js.map +1 -0
- package/{dist → dist-esm}/lib/ifs/types.d.ts +5 -2
- package/dist-esm/lib/ifs/types.js +1 -0
- package/dist-esm/lib/ifs/types.js.map +1 -0
- package/dist-esm/lib/ifs/write_stream.d.ts +8 -0
- package/dist-esm/lib/ifs/write_stream.js +19 -0
- package/dist-esm/lib/ifs/write_stream.js.map +1 -0
- package/dist-esm/lib/inMemoryConnection.d.ts +14 -0
- package/dist-esm/lib/inMemoryConnection.js +36 -0
- package/dist-esm/lib/inMemoryConnection.js.map +1 -0
- package/dist-esm/lib/insertList.d.ts +8 -0
- package/dist-esm/lib/insertList.js +34 -0
- package/dist-esm/lib/insertList.js.map +1 -0
- package/dist-esm/lib/jdbcstream.d.ts +3 -0
- package/dist-esm/lib/jdbcstream.js +43 -0
- package/dist-esm/lib/jdbcstream.js.map +1 -0
- package/dist-esm/lib/jdbcwritestream.d.ts +3 -0
- package/dist-esm/lib/jdbcwritestream.js +33 -0
- package/dist-esm/lib/jdbcwritestream.js.map +1 -0
- package/{dist → dist-esm}/lib/logger.d.ts +4 -2
- package/dist-esm/lib/logger.js +16 -0
- package/dist-esm/lib/logger.js.map +1 -0
- package/dist-esm/lib/sqlutil.d.ts +3 -0
- package/dist-esm/lib/sqlutil.js +14 -0
- package/dist-esm/lib/sqlutil.js.map +1 -0
- package/dist-esm/lib/streamTransformers.d.ts +5 -0
- package/dist-esm/lib/streamTransformers.js +33 -0
- package/dist-esm/lib/streamTransformers.js.map +1 -0
- package/dist-esm/package.json +3 -0
- package/dist-esm/unit-test/hsql-spec.d.ts +2 -0
- package/dist-esm/unit-test/hsql-spec.js +466 -0
- package/dist-esm/unit-test/hsql-spec.js.map +1 -0
- package/dist-esm/unit-test/sqlutil-spec.d.ts +2 -0
- package/dist-esm/unit-test/sqlutil-spec.js +21 -0
- package/dist-esm/unit-test/sqlutil-spec.js.map +1 -0
- package/dist-esm/unit-test/streamTransformers-spec.d.ts +2 -0
- package/dist-esm/unit-test/streamTransformers-spec.js +99 -0
- package/dist-esm/unit-test/streamTransformers-spec.js.map +1 -0
- package/java/lib/jt400wrap.jar +0 -0
- package/package.json +39 -19
- package/dist/index.d.ts +0 -13
- package/dist/index.js +0 -67
- package/dist/index.js.map +0 -1
- package/dist/integration-test/call-rpg-spec.d.ts +0 -1
- package/dist/integration-test/call-rpg-spec.js +0 -88
- package/dist/integration-test/call-rpg-spec.js.map +0 -1
- package/dist/integration-test/dataq-spec.d.ts +0 -1
- package/dist/integration-test/dataq-spec.js +0 -42
- package/dist/integration-test/dataq-spec.js.map +0 -1
- package/dist/integration-test/db.d.ts +0 -2
- package/dist/integration-test/db.js +0 -8
- package/dist/integration-test/db.js.map +0 -1
- package/dist/integration-test/db2-connect-spec.d.ts +0 -1
- package/dist/integration-test/db2-connect-spec.js +0 -34
- package/dist/integration-test/db2-connect-spec.js.map +0 -1
- package/dist/integration-test/db2-pool-spec.d.ts +0 -1
- package/dist/integration-test/db2-pool-spec.js +0 -191
- package/dist/integration-test/db2-pool-spec.js.map +0 -1
- package/dist/integration-test/ifs-spec.d.ts +0 -1
- package/dist/integration-test/ifs-spec.js +0 -118
- package/dist/integration-test/ifs-spec.js.map +0 -1
- package/dist/integration-test/msgf-spec.d.ts +0 -1
- package/dist/integration-test/msgf-spec.js +0 -25
- package/dist/integration-test/msgf-spec.js.map +0 -1
- package/dist/integration-test/msgq-spec.d.ts +0 -1
- package/dist/integration-test/msgq-spec.js +0 -34
- package/dist/integration-test/msgq-spec.js.map +0 -1
- package/dist/java/JT400.js +0 -3
- package/dist/java/JT400.js.map +0 -1
- package/dist/java/index.d.ts +0 -7
- package/dist/java/index.js +0 -33
- package/dist/java/index.js.map +0 -1
- package/dist/lib/baseConnection.d.ts +0 -5
- package/dist/lib/baseConnection.js +0 -264
- package/dist/lib/baseConnection.js.map +0 -1
- package/dist/lib/baseConnection.types.d.ts +0 -53
- package/dist/lib/baseConnection.types.js +0 -7
- package/dist/lib/baseConnection.types.js.map +0 -1
- package/dist/lib/connection.d.ts +0 -10
- package/dist/lib/connection.js +0 -143
- package/dist/lib/connection.js.map +0 -1
- package/dist/lib/connection.types.js +0 -3
- package/dist/lib/connection.types.js.map +0 -1
- package/dist/lib/handleError.d.ts +0 -3
- package/dist/lib/handleError.js +0 -25
- package/dist/lib/handleError.js.map +0 -1
- package/dist/lib/ifs/index.d.ts +0 -3
- package/dist/lib/ifs/index.js +0 -45
- package/dist/lib/ifs/index.js.map +0 -1
- package/dist/lib/ifs/read_stream.d.ts +0 -6
- package/dist/lib/ifs/read_stream.js +0 -28
- package/dist/lib/ifs/read_stream.js.map +0 -1
- package/dist/lib/ifs/types.js +0 -3
- package/dist/lib/ifs/types.js.map +0 -1
- package/dist/lib/ifs/write_stream.d.ts +0 -6
- package/dist/lib/ifs/write_stream.js +0 -25
- package/dist/lib/ifs/write_stream.js.map +0 -1
- package/dist/lib/inMemoryConnection.d.ts +0 -7
- package/dist/lib/inMemoryConnection.js +0 -33
- package/dist/lib/inMemoryConnection.js.map +0 -1
- package/dist/lib/insertList.d.ts +0 -4
- package/dist/lib/insertList.js +0 -44
- package/dist/lib/insertList.js.map +0 -1
- package/dist/lib/jdbcstream.d.ts +0 -1
- package/dist/lib/jdbcstream.js +0 -50
- package/dist/lib/jdbcstream.js.map +0 -1
- package/dist/lib/jdbcwritestream.d.ts +0 -1
- package/dist/lib/jdbcwritestream.js +0 -37
- package/dist/lib/jdbcwritestream.js.map +0 -1
- package/dist/lib/logger.js +0 -13
- package/dist/lib/logger.js.map +0 -1
- package/dist/lib/sqlutil.d.ts +0 -1
- package/dist/lib/sqlutil.js +0 -18
- package/dist/lib/sqlutil.js.map +0 -1
- package/dist/lib/streamTransformers.d.ts +0 -2
- package/dist/lib/streamTransformers.js +0 -30
- package/dist/lib/streamTransformers.js.map +0 -1
- package/dist/unit-test/hsql-spec.d.ts +0 -1
- package/dist/unit-test/hsql-spec.js +0 -495
- package/dist/unit-test/hsql-spec.js.map +0 -1
- package/dist/unit-test/sqlutil-spec.d.ts +0 -1
- package/dist/unit-test/sqlutil-spec.js +0 -20
- package/dist/unit-test/sqlutil-spec.js.map +0 -1
- package/dist/unit-test/streamTransformers-spec.d.ts +0 -1
- package/dist/unit-test/streamTransformers-spec.js +0 -98
- package/dist/unit-test/streamTransformers-spec.js.map +0 -1
|
@@ -1,68 +1,69 @@
|
|
|
1
1
|
import { Readable } from 'stream';
|
|
2
|
-
import { BaseConnection, Close } from './baseConnection.types';
|
|
3
|
-
import { Ifs } from './ifs/types';
|
|
4
|
-
|
|
2
|
+
import { BaseConnection, Close } from './baseConnection.types.js';
|
|
3
|
+
import { Ifs } from './ifs/types.js';
|
|
4
|
+
|
|
5
|
+
interface ProgramDefinitionOptions {
|
|
5
6
|
programName: string;
|
|
6
7
|
paramsSchema: PgmParamType[];
|
|
7
8
|
libraryName?: string;
|
|
8
9
|
ccsid?: number;
|
|
9
10
|
}
|
|
10
|
-
|
|
11
|
+
interface PgmParamType1 {
|
|
11
12
|
name: string;
|
|
12
13
|
size: number;
|
|
13
14
|
type?: string;
|
|
14
15
|
decimals?: number;
|
|
15
16
|
}
|
|
16
|
-
|
|
17
|
+
interface PgmParamType2 {
|
|
17
18
|
name: string;
|
|
18
19
|
precision: number;
|
|
19
20
|
typeName?: string;
|
|
20
21
|
scale?: number;
|
|
21
22
|
}
|
|
22
|
-
|
|
23
|
+
interface PgmParamStructType {
|
|
23
24
|
[key: string]: PgmParamType[];
|
|
24
25
|
}
|
|
25
|
-
|
|
26
|
-
|
|
26
|
+
type PgmParamType = PgmParamType1 | PgmParamType2 | PgmParamStructType;
|
|
27
|
+
interface JustNameMessageQ {
|
|
27
28
|
name: string;
|
|
28
29
|
}
|
|
29
|
-
|
|
30
|
+
interface JustPathMessageQ {
|
|
30
31
|
path: string;
|
|
31
32
|
}
|
|
32
|
-
|
|
33
|
-
|
|
33
|
+
type MessageQOptions = JustNameMessageQ | JustPathMessageQ;
|
|
34
|
+
interface MessageQReadOptions {
|
|
34
35
|
wait?: number;
|
|
35
36
|
}
|
|
36
|
-
|
|
37
|
+
interface DataQReadOptions {
|
|
37
38
|
key: string;
|
|
38
39
|
wait?: number;
|
|
39
40
|
writeKeyLength?: number;
|
|
40
41
|
}
|
|
41
|
-
|
|
42
|
+
interface MessageFileHandlerOptions {
|
|
42
43
|
path: string;
|
|
43
44
|
}
|
|
44
|
-
|
|
45
|
+
interface MessageFileReadOptions {
|
|
45
46
|
messageId: string[7];
|
|
46
47
|
}
|
|
47
|
-
|
|
48
|
+
interface MessageQ {
|
|
48
49
|
sendInformational: (messageText: string) => Promise<void>;
|
|
49
50
|
read: (params?: MessageQReadOptions) => Promise<any> | Promise<null>;
|
|
50
51
|
}
|
|
51
|
-
|
|
52
|
+
interface DataQOptions {
|
|
52
53
|
name: string;
|
|
53
54
|
}
|
|
54
|
-
|
|
55
|
+
interface KeyedDataQ {
|
|
55
56
|
write: (key: string, data: string) => void;
|
|
56
57
|
read: (params: DataQReadOptions | string) => Promise<any>;
|
|
57
58
|
}
|
|
58
|
-
|
|
59
|
+
interface AS400Message {
|
|
59
60
|
getText: () => Promise<string>;
|
|
60
61
|
}
|
|
61
|
-
|
|
62
|
+
interface MessageFileHandler {
|
|
62
63
|
read: (params: MessageFileReadOptions) => Promise<AS400Message>;
|
|
63
64
|
}
|
|
64
|
-
|
|
65
|
-
|
|
65
|
+
type TransactionFun = (transaction: BaseConnection) => Promise<any>;
|
|
66
|
+
interface Connection extends BaseConnection {
|
|
66
67
|
pgm: (programName: string, paramsSchema: PgmParamType[], libraryName?: string) => any;
|
|
67
68
|
defineProgram: (options: ProgramDefinitionOptions) => any;
|
|
68
69
|
getTablesAsStream: (params: any) => Readable;
|
|
@@ -75,3 +76,5 @@ export interface Connection extends BaseConnection {
|
|
|
75
76
|
ifs: () => Ifs;
|
|
76
77
|
close: Close;
|
|
77
78
|
}
|
|
79
|
+
|
|
80
|
+
export type { AS400Message, Connection, DataQOptions, DataQReadOptions, JustNameMessageQ, JustPathMessageQ, KeyedDataQ, MessageFileHandler, MessageFileHandlerOptions, MessageFileReadOptions, MessageQ, MessageQOptions, MessageQReadOptions, PgmParamStructType, PgmParamType, PgmParamType1, PgmParamType2, ProgramDefinitionOptions, TransactionFun };
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
//# sourceMappingURL=connection.types.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":[],"sourcesContent":[],"mappings":"","names":[]}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
import { Oops } from "oops-error";
|
|
2
|
+
function handleError(context) {
|
|
3
|
+
return (err) => {
|
|
4
|
+
const errMsg = err.cause && err.cause.getMessageSync && err.cause.getMessageSync() || err.getMessageSync && err.getMessageSync() || err.message;
|
|
5
|
+
const start = errMsg.indexOf(": ");
|
|
6
|
+
const end = errMsg.indexOf("\n");
|
|
7
|
+
const message = start > 0 && end > 0 ? errMsg.slice(start + 2, end) : errMsg;
|
|
8
|
+
const category = message.toLowerCase().includes("connection") || errMsg.includes("java.net.UnknownHostException") ? "OperationalError" : "ProgrammerError";
|
|
9
|
+
throw new Oops({
|
|
10
|
+
message,
|
|
11
|
+
context,
|
|
12
|
+
category,
|
|
13
|
+
cause: err
|
|
14
|
+
});
|
|
15
|
+
};
|
|
16
|
+
}
|
|
17
|
+
export {
|
|
18
|
+
handleError
|
|
19
|
+
};
|
|
20
|
+
//# sourceMappingURL=handleError.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../ts-src/lib/handleError.ts"],"sourcesContent":["import { Oops } from 'oops-error'\n\nexport function handleError(context: { [key: string]: any }) {\n return (err: any) => {\n const errMsg =\n (err.cause && err.cause.getMessageSync && err.cause.getMessageSync()) ||\n (err.getMessageSync && err.getMessageSync()) ||\n err.message\n const start = errMsg.indexOf(': ')\n const end = errMsg.indexOf('\\n')\n const message = start > 0 && end > 0 ? errMsg.slice(start + 2, end) : errMsg\n const category =\n message.toLowerCase().includes('connection') ||\n errMsg.includes('java.net.UnknownHostException')\n ? 'OperationalError'\n : 'ProgrammerError'\n throw new Oops({\n message,\n context,\n category,\n cause: err,\n })\n }\n}\n"],"mappings":"AAAA,SAAS,YAAY;AAEd,SAAS,YAAY,SAAiC;AAC3D,SAAO,CAAC,QAAa;AACnB,UAAM,SACH,IAAI,SAAS,IAAI,MAAM,kBAAkB,IAAI,MAAM,eAAe,KAClE,IAAI,kBAAkB,IAAI,eAAe,KAC1C,IAAI;AACN,UAAM,QAAQ,OAAO,QAAQ,IAAI;AACjC,UAAM,MAAM,OAAO,QAAQ,IAAI;AAC/B,UAAM,UAAU,QAAQ,KAAK,MAAM,IAAI,OAAO,MAAM,QAAQ,GAAG,GAAG,IAAI;AACtE,UAAM,WACJ,QAAQ,YAAY,EAAE,SAAS,YAAY,KAC3C,OAAO,SAAS,+BAA+B,IAC3C,qBACA;AACN,UAAM,IAAI,KAAK;AAAA,MACb;AAAA,MACA;AAAA,MACA;AAAA,MACA,OAAO;AAAA,IACT,CAAC;AAAA,EACH;AACF;","names":[]}
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
import { basename, dirname } from "path";
|
|
2
|
+
import { IfsReadStream } from "./read_stream.js";
|
|
3
|
+
import { IfsWriteStream } from "./write_stream.js";
|
|
4
|
+
function ifs(connection) {
|
|
5
|
+
return {
|
|
6
|
+
createReadStream: function(fileName) {
|
|
7
|
+
const javaStream = Promise.resolve(fileName).then(function(file) {
|
|
8
|
+
return connection.createIfsReadStream(file);
|
|
9
|
+
});
|
|
10
|
+
return new IfsReadStream({
|
|
11
|
+
ifsReadStream: javaStream
|
|
12
|
+
});
|
|
13
|
+
},
|
|
14
|
+
createWriteStream: function(fileName, options = { append: false }) {
|
|
15
|
+
const javaStream = Promise.resolve(fileName).then(function(file) {
|
|
16
|
+
const folderPath = dirname(file);
|
|
17
|
+
const fileName2 = basename(file);
|
|
18
|
+
return connection.createIfsWriteStream(
|
|
19
|
+
folderPath,
|
|
20
|
+
fileName2,
|
|
21
|
+
options.append,
|
|
22
|
+
options.ccsid
|
|
23
|
+
);
|
|
24
|
+
});
|
|
25
|
+
return new IfsWriteStream({
|
|
26
|
+
ifsWriteStream: javaStream
|
|
27
|
+
});
|
|
28
|
+
},
|
|
29
|
+
listFiles: async (folderName) => {
|
|
30
|
+
const files = await connection.listIfsFiles(folderName);
|
|
31
|
+
return files || [];
|
|
32
|
+
},
|
|
33
|
+
moveFile: (fileName, newFileName) => connection.moveIfsFile(fileName, newFileName),
|
|
34
|
+
deleteFile: (fileName) => connection.deleteIfsFile(fileName),
|
|
35
|
+
fileMetadata: (fileName) => connection.getIfsFileMetadata(fileName).then(JSON.parse)
|
|
36
|
+
};
|
|
37
|
+
}
|
|
38
|
+
export {
|
|
39
|
+
ifs
|
|
40
|
+
};
|
|
41
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../../ts-src/lib/ifs/index.ts"],"sourcesContent":["import { basename, dirname } from 'path'\nimport { JT400 } from '../../java/JT400'\nimport { IfsReadStream } from './read_stream.js'\nimport { Ifs } from './types'\nimport { IfsWriteStream } from './write_stream.js'\n\nexport function ifs(\n connection: JT400,\n): Ifs {\n return {\n createReadStream: function (fileName: string | Promise<string>) {\n const javaStream = Promise.resolve(fileName).then(function (file) {\n return connection.createIfsReadStream(file)\n })\n return new IfsReadStream({\n ifsReadStream: javaStream,\n })\n },\n createWriteStream: function (\n fileName: string | Promise<string>,\n options: { append: boolean; ccsid?: number } = { append: false },\n ) {\n const javaStream = Promise.resolve(fileName).then(function (file) {\n const folderPath = dirname(file)\n const fileName = basename(file)\n return connection.createIfsWriteStream(\n folderPath,\n fileName,\n options.append,\n options.ccsid,\n )\n })\n return new IfsWriteStream({\n ifsWriteStream: javaStream,\n })\n },\n listFiles: async (folderName: string) => {\n const files = await connection.listIfsFiles(folderName)\n return files || []\n },\n moveFile: (fileName: string, newFileName: string) =>\n connection.moveIfsFile(fileName, newFileName),\n deleteFile: (fileName: string) => connection.deleteIfsFile(fileName),\n fileMetadata: (fileName: string) =>\n connection.getIfsFileMetadata(fileName).then(JSON.parse),\n }\n}\n"],"mappings":"AAAA,SAAS,UAAU,eAAe;AAElC,SAAS,qBAAqB;AAE9B,SAAS,sBAAsB;AAExB,SAAS,IACd,YACK;AACL,SAAO;AAAA,IACL,kBAAkB,SAAU,UAAoC;AAC9D,YAAM,aAAa,QAAQ,QAAQ,QAAQ,EAAE,KAAK,SAAU,MAAM;AAChE,eAAO,WAAW,oBAAoB,IAAI;AAAA,MAC5C,CAAC;AACD,aAAO,IAAI,cAAc;AAAA,QACvB,eAAe;AAAA,MACjB,CAAC;AAAA,IACH;AAAA,IACA,mBAAmB,SACjB,UACA,UAA+C,EAAE,QAAQ,MAAM,GAC/D;AACA,YAAM,aAAa,QAAQ,QAAQ,QAAQ,EAAE,KAAK,SAAU,MAAM;AAChE,cAAM,aAAa,QAAQ,IAAI;AAC/B,cAAMA,YAAW,SAAS,IAAI;AAC9B,eAAO,WAAW;AAAA,UAChB;AAAA,UACAA;AAAA,UACA,QAAQ;AAAA,UACR,QAAQ;AAAA,QACV;AAAA,MACF,CAAC;AACD,aAAO,IAAI,eAAe;AAAA,QACxB,gBAAgB;AAAA,MAClB,CAAC;AAAA,IACH;AAAA,IACA,WAAW,OAAO,eAAuB;AACvC,YAAM,QAAQ,MAAM,WAAW,aAAa,UAAU;AACtD,aAAO,SAAS,CAAC;AAAA,IACnB;AAAA,IACA,UAAU,CAAC,UAAkB,gBAC3B,WAAW,YAAY,UAAU,WAAW;AAAA,IAC9C,YAAY,CAAC,aAAqB,WAAW,cAAc,QAAQ;AAAA,IACnE,cAAc,CAAC,aACb,WAAW,mBAAmB,QAAQ,EAAE,KAAK,KAAK,KAAK;AAAA,EAC3D;AACF;","names":["fileName"]}
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
import util from "util";
|
|
2
|
+
import { Readable } from "stream";
|
|
3
|
+
function IfsReadStream(opt) {
|
|
4
|
+
Readable.call(this, { objectMode: false });
|
|
5
|
+
this._ifsReadStream = opt.ifsReadStream;
|
|
6
|
+
}
|
|
7
|
+
util.inherits(IfsReadStream, Readable);
|
|
8
|
+
IfsReadStream.prototype._read = function() {
|
|
9
|
+
const streamPromise = this._ifsReadStream;
|
|
10
|
+
streamPromise.then(
|
|
11
|
+
(stream) => stream.read().then((res) => {
|
|
12
|
+
if (res == null) {
|
|
13
|
+
this.push(null);
|
|
14
|
+
return;
|
|
15
|
+
}
|
|
16
|
+
const buf = Buffer.isBuffer(res) ? res : res instanceof Uint8Array ? Buffer.from(res) : Buffer.from(res);
|
|
17
|
+
if (buf.length === 0) {
|
|
18
|
+
this.push(null);
|
|
19
|
+
return;
|
|
20
|
+
}
|
|
21
|
+
this.push(buf);
|
|
22
|
+
})
|
|
23
|
+
).catch((err) => this.emit("error", err));
|
|
24
|
+
};
|
|
25
|
+
export {
|
|
26
|
+
IfsReadStream
|
|
27
|
+
};
|
|
28
|
+
//# sourceMappingURL=read_stream.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../../ts-src/lib/ifs/read_stream.ts"],"sourcesContent":["import util from 'util'\nimport { Readable } from 'stream'\nimport { IfsReadStream as IfsReadStreamType } from '../../java/JT400.js'\n\ntype Opt = {\n ifsReadStream: Promise<IfsReadStreamType>\n}\n\nexport function IfsReadStream(opt: Opt) {\n Readable.call(this, { objectMode: false })\n this._ifsReadStream = opt.ifsReadStream\n}\n\nutil.inherits(IfsReadStream, Readable)\n\nIfsReadStream.prototype._read = function () {\n const streamPromise: Promise<IfsReadStreamType> = this._ifsReadStream\n streamPromise\n .then((stream) =>\n stream.read().then((res: any) => {\n // java-bridge convierte byte[] -> Buffer automáticamente\n if (res == null) {\n this.push(null) // EOF\n return\n }\n\n const buf =\n Buffer.isBuffer(res) ? res : res instanceof Uint8Array ? Buffer.from(res) : Buffer.from(res as any)\n\n if (buf.length === 0) {\n this.push(null) // EOF defensivo si llega vacío\n return\n }\n\n this.push(buf)\n }),\n )\n .catch((err: any) => this.emit('error', err))\n}\n"],"mappings":"AAAA,OAAO,UAAU;AACjB,SAAS,gBAAgB;AAOlB,SAAS,cAAc,KAAU;AACtC,WAAS,KAAK,MAAM,EAAE,YAAY,MAAM,CAAC;AACzC,OAAK,iBAAiB,IAAI;AAC5B;AAEA,KAAK,SAAS,eAAe,QAAQ;AAErC,cAAc,UAAU,QAAQ,WAAY;AAC1C,QAAM,gBAA4C,KAAK;AACvD,gBACG;AAAA,IAAK,CAAC,WACL,OAAO,KAAK,EAAE,KAAK,CAAC,QAAa;AAE/B,UAAI,OAAO,MAAM;AACf,aAAK,KAAK,IAAI;AACd;AAAA,MACF;AAEA,YAAM,MACJ,OAAO,SAAS,GAAG,IAAI,MAAM,eAAe,aAAa,OAAO,KAAK,GAAG,IAAI,OAAO,KAAK,GAAU;AAEpG,UAAI,IAAI,WAAW,GAAG;AACpB,aAAK,KAAK,IAAI;AACd;AAAA,MACF;AAEA,WAAK,KAAK,GAAG;AAAA,IACf,CAAC;AAAA,EACH,EACC,MAAM,CAAC,QAAa,KAAK,KAAK,SAAS,GAAG,CAAC;AAChD;","names":[]}
|
|
@@ -1,9 +1,10 @@
|
|
|
1
1
|
import { Readable, Writable } from 'stream';
|
|
2
|
-
|
|
2
|
+
|
|
3
|
+
interface IfsFileMetadata {
|
|
3
4
|
exists: boolean;
|
|
4
5
|
length: number;
|
|
5
6
|
}
|
|
6
|
-
|
|
7
|
+
interface Ifs {
|
|
7
8
|
createReadStream: (fileName: string | Promise<string>) => Readable;
|
|
8
9
|
createWriteStream: (fileName: string | Promise<string>, options?: {
|
|
9
10
|
append: boolean;
|
|
@@ -14,3 +15,5 @@ export interface Ifs {
|
|
|
14
15
|
deleteFile: (fileName: string) => Promise<boolean>;
|
|
15
16
|
fileMetadata: (fileName: string) => Promise<IfsFileMetadata>;
|
|
16
17
|
}
|
|
18
|
+
|
|
19
|
+
export type { Ifs, IfsFileMetadata };
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
//# sourceMappingURL=types.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":[],"sourcesContent":[],"mappings":"","names":[]}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import util from "util";
|
|
2
|
+
import FlushWritable from "flushwritable";
|
|
3
|
+
function IfsWriteStream(opt) {
|
|
4
|
+
FlushWritable.call(this, { objectMode: false });
|
|
5
|
+
this._ifsWriteStream = opt.ifsWriteStream;
|
|
6
|
+
}
|
|
7
|
+
util.inherits(IfsWriteStream, FlushWritable);
|
|
8
|
+
IfsWriteStream.prototype._write = function(chunk, _, next) {
|
|
9
|
+
const writeStream = this._ifsWriteStream;
|
|
10
|
+
writeStream.then((stream) => stream.write(chunk)).then(() => next()).catch((err) => this.emit("error", err));
|
|
11
|
+
};
|
|
12
|
+
IfsWriteStream.prototype._flush = function(done) {
|
|
13
|
+
const writeStream = this._ifsWriteStream;
|
|
14
|
+
writeStream.then((stream) => stream.flush()).then(() => done()).catch((err) => done(err));
|
|
15
|
+
};
|
|
16
|
+
export {
|
|
17
|
+
IfsWriteStream
|
|
18
|
+
};
|
|
19
|
+
//# sourceMappingURL=write_stream.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../../ts-src/lib/ifs/write_stream.ts"],"sourcesContent":["import { IfsWriteStream as IfsWriteStreamType } from '../../java/JT400.js'\nimport util from 'util'\nimport FlushWritable from 'flushwritable'\n\ntype Opt = {\n ifsWriteStream: Promise<IfsWriteStreamType>\n}\n\nexport function IfsWriteStream(opt: Opt) {\n FlushWritable.call(this, { objectMode: false })\n this._ifsWriteStream = opt.ifsWriteStream\n}\n\nutil.inherits(IfsWriteStream, FlushWritable)\n\nIfsWriteStream.prototype._write = function (\n chunk: Buffer,\n _: any,\n next: (err?: any) => void,\n) {\n const writeStream: Promise<IfsWriteStreamType> = this._ifsWriteStream\n writeStream\n .then((stream) => stream.write(chunk)) // Buffer -> byte[] (auto por java-bridge)\n .then(() => next())\n .catch((err) => this.emit('error', err))\n}\n\nIfsWriteStream.prototype._flush = function (done: (err?: any) => void) {\n const writeStream: Promise<IfsWriteStreamType> = this._ifsWriteStream\n writeStream\n .then((stream) => stream.flush())\n .then(() => done())\n .catch((err) => done(err))\n}\n"],"mappings":"AACA,OAAO,UAAU;AACjB,OAAO,mBAAmB;AAMnB,SAAS,eAAe,KAAU;AACvC,gBAAc,KAAK,MAAM,EAAE,YAAY,MAAM,CAAC;AAC9C,OAAK,kBAAkB,IAAI;AAC7B;AAEA,KAAK,SAAS,gBAAgB,aAAa;AAE3C,eAAe,UAAU,SAAS,SAChC,OACA,GACA,MACA;AACA,QAAM,cAA2C,KAAK;AACtD,cACG,KAAK,CAAC,WAAW,OAAO,MAAM,KAAK,CAAC,EACpC,KAAK,MAAM,KAAK,CAAC,EACjB,MAAM,CAAC,QAAQ,KAAK,KAAK,SAAS,GAAG,CAAC;AAC3C;AAEA,eAAe,UAAU,SAAS,SAAU,MAA2B;AACrE,QAAM,cAA2C,KAAK;AACtD,cACG,KAAK,CAAC,WAAW,OAAO,MAAM,CAAC,EAC/B,KAAK,MAAM,KAAK,CAAC,EACjB,MAAM,CAAC,QAAQ,KAAK,GAAG,CAAC;AAC7B;","names":[]}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import { JavaBridge } from '../java/index.js';
|
|
2
|
+
import { Connection } from './connection.types.js';
|
|
3
|
+
import { Logger } from './logger.js';
|
|
4
|
+
import '../java/JT400.js';
|
|
5
|
+
import 'stream';
|
|
6
|
+
import './baseConnection.types.js';
|
|
7
|
+
import './ifs/types.js';
|
|
8
|
+
|
|
9
|
+
interface InMemoryConnection extends Connection {
|
|
10
|
+
mockPgm: (programName: string, fn: (input: any) => any) => InMemoryConnection;
|
|
11
|
+
}
|
|
12
|
+
declare function createInMemoryConnection(jt400Factory: JavaBridge, logger: Logger): InMemoryConnection;
|
|
13
|
+
|
|
14
|
+
export { type InMemoryConnection, createInMemoryConnection };
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
import { createConnection } from "./connection.js";
|
|
2
|
+
import { createStandardInsertList } from "./insertList.js";
|
|
3
|
+
function createInMemoryConnection(jt400Factory, logger) {
|
|
4
|
+
const javaCon = jt400Factory.createInMemoryConnection();
|
|
5
|
+
const instance = createConnection({
|
|
6
|
+
connection: javaCon,
|
|
7
|
+
insertListFun: createStandardInsertList,
|
|
8
|
+
logger,
|
|
9
|
+
inMemory: true
|
|
10
|
+
});
|
|
11
|
+
const pgmMockRegistry = {};
|
|
12
|
+
const defaultPgm = instance.defineProgram;
|
|
13
|
+
instance.defineProgram = function(opt) {
|
|
14
|
+
const defaultFunc = defaultPgm(opt);
|
|
15
|
+
return function(params, timeout = 3) {
|
|
16
|
+
const mockFunc = pgmMockRegistry[opt.programName];
|
|
17
|
+
if (mockFunc) {
|
|
18
|
+
const res = mockFunc(params, timeout);
|
|
19
|
+
return res.then ? res : Promise.resolve(res);
|
|
20
|
+
}
|
|
21
|
+
return defaultFunc(params, timeout);
|
|
22
|
+
};
|
|
23
|
+
};
|
|
24
|
+
const inMemoryconnection = {
|
|
25
|
+
...instance,
|
|
26
|
+
mockPgm(programName, func) {
|
|
27
|
+
pgmMockRegistry[programName] = func;
|
|
28
|
+
return inMemoryconnection;
|
|
29
|
+
}
|
|
30
|
+
};
|
|
31
|
+
return inMemoryconnection;
|
|
32
|
+
}
|
|
33
|
+
export {
|
|
34
|
+
createInMemoryConnection
|
|
35
|
+
};
|
|
36
|
+
//# sourceMappingURL=inMemoryConnection.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../ts-src/lib/inMemoryConnection.ts"],"sourcesContent":["import { JavaBridge } from '../java/index.js'\nimport { createConnection } from './connection.js'\nimport { Connection } from './connection.types.js'\nimport { createStandardInsertList } from './insertList.js'\nimport { Logger } from './logger.js'\n\nexport interface InMemoryConnection extends Connection {\n mockPgm: (programName: string, fn: (input: any) => any) => InMemoryConnection\n}\n\nexport function createInMemoryConnection(\n jt400Factory: JavaBridge,\n logger: Logger,\n): InMemoryConnection {\n const javaCon = jt400Factory.createInMemoryConnection()\n const instance = createConnection({\n connection: javaCon,\n insertListFun: createStandardInsertList,\n logger,\n inMemory: true,\n })\n const pgmMockRegistry = {}\n\n const defaultPgm = instance.defineProgram\n instance.defineProgram = function (opt) {\n const defaultFunc = defaultPgm(opt)\n return function (params, timeout = 3) {\n const mockFunc = pgmMockRegistry[opt.programName]\n\n if (mockFunc) {\n const res = mockFunc(params, timeout)\n return res.then ? res : Promise.resolve(res)\n }\n\n return defaultFunc(params, timeout)\n }\n }\n const inMemoryconnection: InMemoryConnection = {\n ...instance,\n mockPgm(programName, func) {\n pgmMockRegistry[programName] = func\n return inMemoryconnection\n },\n }\n return inMemoryconnection\n}\n"],"mappings":"AACA,SAAS,wBAAwB;AAEjC,SAAS,gCAAgC;AAOlC,SAAS,yBACd,cACA,QACoB;AACpB,QAAM,UAAU,aAAa,yBAAyB;AACtD,QAAM,WAAW,iBAAiB;AAAA,IAChC,YAAY;AAAA,IACZ,eAAe;AAAA,IACf;AAAA,IACA,UAAU;AAAA,EACZ,CAAC;AACD,QAAM,kBAAkB,CAAC;AAEzB,QAAM,aAAa,SAAS;AAC5B,WAAS,gBAAgB,SAAU,KAAK;AACtC,UAAM,cAAc,WAAW,GAAG;AAClC,WAAO,SAAU,QAAQ,UAAU,GAAG;AACpC,YAAM,WAAW,gBAAgB,IAAI,WAAW;AAEhD,UAAI,UAAU;AACZ,cAAM,MAAM,SAAS,QAAQ,OAAO;AACpC,eAAO,IAAI,OAAO,MAAM,QAAQ,QAAQ,GAAG;AAAA,MAC7C;AAEA,aAAO,YAAY,QAAQ,OAAO;AAAA,IACpC;AAAA,EACF;AACA,QAAM,qBAAyC;AAAA,IAC7C,GAAG;AAAA,IACH,QAAQ,aAAa,MAAM;AACzB,sBAAgB,WAAW,IAAI;AAC/B,aAAO;AAAA,IACT;AAAA,EACF;AACA,SAAO;AACT;","names":[]}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import { BaseConnection, InsertList } from './baseConnection.types.js';
|
|
2
|
+
import 'stream';
|
|
3
|
+
|
|
4
|
+
type CreateInsertList = (connection: BaseConnection) => InsertList;
|
|
5
|
+
declare const createInsertListInOneStatment: CreateInsertList;
|
|
6
|
+
declare const createStandardInsertList: CreateInsertList;
|
|
7
|
+
|
|
8
|
+
export { type CreateInsertList, createInsertListInOneStatment, createStandardInsertList };
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
import { toInsertSql } from "./sqlutil.js";
|
|
2
|
+
const createInsertListInOneStatment = (jt400) => (tableName, idColumn, list) => {
|
|
3
|
+
if (!list || list.length === 0) {
|
|
4
|
+
return Promise.resolve([]);
|
|
5
|
+
}
|
|
6
|
+
const sql = "SELECT " + idColumn + " FROM NEW TABLE(" + toInsertSql(tableName, list) + ")";
|
|
7
|
+
const params = list.map(Object.values).reduce((arr, valueArr) => {
|
|
8
|
+
return arr.concat(valueArr);
|
|
9
|
+
}, []);
|
|
10
|
+
return jt400.query(sql, params).then((idList) => {
|
|
11
|
+
return idList.map((idObj) => idObj[idColumn.toUpperCase()]);
|
|
12
|
+
});
|
|
13
|
+
};
|
|
14
|
+
const createStandardInsertList = (jt400) => (tableName, _, list) => {
|
|
15
|
+
const idList = [];
|
|
16
|
+
const pushToIdList = idList.push.bind(idList);
|
|
17
|
+
return list.map((record) => {
|
|
18
|
+
return {
|
|
19
|
+
sql: toInsertSql(tableName, [record]),
|
|
20
|
+
values: Object.values(record)
|
|
21
|
+
};
|
|
22
|
+
}).reduce((soFar, sqlObj) => {
|
|
23
|
+
return soFar.then(() => {
|
|
24
|
+
return jt400.insertAndGetId(sqlObj.sql, sqlObj.values);
|
|
25
|
+
}).then(pushToIdList);
|
|
26
|
+
}, Promise.resolve()).then(() => {
|
|
27
|
+
return idList;
|
|
28
|
+
});
|
|
29
|
+
};
|
|
30
|
+
export {
|
|
31
|
+
createInsertListInOneStatment,
|
|
32
|
+
createStandardInsertList
|
|
33
|
+
};
|
|
34
|
+
//# sourceMappingURL=insertList.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../ts-src/lib/insertList.ts"],"sourcesContent":["import { BaseConnection, InsertList } from './baseConnection.types.js'\nimport { toInsertSql } from './sqlutil.js'\n\nexport type CreateInsertList = (connection: BaseConnection) => InsertList\nexport const createInsertListInOneStatment: CreateInsertList =\n (jt400) => (tableName, idColumn, list) => {\n if (!list || list.length === 0) {\n return Promise.resolve([])\n }\n const sql =\n 'SELECT ' +\n idColumn +\n ' FROM NEW TABLE(' +\n toInsertSql(tableName, list) +\n ')'\n const params = list.map(Object.values).reduce((arr, valueArr) => {\n return arr.concat(valueArr)\n }, [])\n\n return jt400.query<any>(sql, params).then((idList) => {\n return idList.map((idObj) => idObj[idColumn.toUpperCase()])\n })\n }\n\nexport const createStandardInsertList: CreateInsertList =\n (jt400) => (tableName, _, list) => {\n const idList = []\n const pushToIdList = idList.push.bind(idList)\n\n return list\n .map((record) => {\n return {\n sql: toInsertSql(tableName, [record]),\n values: Object.values(record),\n }\n })\n .reduce((soFar, sqlObj: any) => {\n return soFar\n .then(() => {\n return jt400.insertAndGetId(sqlObj.sql, sqlObj.values)\n })\n .then(pushToIdList)\n }, Promise.resolve())\n .then(() => {\n return idList\n })\n }\n"],"mappings":"AACA,SAAS,mBAAmB;AAGrB,MAAM,gCACX,CAAC,UAAU,CAAC,WAAW,UAAU,SAAS;AACxC,MAAI,CAAC,QAAQ,KAAK,WAAW,GAAG;AAC9B,WAAO,QAAQ,QAAQ,CAAC,CAAC;AAAA,EAC3B;AACA,QAAM,MACJ,YACA,WACA,qBACA,YAAY,WAAW,IAAI,IAC3B;AACF,QAAM,SAAS,KAAK,IAAI,OAAO,MAAM,EAAE,OAAO,CAAC,KAAK,aAAa;AAC/D,WAAO,IAAI,OAAO,QAAQ;AAAA,EAC5B,GAAG,CAAC,CAAC;AAEL,SAAO,MAAM,MAAW,KAAK,MAAM,EAAE,KAAK,CAAC,WAAW;AACpD,WAAO,OAAO,IAAI,CAAC,UAAU,MAAM,SAAS,YAAY,CAAC,CAAC;AAAA,EAC5D,CAAC;AACH;AAEK,MAAM,2BACX,CAAC,UAAU,CAAC,WAAW,GAAG,SAAS;AACjC,QAAM,SAAS,CAAC;AAChB,QAAM,eAAe,OAAO,KAAK,KAAK,MAAM;AAE5C,SAAO,KACJ,IAAI,CAAC,WAAW;AACf,WAAO;AAAA,MACL,KAAK,YAAY,WAAW,CAAC,MAAM,CAAC;AAAA,MACpC,QAAQ,OAAO,OAAO,MAAM;AAAA,IAC9B;AAAA,EACF,CAAC,EACA,OAAO,CAAC,OAAO,WAAgB;AAC9B,WAAO,MACJ,KAAK,MAAM;AACV,aAAO,MAAM,eAAe,OAAO,KAAK,OAAO,MAAM;AAAA,IACvD,CAAC,EACA,KAAK,YAAY;AAAA,EACtB,GAAG,QAAQ,QAAQ,CAAC,EACnB,KAAK,MAAM;AACV,WAAO;AAAA,EACT,CAAC;AACL;","names":[]}
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
import { inherits } from "util";
|
|
2
|
+
import { Readable } from "stream";
|
|
3
|
+
function JdbcStream(opt) {
|
|
4
|
+
Readable.call(this, { objectMode: false });
|
|
5
|
+
this._jdbcStream = opt.jdbcStream;
|
|
6
|
+
this._jdbcStreamPromise = opt.jdbcStreamPromise;
|
|
7
|
+
}
|
|
8
|
+
inherits(JdbcStream, Readable);
|
|
9
|
+
function read(context) {
|
|
10
|
+
if (context._closed) {
|
|
11
|
+
context._jdbcStream.close().catch((err) => {
|
|
12
|
+
if (err) {
|
|
13
|
+
context.emit("error", err);
|
|
14
|
+
}
|
|
15
|
+
});
|
|
16
|
+
context.push(null);
|
|
17
|
+
} else {
|
|
18
|
+
context._jdbcStream.read().then((res) => {
|
|
19
|
+
context.push(res);
|
|
20
|
+
}).catch((err) => {
|
|
21
|
+
context.emit("error", err);
|
|
22
|
+
});
|
|
23
|
+
}
|
|
24
|
+
}
|
|
25
|
+
JdbcStream.prototype.close = function() {
|
|
26
|
+
this._closed = true;
|
|
27
|
+
};
|
|
28
|
+
JdbcStream.prototype._read = function() {
|
|
29
|
+
if (!this._jdbcStream) {
|
|
30
|
+
this._jdbcStreamPromise.then((stream) => {
|
|
31
|
+
this._jdbcStream = stream;
|
|
32
|
+
read(this);
|
|
33
|
+
}).catch((err) => {
|
|
34
|
+
this.emit("error", err);
|
|
35
|
+
});
|
|
36
|
+
} else {
|
|
37
|
+
read(this);
|
|
38
|
+
}
|
|
39
|
+
};
|
|
40
|
+
export {
|
|
41
|
+
JdbcStream
|
|
42
|
+
};
|
|
43
|
+
//# sourceMappingURL=jdbcstream.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../ts-src/lib/jdbcstream.ts"],"sourcesContent":["import { inherits } from 'util'\nimport { Readable } from 'stream'\n\nexport function JdbcStream(opt) {\n Readable.call(this, { objectMode: false })\n this._jdbcStream = opt.jdbcStream\n this._jdbcStreamPromise = opt.jdbcStreamPromise\n}\n\ninherits(JdbcStream, Readable)\n\nfunction read(context) {\n if (context._closed) {\n context._jdbcStream.close().catch((err) => {\n if (err) {\n context.emit('error', err)\n }\n })\n context.push(null)\n } else {\n context._jdbcStream\n .read()\n .then((res) => {\n context.push(res)\n })\n .catch((err) => {\n context.emit('error', err)\n })\n }\n}\n\nJdbcStream.prototype.close = function () {\n this._closed = true\n}\n\nJdbcStream.prototype._read = function () {\n if (!this._jdbcStream) {\n this._jdbcStreamPromise\n .then((stream) => {\n this._jdbcStream = stream\n read(this)\n })\n .catch((err) => {\n this.emit('error', err)\n })\n } else {\n read(this)\n }\n}\n"],"mappings":"AAAA,SAAS,gBAAgB;AACzB,SAAS,gBAAgB;AAElB,SAAS,WAAW,KAAK;AAC9B,WAAS,KAAK,MAAM,EAAE,YAAY,MAAM,CAAC;AACzC,OAAK,cAAc,IAAI;AACvB,OAAK,qBAAqB,IAAI;AAChC;AAEA,SAAS,YAAY,QAAQ;AAE7B,SAAS,KAAK,SAAS;AACrB,MAAI,QAAQ,SAAS;AACnB,YAAQ,YAAY,MAAM,EAAE,MAAM,CAAC,QAAQ;AACzC,UAAI,KAAK;AACP,gBAAQ,KAAK,SAAS,GAAG;AAAA,MAC3B;AAAA,IACF,CAAC;AACD,YAAQ,KAAK,IAAI;AAAA,EACnB,OAAO;AACL,YAAQ,YACL,KAAK,EACL,KAAK,CAAC,QAAQ;AACb,cAAQ,KAAK,GAAG;AAAA,IAClB,CAAC,EACA,MAAM,CAAC,QAAQ;AACd,cAAQ,KAAK,SAAS,GAAG;AAAA,IAC3B,CAAC;AAAA,EACL;AACF;AAEA,WAAW,UAAU,QAAQ,WAAY;AACvC,OAAK,UAAU;AACjB;AAEA,WAAW,UAAU,QAAQ,WAAY;AACvC,MAAI,CAAC,KAAK,aAAa;AACrB,SAAK,mBACF,KAAK,CAAC,WAAW;AAChB,WAAK,cAAc;AACnB,WAAK,IAAI;AAAA,IACX,CAAC,EACA,MAAM,CAAC,QAAQ;AACd,WAAK,KAAK,SAAS,GAAG;AAAA,IACxB,CAAC;AAAA,EACL,OAAO;AACL,SAAK,IAAI;AAAA,EACX;AACF;","names":[]}
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
import FlushWritable from "flushwritable";
|
|
2
|
+
function createJdbcWriteStream(batchUpdate, statement, bufferSize) {
|
|
3
|
+
bufferSize = bufferSize || 100;
|
|
4
|
+
const ws = new FlushWritable({ objectMode: true });
|
|
5
|
+
let dataBuffer = [];
|
|
6
|
+
function flush(done) {
|
|
7
|
+
const d = dataBuffer;
|
|
8
|
+
dataBuffer = [];
|
|
9
|
+
batchUpdate(statement, d).then(() => {
|
|
10
|
+
done();
|
|
11
|
+
}).catch(done);
|
|
12
|
+
}
|
|
13
|
+
ws._write = function(chunck, _, next) {
|
|
14
|
+
dataBuffer.push(chunck);
|
|
15
|
+
if (dataBuffer.length >= bufferSize) {
|
|
16
|
+
flush(next);
|
|
17
|
+
} else {
|
|
18
|
+
next();
|
|
19
|
+
}
|
|
20
|
+
};
|
|
21
|
+
ws._flush = function(done) {
|
|
22
|
+
if (dataBuffer.length) {
|
|
23
|
+
flush(done);
|
|
24
|
+
} else {
|
|
25
|
+
done();
|
|
26
|
+
}
|
|
27
|
+
};
|
|
28
|
+
return ws;
|
|
29
|
+
}
|
|
30
|
+
export {
|
|
31
|
+
createJdbcWriteStream
|
|
32
|
+
};
|
|
33
|
+
//# sourceMappingURL=jdbcwritestream.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../ts-src/lib/jdbcwritestream.ts"],"sourcesContent":["import FlushWritable from 'flushwritable'\n\nexport function createJdbcWriteStream(batchUpdate, statement, bufferSize) {\n bufferSize = bufferSize || 100\n const ws = new FlushWritable({ objectMode: true })\n let dataBuffer: any[] = []\n\n function flush(done) {\n const d = dataBuffer\n dataBuffer = []\n batchUpdate(statement, d)\n .then(() => {\n done()\n })\n .catch(done)\n }\n\n ws._write = function (chunck, _, next) {\n dataBuffer.push(chunck)\n if (dataBuffer.length >= bufferSize) {\n flush(next)\n } else {\n next()\n }\n }\n\n ws._flush = function (done) {\n if (dataBuffer.length) {\n flush(done)\n } else {\n done()\n }\n }\n\n return ws\n}\n"],"mappings":"AAAA,OAAO,mBAAmB;AAEnB,SAAS,sBAAsB,aAAa,WAAW,YAAY;AACxE,eAAa,cAAc;AAC3B,QAAM,KAAK,IAAI,cAAc,EAAE,YAAY,KAAK,CAAC;AACjD,MAAI,aAAoB,CAAC;AAEzB,WAAS,MAAM,MAAM;AACnB,UAAM,IAAI;AACV,iBAAa,CAAC;AACd,gBAAY,WAAW,CAAC,EACrB,KAAK,MAAM;AACV,WAAK;AAAA,IACP,CAAC,EACA,MAAM,IAAI;AAAA,EACf;AAEA,KAAG,SAAS,SAAU,QAAQ,GAAG,MAAM;AACrC,eAAW,KAAK,MAAM;AACtB,QAAI,WAAW,UAAU,YAAY;AACnC,YAAM,IAAI;AAAA,IACZ,OAAO;AACL,WAAK;AAAA,IACP;AAAA,EACF;AAEA,KAAG,SAAS,SAAU,MAAM;AAC1B,QAAI,WAAW,QAAQ;AACrB,YAAM,IAAI;AAAA,IACZ,OAAO;AACL,WAAK;AAAA,IACP;AAAA,EACF;AAEA,SAAO;AACT;","names":[]}
|
|
@@ -1,7 +1,9 @@
|
|
|
1
|
-
|
|
1
|
+
interface Logger {
|
|
2
2
|
debug: (message: any, ...args: any[]) => void;
|
|
3
3
|
info: (message: any, ...args: any[]) => void;
|
|
4
4
|
warn: (message: any, ...args: any[]) => void;
|
|
5
5
|
error: (message: any, ...args: any[]) => void;
|
|
6
6
|
}
|
|
7
|
-
|
|
7
|
+
declare const createDefaultLogger: () => Logger;
|
|
8
|
+
|
|
9
|
+
export { type Logger, createDefaultLogger };
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../ts-src/lib/logger.ts"],"sourcesContent":["export interface Logger {\n debug: (message: any, ...args: any[]) => void\n info: (message: any, ...args: any[]) => void\n warn: (message: any, ...args: any[]) => void\n error: (message: any, ...args: any[]) => void\n}\n\nexport const createDefaultLogger = (): Logger => {\n // Default logger that does nothing\n return {\n debug: () => {},\n info: () => {},\n warn: () => {},\n error: () => {},\n }\n}\n"],"mappings":"AAOO,MAAM,sBAAsB,MAAc;AAE/C,SAAO;AAAA,IACL,OAAO,MAAM;AAAA,IAAC;AAAA,IACd,MAAM,MAAM;AAAA,IAAC;AAAA,IACb,MAAM,MAAM;AAAA,IAAC;AAAA,IACb,OAAO,MAAM;AAAA,IAAC;AAAA,EAChB;AACF;","names":[]}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
function recordToValues(record) {
|
|
2
|
+
const str = Object.keys(record).map(() => "?").join(", ");
|
|
3
|
+
return "(" + str + ")";
|
|
4
|
+
}
|
|
5
|
+
function toInsertSql(tableName, records) {
|
|
6
|
+
const first = records[0];
|
|
7
|
+
const keys = Object.keys(first);
|
|
8
|
+
const sql = `INSERT INTO ${tableName} (${keys.join(", ")}) VALUES${records.map(recordToValues).join(", ")}`;
|
|
9
|
+
return sql;
|
|
10
|
+
}
|
|
11
|
+
export {
|
|
12
|
+
toInsertSql
|
|
13
|
+
};
|
|
14
|
+
//# sourceMappingURL=sqlutil.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../ts-src/lib/sqlutil.ts"],"sourcesContent":["function recordToValues(record) {\n const str = Object.keys(record)\n .map(() => '?')\n .join(', ')\n return '(' + str + ')'\n}\n\n/**\n * Returns insert statement for records\n */\nexport function toInsertSql(tableName: string, records: any[]): string {\n const first = records[0]\n const keys = Object.keys(first)\n const sql = `INSERT INTO ${tableName} (${keys.join(', ')}) VALUES${records\n .map(recordToValues)\n .join(', ')}`\n return sql\n}\n"],"mappings":"AAAA,SAAS,eAAe,QAAQ;AAC9B,QAAM,MAAM,OAAO,KAAK,MAAM,EAC3B,IAAI,MAAM,GAAG,EACb,KAAK,IAAI;AACZ,SAAO,MAAM,MAAM;AACrB;AAKO,SAAS,YAAY,WAAmB,SAAwB;AACrE,QAAM,QAAQ,QAAQ,CAAC;AACvB,QAAM,OAAO,OAAO,KAAK,KAAK;AAC9B,QAAM,MAAM,eAAe,SAAS,KAAK,KAAK,KAAK,IAAI,CAAC,WAAW,QAChE,IAAI,cAAc,EAClB,KAAK,IAAI,CAAC;AACb,SAAO;AACT;","names":[]}
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
import { Transform } from "stream";
|
|
2
|
+
function arrayToObject(metadata) {
|
|
3
|
+
const columnNames = metadata.map((md) => md.name);
|
|
4
|
+
const transformer = new Transform({
|
|
5
|
+
objectMode: true,
|
|
6
|
+
transform(chunk, _, callback) {
|
|
7
|
+
try {
|
|
8
|
+
if (!Array.isArray(chunk)) {
|
|
9
|
+
return callback(new Error("Expected an array chunk as input"));
|
|
10
|
+
}
|
|
11
|
+
if (chunk.length !== columnNames.length) {
|
|
12
|
+
return callback(
|
|
13
|
+
new Error(
|
|
14
|
+
`Array chunk length ${chunk.length} does not match columns length ${columnNames.length}`
|
|
15
|
+
)
|
|
16
|
+
);
|
|
17
|
+
}
|
|
18
|
+
const obj = {};
|
|
19
|
+
for (let i = 0; i < columnNames.length; i++) {
|
|
20
|
+
obj[columnNames[i]] = chunk[i];
|
|
21
|
+
}
|
|
22
|
+
callback(null, obj);
|
|
23
|
+
} catch (err) {
|
|
24
|
+
callback(err);
|
|
25
|
+
}
|
|
26
|
+
}
|
|
27
|
+
});
|
|
28
|
+
return transformer;
|
|
29
|
+
}
|
|
30
|
+
export {
|
|
31
|
+
arrayToObject
|
|
32
|
+
};
|
|
33
|
+
//# sourceMappingURL=streamTransformers.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../ts-src/lib/streamTransformers.ts"],"sourcesContent":["import { Transform } from 'stream'\n\nexport function arrayToObject(metadata) {\n const columnNames = metadata.map((md) => md.name)\n\n const transformer = new Transform({\n objectMode: true,\n transform(chunk, _, callback) {\n try {\n if (!Array.isArray(chunk)) {\n return callback(new Error('Expected an array chunk as input'))\n }\n\n if (chunk.length !== columnNames.length) {\n return callback(\n new Error(\n `Array chunk length ${chunk.length} does not match columns length ${columnNames.length}`,\n ),\n )\n }\n\n const obj = {}\n for (let i = 0; i < columnNames.length; i++) {\n obj[columnNames[i]] = chunk[i]\n }\n\n callback(null, obj)\n } catch (err) {\n callback(err)\n }\n },\n })\n\n return transformer\n}\n"],"mappings":"AAAA,SAAS,iBAAiB;AAEnB,SAAS,cAAc,UAAU;AACtC,QAAM,cAAc,SAAS,IAAI,CAAC,OAAO,GAAG,IAAI;AAEhD,QAAM,cAAc,IAAI,UAAU;AAAA,IAChC,YAAY;AAAA,IACZ,UAAU,OAAO,GAAG,UAAU;AAC5B,UAAI;AACF,YAAI,CAAC,MAAM,QAAQ,KAAK,GAAG;AACzB,iBAAO,SAAS,IAAI,MAAM,kCAAkC,CAAC;AAAA,QAC/D;AAEA,YAAI,MAAM,WAAW,YAAY,QAAQ;AACvC,iBAAO;AAAA,YACL,IAAI;AAAA,cACF,sBAAsB,MAAM,MAAM,kCAAkC,YAAY,MAAM;AAAA,YACxF;AAAA,UACF;AAAA,QACF;AAEA,cAAM,MAAM,CAAC;AACb,iBAAS,IAAI,GAAG,IAAI,YAAY,QAAQ,KAAK;AAC3C,cAAI,YAAY,CAAC,CAAC,IAAI,MAAM,CAAC;AAAA,QAC/B;AAEA,iBAAS,MAAM,GAAG;AAAA,MACpB,SAAS,KAAK;AACZ,iBAAS,GAAG;AAAA,MACd;AAAA,IACF;AAAA,EACF,CAAC;AAED,SAAO;AACT;","names":[]}
|