@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.
- package/README.md +330 -369
- package/dist-cjs/index.d.cts +12 -5
- package/dist-cjs/index.js.map +1 -1
- package/dist-cjs/java/JT400.d.cts +3 -3
- package/dist-cjs/java/JT400.js.map +1 -1
- package/dist-cjs/java/index.js +4 -3
- package/dist-cjs/java/index.js.map +1 -1
- package/dist-cjs/lib/baseConnection.js +124 -166
- package/dist-cjs/lib/baseConnection.js.map +1 -1
- package/dist-cjs/lib/baseConnection.types.d.cts +11 -7
- package/dist-cjs/lib/baseConnection.types.js.map +1 -1
- package/dist-cjs/lib/connection.js +12 -25
- package/dist-cjs/lib/connection.js.map +1 -1
- package/dist-cjs/lib/connection.types.d.cts +39 -12
- package/dist-cjs/lib/connection.types.js.map +1 -1
- package/dist-cjs/lib/handleError.d.cts +1 -3
- package/dist-cjs/lib/handleError.js +3 -2
- package/dist-cjs/lib/handleError.js.map +1 -1
- package/dist-cjs/lib/ifs/read_stream.d.cts +6 -1
- package/dist-cjs/lib/ifs/read_stream.js +23 -32
- package/dist-cjs/lib/ifs/read_stream.js.map +1 -1
- package/dist-cjs/lib/ifs/write_stream.d.cts +7 -1
- package/dist-cjs/lib/ifs/write_stream.js +13 -24
- package/dist-cjs/lib/ifs/write_stream.js.map +1 -1
- package/dist-cjs/lib/inMemoryConnection.d.cts +1 -1
- package/dist-cjs/lib/inMemoryConnection.js +4 -4
- package/dist-cjs/lib/inMemoryConnection.js.map +1 -1
- package/dist-cjs/lib/insertList.js +12 -13
- package/dist-cjs/lib/insertList.js.map +1 -1
- package/dist-cjs/lib/jdbcstream.d.cts +16 -1
- package/dist-cjs/lib/jdbcstream.js +31 -36
- package/dist-cjs/lib/jdbcstream.js.map +1 -1
- package/dist-cjs/lib/jdbcwritestream.d.cts +4 -1
- package/dist-cjs/lib/jdbcwritestream.js +7 -20
- package/dist-cjs/lib/jdbcwritestream.js.map +1 -1
- package/dist-cjs/lib/logger.d.cts +4 -4
- package/dist-cjs/lib/logger.js.map +1 -1
- package/dist-cjs/lib/sqlutil.d.cts +4 -1
- package/dist-cjs/lib/sqlutil.js +1 -0
- package/dist-cjs/lib/sqlutil.js.map +1 -1
- package/dist-cjs/lib/streamTransformers.d.cts +2 -1
- package/dist-cjs/lib/streamTransformers.js +1 -1
- package/dist-cjs/lib/streamTransformers.js.map +1 -1
- package/dist-cjs/typings/jsonstream.d.js +1 -0
- package/dist-cjs/typings/jsonstream.d.js.map +1 -0
- package/dist-esm/index.d.ts +12 -5
- package/dist-esm/index.js.map +1 -1
- package/dist-esm/java/JT400.d.ts +3 -3
- package/dist-esm/java/index.js +3 -10
- package/dist-esm/java/index.js.map +1 -1
- package/dist-esm/lib/baseConnection.js +124 -166
- package/dist-esm/lib/baseConnection.js.map +1 -1
- package/dist-esm/lib/baseConnection.types.d.ts +11 -7
- package/dist-esm/lib/baseConnection.types.js.map +1 -1
- package/dist-esm/lib/connection.js +12 -25
- package/dist-esm/lib/connection.js.map +1 -1
- package/dist-esm/lib/connection.types.d.ts +39 -12
- package/dist-esm/lib/handleError.d.ts +1 -3
- package/dist-esm/lib/handleError.js +3 -2
- package/dist-esm/lib/handleError.js.map +1 -1
- package/dist-esm/lib/ifs/read_stream.d.ts +6 -1
- package/dist-esm/lib/ifs/read_stream.js +23 -22
- package/dist-esm/lib/ifs/read_stream.js.map +1 -1
- package/dist-esm/lib/ifs/write_stream.d.ts +7 -1
- package/dist-esm/lib/ifs/write_stream.js +13 -14
- package/dist-esm/lib/ifs/write_stream.js.map +1 -1
- package/dist-esm/lib/inMemoryConnection.d.ts +1 -1
- package/dist-esm/lib/inMemoryConnection.js +4 -4
- package/dist-esm/lib/inMemoryConnection.js.map +1 -1
- package/dist-esm/lib/insertList.js +12 -13
- package/dist-esm/lib/insertList.js.map +1 -1
- package/dist-esm/lib/jdbcstream.d.ts +16 -1
- package/dist-esm/lib/jdbcstream.js +31 -36
- package/dist-esm/lib/jdbcstream.js.map +1 -1
- package/dist-esm/lib/jdbcwritestream.d.ts +4 -1
- package/dist-esm/lib/jdbcwritestream.js +7 -10
- package/dist-esm/lib/jdbcwritestream.js.map +1 -1
- package/dist-esm/lib/logger.d.ts +4 -4
- package/dist-esm/lib/logger.js.map +1 -1
- package/dist-esm/lib/sqlutil.d.ts +4 -1
- package/dist-esm/lib/sqlutil.js +1 -0
- package/dist-esm/lib/sqlutil.js.map +1 -1
- package/dist-esm/lib/streamTransformers.d.ts +2 -1
- package/dist-esm/lib/streamTransformers.js +1 -1
- package/dist-esm/lib/streamTransformers.js.map +1 -1
- package/package.json +16 -21
- package/dist-cjs/integration-test/call-rpg-spec.d.cts +0 -2
- package/dist-cjs/integration-test/call-rpg-spec.js +0 -101
- package/dist-cjs/integration-test/call-rpg-spec.js.map +0 -1
- package/dist-cjs/integration-test/dataq-spec.d.cts +0 -2
- package/dist-cjs/integration-test/dataq-spec.js +0 -57
- package/dist-cjs/integration-test/dataq-spec.js.map +0 -1
- package/dist-cjs/integration-test/db.d.cts +0 -8
- package/dist-cjs/integration-test/db.js +0 -31
- package/dist-cjs/integration-test/db.js.map +0 -1
- package/dist-cjs/integration-test/db2-connect-spec.d.cts +0 -2
- package/dist-cjs/integration-test/db2-connect-spec.js +0 -42
- package/dist-cjs/integration-test/db2-connect-spec.js.map +0 -1
- package/dist-cjs/integration-test/db2-pool-spec.d.cts +0 -2
- package/dist-cjs/integration-test/db2-pool-spec.js +0 -213
- package/dist-cjs/integration-test/db2-pool-spec.js.map +0 -1
- package/dist-cjs/integration-test/ifs-spec.d.cts +0 -2
- package/dist-cjs/integration-test/ifs-spec.js +0 -140
- package/dist-cjs/integration-test/ifs-spec.js.map +0 -1
- package/dist-cjs/integration-test/msgf-spec.d.cts +0 -2
- package/dist-cjs/integration-test/msgf-spec.js +0 -34
- package/dist-cjs/integration-test/msgf-spec.js.map +0 -1
- package/dist-cjs/integration-test/msgq-spec.d.cts +0 -2
- package/dist-cjs/integration-test/msgq-spec.js +0 -45
- package/dist-cjs/integration-test/msgq-spec.js.map +0 -1
- package/dist-cjs/unit-test/hsql-spec.d.cts +0 -2
- package/dist-cjs/unit-test/hsql-spec.js +0 -488
- package/dist-cjs/unit-test/hsql-spec.js.map +0 -1
- package/dist-cjs/unit-test/sqlutil-spec.d.cts +0 -2
- package/dist-cjs/unit-test/sqlutil-spec.js +0 -43
- package/dist-cjs/unit-test/sqlutil-spec.js.map +0 -1
- package/dist-cjs/unit-test/streamTransformers-spec.d.cts +0 -2
- package/dist-cjs/unit-test/streamTransformers-spec.js +0 -121
- package/dist-cjs/unit-test/streamTransformers-spec.js.map +0 -1
- package/dist-esm/integration-test/call-rpg-spec.d.ts +0 -2
- package/dist-esm/integration-test/call-rpg-spec.js +0 -79
- package/dist-esm/integration-test/call-rpg-spec.js.map +0 -1
- package/dist-esm/integration-test/dataq-spec.d.ts +0 -2
- package/dist-esm/integration-test/dataq-spec.js +0 -35
- package/dist-esm/integration-test/dataq-spec.js.map +0 -1
- package/dist-esm/integration-test/db.d.ts +0 -8
- package/dist-esm/integration-test/db.js +0 -8
- package/dist-esm/integration-test/db.js.map +0 -1
- package/dist-esm/integration-test/db2-connect-spec.d.ts +0 -2
- package/dist-esm/integration-test/db2-connect-spec.js +0 -20
- package/dist-esm/integration-test/db2-connect-spec.js.map +0 -1
- package/dist-esm/integration-test/db2-pool-spec.d.ts +0 -2
- package/dist-esm/integration-test/db2-pool-spec.js +0 -197
- package/dist-esm/integration-test/db2-pool-spec.js.map +0 -1
- package/dist-esm/integration-test/ifs-spec.d.ts +0 -2
- package/dist-esm/integration-test/ifs-spec.js +0 -118
- package/dist-esm/integration-test/ifs-spec.js.map +0 -1
- package/dist-esm/integration-test/msgf-spec.d.ts +0 -2
- package/dist-esm/integration-test/msgf-spec.js +0 -12
- package/dist-esm/integration-test/msgf-spec.js.map +0 -1
- package/dist-esm/integration-test/msgq-spec.d.ts +0 -2
- package/dist-esm/integration-test/msgq-spec.js +0 -23
- package/dist-esm/integration-test/msgq-spec.js.map +0 -1
- package/dist-esm/unit-test/hsql-spec.d.ts +0 -2
- package/dist-esm/unit-test/hsql-spec.js +0 -466
- package/dist-esm/unit-test/hsql-spec.js.map +0 -1
- package/dist-esm/unit-test/sqlutil-spec.d.ts +0 -2
- package/dist-esm/unit-test/sqlutil-spec.js +0 -21
- package/dist-esm/unit-test/sqlutil-spec.js.map +0 -1
- package/dist-esm/unit-test/streamTransformers-spec.d.ts +0 -2
- package/dist-esm/unit-test/streamTransformers-spec.js +0 -99
- package/dist-esm/unit-test/streamTransformers-spec.js.map +0 -1
|
@@ -92,15 +92,9 @@ function createConnection({
|
|
|
92
92
|
const name = isJustNameMessageQ(opt) ? opt.name : opt.path;
|
|
93
93
|
const dq = await connection.openMessageQ(name, hasPath);
|
|
94
94
|
return {
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
read() {
|
|
99
|
-
let wait = -1;
|
|
100
|
-
if (arguments[0] === Object(arguments[0])) {
|
|
101
|
-
wait = arguments[0].wait || wait;
|
|
102
|
-
}
|
|
103
|
-
return dq.read(wait);
|
|
95
|
+
read(params) {
|
|
96
|
+
const wait = params?.wait ?? -1;
|
|
97
|
+
return dq.read(wait).then((json) => json ? JSON.parse(json) : null);
|
|
104
98
|
},
|
|
105
99
|
sendInformational(messageText) {
|
|
106
100
|
return dq.sendInformational(messageText);
|
|
@@ -109,7 +103,7 @@ function createConnection({
|
|
|
109
103
|
},
|
|
110
104
|
createKeyedDataQ(opt) {
|
|
111
105
|
const dq = connection.createKeyedDataQSync(opt.name);
|
|
112
|
-
const readRes = async
|
|
106
|
+
const readRes = async (key, wait, writeKeyLength) => {
|
|
113
107
|
const res = await dq.readResponse(key, wait, writeKeyLength);
|
|
114
108
|
const data = await res.getData();
|
|
115
109
|
return {
|
|
@@ -121,17 +115,11 @@ function createConnection({
|
|
|
121
115
|
write(key, data) {
|
|
122
116
|
return dq.write(key, data);
|
|
123
117
|
},
|
|
124
|
-
read() {
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
let writeKeyLength;
|
|
128
|
-
if (arguments[0] === Object(arguments[0])) {
|
|
129
|
-
key = arguments[0].key;
|
|
130
|
-
wait = arguments[0].wait || wait;
|
|
131
|
-
writeKeyLength = arguments[0].writeKeyLength;
|
|
132
|
-
} else {
|
|
133
|
-
key = arguments[0];
|
|
118
|
+
read(params) {
|
|
119
|
+
if (typeof params === "string") {
|
|
120
|
+
return dq.read(params, -1);
|
|
134
121
|
}
|
|
122
|
+
const { key, wait = -1, writeKeyLength } = params;
|
|
135
123
|
return writeKeyLength ? readRes(key, wait, writeKeyLength) : dq.read(key, wait);
|
|
136
124
|
}
|
|
137
125
|
};
|
|
@@ -139,9 +127,8 @@ function createConnection({
|
|
|
139
127
|
async openMessageFile(opt) {
|
|
140
128
|
const messageFile = await connection.openMessageFile(opt.path);
|
|
141
129
|
return {
|
|
142
|
-
read() {
|
|
143
|
-
|
|
144
|
-
return messageFile.read(messageId);
|
|
130
|
+
read(params) {
|
|
131
|
+
return messageFile.read(params.messageId);
|
|
145
132
|
}
|
|
146
133
|
};
|
|
147
134
|
},
|
|
@@ -160,12 +147,12 @@ function createConnection({
|
|
|
160
147
|
};
|
|
161
148
|
},
|
|
162
149
|
pgm: (0, import_util.deprecate)(function(programName, paramsSchema, libraryName) {
|
|
163
|
-
return
|
|
150
|
+
return jt400.defineProgram({
|
|
164
151
|
programName,
|
|
165
152
|
paramsSchema,
|
|
166
153
|
libraryName
|
|
167
154
|
});
|
|
168
|
-
}, "pgm function is deprecated and will be removed in version
|
|
155
|
+
}, "pgm function is deprecated and will be removed in version 7.0. Please use defineProgram."),
|
|
169
156
|
close() {
|
|
170
157
|
return connection.close();
|
|
171
158
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../ts-src/lib/connection.ts"],"sourcesContent":["import { deprecate } from 'util'\nimport { JT400 } from '../java/JT400.js'\nimport { createBaseConnection } from './baseConnection.js'\nimport {\n Connection,\n JustNameMessageQ,\n MessageFileHandlerOptions,\n MessageQOptions,\n ProgramDefinitionOptions,\n} from './connection.types.js'\nimport { handleError } from './handleError.js'\nimport { ifs as createIfs } from './ifs/index.js'\nimport { CreateInsertList } from './insertList.js'\nimport { JdbcStream } from './jdbcstream.js'\nimport JSONStream from 'JSONStream'\nimport { Logger } from './logger.js'\n\nconst isJustNameMessageQ = function (\n opt: MessageQOptions,\n): opt is JustNameMessageQ {\n return (opt as JustNameMessageQ).name !== undefined\n}\n\nexport function createConnection({\n connection,\n insertListFun,\n inMemory,\n logger,\n}: {\n connection: JT400\n insertListFun: CreateInsertList\n inMemory: boolean\n logger: Logger\n}): Connection {\n const baseConnection = createBaseConnection(\n connection,\n insertListFun,\n logger,\n inMemory,\n )\n const jt400: Connection = {\n ...baseConnection,\n async transaction(transactionFunction) {\n const t = connection.createTransactionSync()\n const transactionContext = createBaseConnection(\n t,\n insertListFun,\n logger,\n inMemory,\n )\n\n try {\n const res = await transactionFunction(transactionContext)\n await t.commit()\n return res\n } catch (err) {\n await t.rollback()\n throw err\n } finally {\n await t.end()\n }\n },\n getTablesAsStream(opt) {\n return new JdbcStream({\n jdbcStream: connection.getTablesAsStreamSync(\n opt.catalog,\n opt.schema,\n opt.table || '%',\n ),\n }).pipe(JSONStream.parse([true]))\n },\n getColumns(opt) {\n return connection\n .getColumns(opt.catalog, opt.schema, opt.table, opt.columns || '%')\n .then(JSON.parse)\n },\n getPrimaryKeys(opt) {\n return connection\n .getPrimaryKeys(opt.catalog, opt.schema, opt.table)\n .then(JSON.parse)\n },\n async openMessageQ(opt) {\n const hasPath = !isJustNameMessageQ(opt)\n const name = isJustNameMessageQ(opt) ? opt.name : opt.path\n const dq = await connection.openMessageQ(name, hasPath)\n return {\n
|
|
1
|
+
{"version":3,"sources":["../../ts-src/lib/connection.ts"],"sourcesContent":["import { deprecate } from 'util'\nimport { JT400 } from '../java/JT400.js'\nimport { createBaseConnection } from './baseConnection.js'\nimport {\n Connection,\n DataQReadOptions,\n JustNameMessageQ,\n MessageFileHandlerOptions,\n MessageFileReadOptions,\n MessageQOptions,\n MessageQReadOptions,\n PgmParamType,\n ProgramDefinitionOptions,\n} from './connection.types.js'\nimport { handleError } from './handleError.js'\nimport { ifs as createIfs } from './ifs/index.js'\nimport { CreateInsertList } from './insertList.js'\nimport { JdbcStream } from './jdbcstream.js'\nimport JSONStream from 'JSONStream'\nimport { Logger } from './logger.js'\n\nconst isJustNameMessageQ = function (\n opt: MessageQOptions,\n): opt is JustNameMessageQ {\n return (opt as JustNameMessageQ).name !== undefined\n}\n\nexport function createConnection({\n connection,\n insertListFun,\n inMemory,\n logger,\n}: {\n connection: JT400\n insertListFun: CreateInsertList\n inMemory: boolean\n logger: Logger\n}): Connection {\n const baseConnection = createBaseConnection(\n connection,\n insertListFun,\n logger,\n inMemory,\n )\n const jt400: Connection = {\n ...baseConnection,\n async transaction(transactionFunction) {\n const t = connection.createTransactionSync()\n const transactionContext = createBaseConnection(\n t,\n insertListFun,\n logger,\n inMemory,\n )\n\n try {\n const res = await transactionFunction(transactionContext)\n await t.commit()\n return res\n } catch (err) {\n await t.rollback()\n throw err\n } finally {\n await t.end()\n }\n },\n getTablesAsStream(opt) {\n return new JdbcStream({\n jdbcStream: connection.getTablesAsStreamSync(\n opt.catalog,\n opt.schema,\n opt.table || '%',\n ),\n }).pipe(JSONStream.parse([true]))\n },\n getColumns(opt) {\n return connection\n .getColumns(opt.catalog, opt.schema, opt.table, opt.columns || '%')\n .then(JSON.parse)\n },\n getPrimaryKeys(opt) {\n return connection\n .getPrimaryKeys(opt.catalog, opt.schema, opt.table)\n .then(JSON.parse)\n },\n async openMessageQ(opt) {\n const hasPath = !isJustNameMessageQ(opt)\n const name = isJustNameMessageQ(opt) ? opt.name : opt.path\n const dq = await connection.openMessageQ(name, hasPath)\n return {\n read(params?: MessageQReadOptions) {\n const wait = params?.wait ?? -1\n return dq.read(wait).then((json) => json ? JSON.parse(json) : null)\n },\n sendInformational(messageText) {\n return dq.sendInformational(messageText)\n },\n }\n },\n createKeyedDataQ(opt) {\n const dq = connection.createKeyedDataQSync(opt.name)\n const readRes = async (key: string, wait: number, writeKeyLength: number) => {\n const res = await dq.readResponse(key, wait, writeKeyLength)\n const data = await res.getData()\n return {\n data,\n write: (data: string) => res.write(data),\n }\n }\n return {\n write(key, data) {\n return dq.write(key, data)\n },\n read(params: DataQReadOptions | string) {\n if (typeof params === 'string') {\n return dq.read(params, -1)\n }\n const { key, wait = -1, writeKeyLength } = params\n return writeKeyLength\n ? readRes(key, wait, writeKeyLength)\n : dq.read(key, wait)\n },\n }\n },\n async openMessageFile(opt: MessageFileHandlerOptions) {\n const messageFile = await connection.openMessageFile(opt.path)\n return {\n read(params: MessageFileReadOptions) {\n return messageFile.read(params.messageId)\n },\n }\n },\n ifs() {\n return createIfs(connection)\n },\n defineProgram(opt: ProgramDefinitionOptions) {\n const pgm = connection.pgmSync(\n opt.programName,\n JSON.stringify(opt.paramsSchema),\n opt.libraryName || '*LIBL',\n opt.ccsid,\n )\n return function run(params, timeout = 3) {\n return pgm\n .run(JSON.stringify(params), timeout)\n .then(JSON.parse)\n .catch(handleError({ programName: opt.programName, params, timeout }))\n }\n },\n pgm: deprecate(function (programName: string, paramsSchema: PgmParamType[], libraryName?: string) {\n return jt400.defineProgram({\n programName,\n paramsSchema,\n libraryName,\n })\n }, 'pgm function is deprecated and will be removed in version 7.0. Please use defineProgram.'),\n close() {\n return connection.close()\n },\n }\n\n return jt400\n}\n"],"mappings":"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","names":["JSONStream","data","createIfs"]}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { Readable } from 'stream';
|
|
2
|
-
import { BaseConnection, Close } from './baseConnection.types.cjs';
|
|
2
|
+
import { BaseConnection, Param, Metadata, Close } from './baseConnection.types.cjs';
|
|
3
3
|
import { Ifs } from './ifs/types.cjs';
|
|
4
4
|
|
|
5
5
|
interface ProgramDefinitionOptions {
|
|
@@ -43,18 +43,26 @@ interface MessageFileHandlerOptions {
|
|
|
43
43
|
path: string;
|
|
44
44
|
}
|
|
45
45
|
interface MessageFileReadOptions {
|
|
46
|
-
messageId: string
|
|
46
|
+
messageId: string;
|
|
47
|
+
}
|
|
48
|
+
interface MessageQMessage {
|
|
49
|
+
text: string;
|
|
50
|
+
[key: string]: unknown;
|
|
47
51
|
}
|
|
48
52
|
interface MessageQ {
|
|
49
53
|
sendInformational: (messageText: string) => Promise<void>;
|
|
50
|
-
read: (params?: MessageQReadOptions) => Promise<
|
|
54
|
+
read: (params?: MessageQReadOptions) => Promise<MessageQMessage | null>;
|
|
51
55
|
}
|
|
52
56
|
interface DataQOptions {
|
|
53
57
|
name: string;
|
|
54
58
|
}
|
|
59
|
+
interface DataQReadResult {
|
|
60
|
+
data: string;
|
|
61
|
+
write: (data: string) => Promise<void>;
|
|
62
|
+
}
|
|
55
63
|
interface KeyedDataQ {
|
|
56
64
|
write: (key: string, data: string) => void;
|
|
57
|
-
read: (params: DataQReadOptions | string) => Promise<
|
|
65
|
+
read: (params: DataQReadOptions | string) => Promise<string | DataQReadResult>;
|
|
58
66
|
}
|
|
59
67
|
interface AS400Message {
|
|
60
68
|
getText: () => Promise<string>;
|
|
@@ -62,14 +70,33 @@ interface AS400Message {
|
|
|
62
70
|
interface MessageFileHandler {
|
|
63
71
|
read: (params: MessageFileReadOptions) => Promise<AS400Message>;
|
|
64
72
|
}
|
|
65
|
-
type TransactionFun = (transaction: BaseConnection) => Promise<
|
|
73
|
+
type TransactionFun<T = unknown> = (transaction: BaseConnection) => Promise<T>;
|
|
74
|
+
interface GetTablesParams {
|
|
75
|
+
catalog?: string;
|
|
76
|
+
schema: string;
|
|
77
|
+
table?: string;
|
|
78
|
+
}
|
|
79
|
+
type ColumnInfo = Metadata;
|
|
80
|
+
interface PrimaryKeyInfo {
|
|
81
|
+
name: string;
|
|
82
|
+
[key: string]: unknown;
|
|
83
|
+
}
|
|
66
84
|
interface Connection extends BaseConnection {
|
|
67
|
-
pgm: (programName: string, paramsSchema: PgmParamType[], libraryName?: string) =>
|
|
68
|
-
defineProgram: (options: ProgramDefinitionOptions) =>
|
|
69
|
-
getTablesAsStream: (params:
|
|
70
|
-
getColumns: (params:
|
|
71
|
-
|
|
72
|
-
|
|
85
|
+
pgm: (programName: string, paramsSchema: PgmParamType[], libraryName?: string) => (params: Record<string, Param>, timeout?: number) => Promise<unknown>;
|
|
86
|
+
defineProgram: (options: ProgramDefinitionOptions) => (params: Record<string, Param>, timeout?: number) => Promise<unknown>;
|
|
87
|
+
getTablesAsStream: (params: GetTablesParams) => Readable;
|
|
88
|
+
getColumns: (params: {
|
|
89
|
+
catalog?: string;
|
|
90
|
+
schema: string;
|
|
91
|
+
table: string;
|
|
92
|
+
columns?: string;
|
|
93
|
+
}) => Promise<ColumnInfo[]>;
|
|
94
|
+
getPrimaryKeys: (params: {
|
|
95
|
+
catalog?: string;
|
|
96
|
+
schema?: string;
|
|
97
|
+
table: string;
|
|
98
|
+
}) => Promise<PrimaryKeyInfo[]>;
|
|
99
|
+
transaction: <T = unknown>(fn: TransactionFun<T>) => Promise<T>;
|
|
73
100
|
openMessageQ: (params: MessageQOptions) => Promise<MessageQ>;
|
|
74
101
|
createKeyedDataQ: (params: DataQOptions) => KeyedDataQ;
|
|
75
102
|
openMessageFile: (params: MessageFileHandlerOptions) => Promise<MessageFileHandler>;
|
|
@@ -77,4 +104,4 @@ interface Connection extends BaseConnection {
|
|
|
77
104
|
close: Close;
|
|
78
105
|
}
|
|
79
106
|
|
|
80
|
-
export type { AS400Message, Connection, DataQOptions, DataQReadOptions, JustNameMessageQ, JustPathMessageQ, KeyedDataQ, MessageFileHandler, MessageFileHandlerOptions, MessageFileReadOptions, MessageQ, MessageQOptions, MessageQReadOptions, PgmParamStructType, PgmParamType, PgmParamType1, PgmParamType2, ProgramDefinitionOptions, TransactionFun };
|
|
107
|
+
export type { AS400Message, ColumnInfo, Connection, DataQOptions, DataQReadOptions, DataQReadResult, GetTablesParams, JustNameMessageQ, JustPathMessageQ, KeyedDataQ, MessageFileHandler, MessageFileHandlerOptions, MessageFileReadOptions, MessageQ, MessageQMessage, MessageQOptions, MessageQReadOptions, PgmParamStructType, PgmParamType, PgmParamType1, PgmParamType2, PrimaryKeyInfo, ProgramDefinitionOptions, TransactionFun };
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../ts-src/lib/connection.types.ts"],"sourcesContent":["import { Readable } from 'stream'\nimport { BaseConnection, Close } from './baseConnection.types.js'\nimport { Ifs } from './ifs/types.js'\n\nexport interface ProgramDefinitionOptions {\n programName: string\n paramsSchema: PgmParamType[]\n libraryName?: string\n ccsid?: number\n}\n\nexport interface PgmParamType1 {\n name: string\n size: number\n type?: string\n decimals?: number\n}\n\nexport interface PgmParamType2 {\n name: string\n precision: number\n typeName?: string\n scale?: number\n}\n\nexport interface PgmParamStructType {\n [key: string]: PgmParamType[]\n}\n\nexport type PgmParamType = PgmParamType1 | PgmParamType2 | PgmParamStructType\n\nexport interface JustNameMessageQ {\n name: string\n}\nexport interface JustPathMessageQ {\n path: string\n}\nexport type MessageQOptions = JustNameMessageQ | JustPathMessageQ\n\nexport interface MessageQReadOptions {\n wait?: number\n}\n\nexport interface DataQReadOptions {\n key: string\n wait?: number\n writeKeyLength?: number\n}\nexport interface MessageFileHandlerOptions {\n /** Message File Location, e.g. /QSYS.LIB/YOURLIBRARY.LIB/YOURMSGFILE.MSGF */\n path: string\n}\nexport interface MessageFileReadOptions {\n /** Message Key */\n messageId: string[
|
|
1
|
+
{"version":3,"sources":["../../ts-src/lib/connection.types.ts"],"sourcesContent":["import { Readable } from 'stream'\nimport { BaseConnection, Close, Metadata, Param } from './baseConnection.types.js'\nimport { Ifs } from './ifs/types.js'\n\nexport interface ProgramDefinitionOptions {\n programName: string\n paramsSchema: PgmParamType[]\n libraryName?: string\n ccsid?: number\n}\n\nexport interface PgmParamType1 {\n name: string\n size: number\n type?: string\n decimals?: number\n}\n\nexport interface PgmParamType2 {\n name: string\n precision: number\n typeName?: string\n scale?: number\n}\n\nexport interface PgmParamStructType {\n [key: string]: PgmParamType[]\n}\n\nexport type PgmParamType = PgmParamType1 | PgmParamType2 | PgmParamStructType\n\nexport interface JustNameMessageQ {\n name: string\n}\nexport interface JustPathMessageQ {\n path: string\n}\nexport type MessageQOptions = JustNameMessageQ | JustPathMessageQ\n\nexport interface MessageQReadOptions {\n wait?: number\n}\n\nexport interface DataQReadOptions {\n key: string\n wait?: number\n writeKeyLength?: number\n}\nexport interface MessageFileHandlerOptions {\n /** Message File Location, e.g. /QSYS.LIB/YOURLIBRARY.LIB/YOURMSGFILE.MSGF */\n path: string\n}\nexport interface MessageFileReadOptions {\n /** Message Key */\n messageId: string\n}\n\nexport interface MessageQMessage {\n text: string\n [key: string]: unknown\n}\n\nexport interface MessageQ {\n sendInformational: (messageText: string) => Promise<void>\n read: (params?: MessageQReadOptions) => Promise<MessageQMessage | null>\n}\n\nexport interface DataQOptions {\n name: string\n}\n\nexport interface DataQReadResult {\n data: string\n write: (data: string) => Promise<void>\n}\n\nexport interface KeyedDataQ {\n write: (key: string, data: string) => void\n read: (params: DataQReadOptions | string) => Promise<string | DataQReadResult>\n}\n\nexport interface AS400Message {\n getText: () => Promise<string>\n}\n\nexport interface MessageFileHandler {\n read: (params: MessageFileReadOptions) => Promise<AS400Message>\n}\n\nexport type TransactionFun<T = unknown> = (transaction: BaseConnection) => Promise<T>\n\nexport interface GetTablesParams {\n catalog?: string\n schema: string\n table?: string\n}\n\nexport type ColumnInfo = Metadata\n\nexport interface PrimaryKeyInfo {\n name: string\n [key: string]: unknown\n}\n\nexport interface Connection extends BaseConnection {\n pgm: (\n programName: string,\n paramsSchema: PgmParamType[],\n libraryName?: string,\n ) => (params: Record<string, Param>, timeout?: number) => Promise<unknown>\n defineProgram: (options: ProgramDefinitionOptions) => (params: Record<string, Param>, timeout?: number) => Promise<unknown>\n getTablesAsStream: (params: GetTablesParams) => Readable\n getColumns: (params: { catalog?: string; schema: string; table: string; columns?: string }) => Promise<ColumnInfo[]>\n getPrimaryKeys: (params: { catalog?: string; schema?: string; table: string }) => Promise<PrimaryKeyInfo[]>\n transaction: <T = unknown>(fn: TransactionFun<T>) => Promise<T>\n openMessageQ: (params: MessageQOptions) => Promise<MessageQ>\n createKeyedDataQ: (params: DataQOptions) => KeyedDataQ\n openMessageFile: (\n params: MessageFileHandlerOptions,\n ) => Promise<MessageFileHandler>\n ifs: () => Ifs\n close: Close\n}\n"],"mappings":";;;;;;;;;;;;;AAAA;AAAA;","names":[]}
|
|
@@ -23,7 +23,8 @@ module.exports = __toCommonJS(handleError_exports);
|
|
|
23
23
|
var import_oops_error = require("oops-error");
|
|
24
24
|
function handleError(context) {
|
|
25
25
|
return (err) => {
|
|
26
|
-
const
|
|
26
|
+
const e = err;
|
|
27
|
+
const errMsg = e.cause?.getMessageSync?.() ?? e.getMessageSync?.() ?? e.message ?? String(err);
|
|
27
28
|
const start = errMsg.indexOf(": ");
|
|
28
29
|
const end = errMsg.indexOf("\n");
|
|
29
30
|
const message = start > 0 && end > 0 ? errMsg.slice(start + 2, end) : errMsg;
|
|
@@ -32,7 +33,7 @@ function handleError(context) {
|
|
|
32
33
|
message,
|
|
33
34
|
context,
|
|
34
35
|
category,
|
|
35
|
-
cause: err
|
|
36
|
+
cause: err instanceof Error ? err : new Error(String(err))
|
|
36
37
|
});
|
|
37
38
|
};
|
|
38
39
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../ts-src/lib/handleError.ts"],"sourcesContent":["import { Oops } from 'oops-error'\n\nexport function handleError(context:
|
|
1
|
+
{"version":3,"sources":["../../ts-src/lib/handleError.ts"],"sourcesContent":["import { Oops } from 'oops-error'\n\ntype JavaBridgeError = {\n message?: string\n cause?: { getMessageSync?: () => string }\n getMessageSync?: () => string\n}\n\nexport function handleError(context: Record<string, unknown>) {\n return (err: unknown) => {\n const e = err as JavaBridgeError\n const errMsg: string =\n e.cause?.getMessageSync?.() ??\n e.getMessageSync?.() ??\n e.message ??\n String(err)\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 instanceof Error ? err : new Error(String(err)),\n })\n }\n}\n"],"mappings":";;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,wBAAqB;AAQd,SAAS,YAAY,SAAkC;AAC5D,SAAO,CAAC,QAAiB;AACvB,UAAM,IAAI;AACV,UAAM,SACJ,EAAE,OAAO,iBAAiB,KAC1B,EAAE,iBAAiB,KACnB,EAAE,WACF,OAAO,GAAG;AACZ,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,uBAAK;AAAA,MACb;AAAA,MACA;AAAA,MACA;AAAA,MACA,OAAO,eAAe,QAAQ,MAAM,IAAI,MAAM,OAAO,GAAG,CAAC;AAAA,IAC3D,CAAC;AAAA,EACH;AACF;","names":[]}
|
|
@@ -1,8 +1,13 @@
|
|
|
1
|
+
import { Readable } from 'stream';
|
|
1
2
|
import { IfsReadStream as IfsReadStream$1 } from '../../java/JT400.cjs';
|
|
2
3
|
|
|
3
4
|
type Opt = {
|
|
4
5
|
ifsReadStream: Promise<IfsReadStream$1>;
|
|
5
6
|
};
|
|
6
|
-
declare
|
|
7
|
+
declare class IfsReadStream extends Readable {
|
|
8
|
+
private readonly _ifsReadStream;
|
|
9
|
+
constructor(opt: Opt);
|
|
10
|
+
_read(): void;
|
|
11
|
+
}
|
|
7
12
|
|
|
8
13
|
export { IfsReadStream };
|
|
@@ -1,8 +1,6 @@
|
|
|
1
|
-
var __create = Object.create;
|
|
2
1
|
var __defProp = Object.defineProperty;
|
|
3
2
|
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
4
3
|
var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
5
|
-
var __getProtoOf = Object.getPrototypeOf;
|
|
6
4
|
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
7
5
|
var __export = (target, all) => {
|
|
8
6
|
for (var name in all)
|
|
@@ -16,44 +14,37 @@ var __copyProps = (to, from, except, desc) => {
|
|
|
16
14
|
}
|
|
17
15
|
return to;
|
|
18
16
|
};
|
|
19
|
-
var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(
|
|
20
|
-
// If the importer is in node compatibility mode or this is not an ESM
|
|
21
|
-
// file that has been converted to a CommonJS file using a Babel-
|
|
22
|
-
// compatible transform (i.e. "__esModule" has not been set), then set
|
|
23
|
-
// "default" to the CommonJS "module.exports" for node compatibility.
|
|
24
|
-
isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target,
|
|
25
|
-
mod
|
|
26
|
-
));
|
|
27
17
|
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
|
28
18
|
var read_stream_exports = {};
|
|
29
19
|
__export(read_stream_exports, {
|
|
30
20
|
IfsReadStream: () => IfsReadStream
|
|
31
21
|
});
|
|
32
22
|
module.exports = __toCommonJS(read_stream_exports);
|
|
33
|
-
var import_util = __toESM(require("util"), 1);
|
|
34
23
|
var import_stream = require("stream");
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
24
|
+
class IfsReadStream extends import_stream.Readable {
|
|
25
|
+
_ifsReadStream;
|
|
26
|
+
constructor(opt) {
|
|
27
|
+
super({ objectMode: false });
|
|
28
|
+
this._ifsReadStream = opt.ifsReadStream;
|
|
29
|
+
}
|
|
30
|
+
_read() {
|
|
31
|
+
this._ifsReadStream.then(
|
|
32
|
+
(stream) => stream.read().then((res) => {
|
|
33
|
+
const raw = res;
|
|
34
|
+
if (raw == null) {
|
|
35
|
+
this.push(null);
|
|
36
|
+
return;
|
|
37
|
+
}
|
|
38
|
+
const buf = Buffer.isBuffer(raw) ? raw : raw instanceof Uint8Array ? Buffer.from(raw) : Buffer.from(raw);
|
|
39
|
+
if (buf.length === 0) {
|
|
40
|
+
this.push(null);
|
|
41
|
+
return;
|
|
42
|
+
}
|
|
43
|
+
this.push(buf);
|
|
44
|
+
})
|
|
45
|
+
).catch((err) => this.emit("error", err));
|
|
46
|
+
}
|
|
38
47
|
}
|
|
39
|
-
import_util.default.inherits(IfsReadStream, import_stream.Readable);
|
|
40
|
-
IfsReadStream.prototype._read = function() {
|
|
41
|
-
const streamPromise = this._ifsReadStream;
|
|
42
|
-
streamPromise.then(
|
|
43
|
-
(stream) => stream.read().then((res) => {
|
|
44
|
-
if (res == null) {
|
|
45
|
-
this.push(null);
|
|
46
|
-
return;
|
|
47
|
-
}
|
|
48
|
-
const buf = Buffer.isBuffer(res) ? res : res instanceof Uint8Array ? Buffer.from(res) : Buffer.from(res);
|
|
49
|
-
if (buf.length === 0) {
|
|
50
|
-
this.push(null);
|
|
51
|
-
return;
|
|
52
|
-
}
|
|
53
|
-
this.push(buf);
|
|
54
|
-
})
|
|
55
|
-
).catch((err) => this.emit("error", err));
|
|
56
|
-
};
|
|
57
48
|
// Annotate the CommonJS export names for ESM import in node:
|
|
58
49
|
0 && (module.exports = {
|
|
59
50
|
IfsReadStream
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../ts-src/lib/ifs/read_stream.ts"],"sourcesContent":["import
|
|
1
|
+
{"version":3,"sources":["../../../ts-src/lib/ifs/read_stream.ts"],"sourcesContent":["import { Readable } from 'stream'\nimport { IfsReadStream as IfsReadStreamJava } from '../../java/JT400.js'\n\ntype Opt = {\n ifsReadStream: Promise<IfsReadStreamJava>\n}\n\nexport class IfsReadStream extends Readable {\n private readonly _ifsReadStream: Promise<IfsReadStreamJava>\n\n constructor(opt: Opt) {\n super({ objectMode: false })\n this._ifsReadStream = opt.ifsReadStream\n }\n\n _read() {\n this._ifsReadStream\n .then((stream) =>\n stream.read().then((res) => {\n // Cast to unknown: java-bridge may return Buffer, Uint8Array, or raw byte[] depending on JVM version\n const raw: unknown = res\n if (raw == null) {\n this.push(null)\n return\n }\n\n const buf =\n Buffer.isBuffer(raw)\n ? raw\n : raw instanceof Uint8Array\n ? Buffer.from(raw)\n : Buffer.from(raw as ArrayBuffer)\n\n if (buf.length === 0) {\n this.push(null)\n return\n }\n\n this.push(buf)\n }),\n )\n .catch((err: unknown) => this.emit('error', err))\n }\n}\n"],"mappings":";;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,oBAAyB;AAOlB,MAAM,sBAAsB,uBAAS;AAAA,EACzB;AAAA,EAEjB,YAAY,KAAU;AACpB,UAAM,EAAE,YAAY,MAAM,CAAC;AAC3B,SAAK,iBAAiB,IAAI;AAAA,EAC5B;AAAA,EAEA,QAAQ;AACN,SAAK,eACF;AAAA,MAAK,CAAC,WACL,OAAO,KAAK,EAAE,KAAK,CAAC,QAAQ;AAE1B,cAAM,MAAe;AACrB,YAAI,OAAO,MAAM;AACf,eAAK,KAAK,IAAI;AACd;AAAA,QACF;AAEA,cAAM,MACJ,OAAO,SAAS,GAAG,IACf,MACA,eAAe,aACb,OAAO,KAAK,GAAG,IACf,OAAO,KAAK,GAAkB;AAEtC,YAAI,IAAI,WAAW,GAAG;AACpB,eAAK,KAAK,IAAI;AACd;AAAA,QACF;AAEA,aAAK,KAAK,GAAG;AAAA,MACf,CAAC;AAAA,IACH,EACC,MAAM,CAAC,QAAiB,KAAK,KAAK,SAAS,GAAG,CAAC;AAAA,EACpD;AACF;","names":[]}
|
|
@@ -1,8 +1,14 @@
|
|
|
1
|
+
import { Writable } from 'stream';
|
|
1
2
|
import { IfsWriteStream as IfsWriteStream$1 } from '../../java/JT400.cjs';
|
|
2
3
|
|
|
3
4
|
type Opt = {
|
|
4
5
|
ifsWriteStream: Promise<IfsWriteStream$1>;
|
|
5
6
|
};
|
|
6
|
-
declare
|
|
7
|
+
declare class IfsWriteStream extends Writable {
|
|
8
|
+
private readonly _ifsWriteStream;
|
|
9
|
+
constructor(opt: Opt);
|
|
10
|
+
_write(chunk: Buffer, _: BufferEncoding, next: (err?: Error | null) => void): void;
|
|
11
|
+
_final(done: (err?: Error | null) => void): void;
|
|
12
|
+
}
|
|
7
13
|
|
|
8
14
|
export { IfsWriteStream };
|
|
@@ -1,8 +1,6 @@
|
|
|
1
|
-
var __create = Object.create;
|
|
2
1
|
var __defProp = Object.defineProperty;
|
|
3
2
|
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
4
3
|
var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
5
|
-
var __getProtoOf = Object.getPrototypeOf;
|
|
6
4
|
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
7
5
|
var __export = (target, all) => {
|
|
8
6
|
for (var name in all)
|
|
@@ -16,35 +14,26 @@ var __copyProps = (to, from, except, desc) => {
|
|
|
16
14
|
}
|
|
17
15
|
return to;
|
|
18
16
|
};
|
|
19
|
-
var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(
|
|
20
|
-
// If the importer is in node compatibility mode or this is not an ESM
|
|
21
|
-
// file that has been converted to a CommonJS file using a Babel-
|
|
22
|
-
// compatible transform (i.e. "__esModule" has not been set), then set
|
|
23
|
-
// "default" to the CommonJS "module.exports" for node compatibility.
|
|
24
|
-
isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target,
|
|
25
|
-
mod
|
|
26
|
-
));
|
|
27
17
|
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
|
28
18
|
var write_stream_exports = {};
|
|
29
19
|
__export(write_stream_exports, {
|
|
30
20
|
IfsWriteStream: () => IfsWriteStream
|
|
31
21
|
});
|
|
32
22
|
module.exports = __toCommonJS(write_stream_exports);
|
|
33
|
-
var
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
23
|
+
var import_stream = require("stream");
|
|
24
|
+
class IfsWriteStream extends import_stream.Writable {
|
|
25
|
+
_ifsWriteStream;
|
|
26
|
+
constructor(opt) {
|
|
27
|
+
super({ objectMode: false });
|
|
28
|
+
this._ifsWriteStream = opt.ifsWriteStream;
|
|
29
|
+
}
|
|
30
|
+
_write(chunk, _, next) {
|
|
31
|
+
this._ifsWriteStream.then((stream) => stream.write(chunk)).then(() => next()).catch((err) => next(err));
|
|
32
|
+
}
|
|
33
|
+
_final(done) {
|
|
34
|
+
this._ifsWriteStream.then((stream) => stream.flush()).then(() => done()).catch((err) => done(err));
|
|
35
|
+
}
|
|
38
36
|
}
|
|
39
|
-
import_util.default.inherits(IfsWriteStream, import_flushwritable.default);
|
|
40
|
-
IfsWriteStream.prototype._write = function(chunk, _, next) {
|
|
41
|
-
const writeStream = this._ifsWriteStream;
|
|
42
|
-
writeStream.then((stream) => stream.write(chunk)).then(() => next()).catch((err) => this.emit("error", err));
|
|
43
|
-
};
|
|
44
|
-
IfsWriteStream.prototype._flush = function(done) {
|
|
45
|
-
const writeStream = this._ifsWriteStream;
|
|
46
|
-
writeStream.then((stream) => stream.flush()).then(() => done()).catch((err) => done(err));
|
|
47
|
-
};
|
|
48
37
|
// Annotate the CommonJS export names for ESM import in node:
|
|
49
38
|
0 && (module.exports = {
|
|
50
39
|
IfsWriteStream
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../ts-src/lib/ifs/write_stream.ts"],"sourcesContent":["import {
|
|
1
|
+
{"version":3,"sources":["../../../ts-src/lib/ifs/write_stream.ts"],"sourcesContent":["import { Writable } from 'stream'\nimport { IfsWriteStream as IfsWriteStreamJava } from '../../java/JT400.js'\n\ntype Opt = {\n ifsWriteStream: Promise<IfsWriteStreamJava>\n}\n\nexport class IfsWriteStream extends Writable {\n private readonly _ifsWriteStream: Promise<IfsWriteStreamJava>\n\n constructor(opt: Opt) {\n super({ objectMode: false })\n this._ifsWriteStream = opt.ifsWriteStream\n }\n\n _write(chunk: Buffer, _: BufferEncoding, next: (err?: Error | null) => void) {\n this._ifsWriteStream\n .then((stream) => stream.write(chunk))\n .then(() => next())\n .catch((err) => next(err))\n }\n\n _final(done: (err?: Error | null) => void) {\n this._ifsWriteStream\n .then((stream) => stream.flush())\n .then(() => done())\n .catch((err) => done(err))\n }\n}\n"],"mappings":";;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,oBAAyB;AAOlB,MAAM,uBAAuB,uBAAS;AAAA,EAC1B;AAAA,EAEjB,YAAY,KAAU;AACpB,UAAM,EAAE,YAAY,MAAM,CAAC;AAC3B,SAAK,kBAAkB,IAAI;AAAA,EAC7B;AAAA,EAEA,OAAO,OAAe,GAAmB,MAAoC;AAC3E,SAAK,gBACF,KAAK,CAAC,WAAW,OAAO,MAAM,KAAK,CAAC,EACpC,KAAK,MAAM,KAAK,CAAC,EACjB,MAAM,CAAC,QAAQ,KAAK,GAAG,CAAC;AAAA,EAC7B;AAAA,EAEA,OAAO,MAAoC;AACzC,SAAK,gBACF,KAAK,CAAC,WAAW,OAAO,MAAM,CAAC,EAC/B,KAAK,MAAM,KAAK,CAAC,EACjB,MAAM,CAAC,QAAQ,KAAK,GAAG,CAAC;AAAA,EAC7B;AACF;","names":[]}
|
|
@@ -7,7 +7,7 @@ import './baseConnection.types.cjs';
|
|
|
7
7
|
import './ifs/types.cjs';
|
|
8
8
|
|
|
9
9
|
interface InMemoryConnection extends Connection {
|
|
10
|
-
mockPgm: (programName: string, fn: (input:
|
|
10
|
+
mockPgm: (programName: string, fn: (input: Record<string, unknown>, timeout?: number) => unknown) => InMemoryConnection;
|
|
11
11
|
}
|
|
12
12
|
declare function createInMemoryConnection(jt400Factory: JavaBridge, logger: Logger): InMemoryConnection;
|
|
13
13
|
|
|
@@ -38,19 +38,19 @@ function createInMemoryConnection(jt400Factory, logger) {
|
|
|
38
38
|
const mockFunc = pgmMockRegistry[opt.programName];
|
|
39
39
|
if (mockFunc) {
|
|
40
40
|
const res = mockFunc(params, timeout);
|
|
41
|
-
return res.then ? res : Promise.resolve(res);
|
|
41
|
+
return typeof res.then === "function" ? res : Promise.resolve(res);
|
|
42
42
|
}
|
|
43
43
|
return defaultFunc(params, timeout);
|
|
44
44
|
};
|
|
45
45
|
};
|
|
46
|
-
const
|
|
46
|
+
const inMemoryConnection = {
|
|
47
47
|
...instance,
|
|
48
48
|
mockPgm(programName, func) {
|
|
49
49
|
pgmMockRegistry[programName] = func;
|
|
50
|
-
return
|
|
50
|
+
return inMemoryConnection;
|
|
51
51
|
}
|
|
52
52
|
};
|
|
53
|
-
return
|
|
53
|
+
return inMemoryConnection;
|
|
54
54
|
}
|
|
55
55
|
// Annotate the CommonJS export names for ESM import in node:
|
|
56
56
|
0 && (module.exports = {
|
|
@@ -1 +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:
|
|
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: Record<string, unknown>, timeout?: number) => unknown) => 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: Record<string, (input: Record<string, unknown>, timeout?: number) => unknown> = {}\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 (typeof (res as Promise<unknown>).then === 'function')\n ? (res as Promise<unknown>)\n : 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":";;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AACA,wBAAiC;AAEjC,wBAAyC;AAOlC,SAAS,yBACd,cACA,QACoB;AACpB,QAAM,UAAU,aAAa,yBAAyB;AACtD,QAAM,eAAW,oCAAiB;AAAA,IAChC,YAAY;AAAA,IACZ,eAAe;AAAA,IACf;AAAA,IACA,UAAU;AAAA,EACZ,CAAC;AACD,QAAM,kBAAiG,CAAC;AAExG,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,eAAQ,OAAQ,IAAyB,SAAS,aAC7C,MACD,QAAQ,QAAQ,GAAG;AAAA,MACzB;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":[]}
|
|
@@ -26,6 +26,10 @@ const createInsertListInOneStatment = (jt400) => (tableName, idColumn, list) =>
|
|
|
26
26
|
if (!list || list.length === 0) {
|
|
27
27
|
return Promise.resolve([]);
|
|
28
28
|
}
|
|
29
|
+
const firstKeys = Object.keys(list[0]).join(",");
|
|
30
|
+
if (list.some((r) => Object.keys(r).join(",") !== firstKeys)) {
|
|
31
|
+
return Promise.reject(new Error("All records must have the same keys in the same order"));
|
|
32
|
+
}
|
|
29
33
|
const sql = "SELECT " + idColumn + " FROM NEW TABLE(" + (0, import_sqlutil.toInsertSql)(tableName, list) + ")";
|
|
30
34
|
const params = list.map(Object.values).reduce((arr, valueArr) => {
|
|
31
35
|
return arr.concat(valueArr);
|
|
@@ -36,19 +40,14 @@ const createInsertListInOneStatment = (jt400) => (tableName, idColumn, list) =>
|
|
|
36
40
|
};
|
|
37
41
|
const createStandardInsertList = (jt400) => (tableName, _, list) => {
|
|
38
42
|
const idList = [];
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
return jt400.insertAndGetId(sqlObj.sql, sqlObj.values);
|
|
48
|
-
}).then(pushToIdList);
|
|
49
|
-
}, Promise.resolve()).then(() => {
|
|
50
|
-
return idList;
|
|
51
|
-
});
|
|
43
|
+
return list.map((record) => ({
|
|
44
|
+
sql: (0, import_sqlutil.toInsertSql)(tableName, [record]),
|
|
45
|
+
values: Object.values(record)
|
|
46
|
+
})).reduce((soFar, sqlObj) => {
|
|
47
|
+
return soFar.then(() => jt400.insertAndGetId(sqlObj.sql, sqlObj.values)).then((id) => {
|
|
48
|
+
idList.push(id);
|
|
49
|
+
});
|
|
50
|
+
}, Promise.resolve()).then(() => idList);
|
|
52
51
|
};
|
|
53
52
|
// Annotate the CommonJS export names for ESM import in node:
|
|
54
53
|
0 && (module.exports = {
|
|
@@ -1 +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<
|
|
1
|
+
{"version":3,"sources":["../../ts-src/lib/insertList.ts"],"sourcesContent":["import { BaseConnection, InsertList, Param } 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 firstKeys = Object.keys(list[0]).join(',')\n if (list.some((r) => Object.keys(r).join(',') !== firstKeys)) {\n return Promise.reject(new Error('All records must have the same keys in the same order'))\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: Param[], valueArr) => {\n return arr.concat(valueArr as Param[])\n }, [])\n\n return jt400.query<Record<string, number>>(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: number[] = []\n\n return list\n .map((record) => ({\n sql: toInsertSql(tableName, [record]),\n values: Object.values(record) as Param[],\n }))\n .reduce<Promise<void>>((soFar, sqlObj) => {\n return soFar\n .then(() => jt400.insertAndGetId(sqlObj.sql, sqlObj.values))\n .then((id) => { idList.push(id) })\n }, Promise.resolve())\n .then(() => idList)\n }\n"],"mappings":";;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA,qBAA4B;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,YAAY,OAAO,KAAK,KAAK,CAAC,CAAC,EAAE,KAAK,GAAG;AAC/C,MAAI,KAAK,KAAK,CAAC,MAAM,OAAO,KAAK,CAAC,EAAE,KAAK,GAAG,MAAM,SAAS,GAAG;AAC5D,WAAO,QAAQ,OAAO,IAAI,MAAM,uDAAuD,CAAC;AAAA,EAC1F;AACA,QAAM,MACJ,YACA,WACA,yBACA,4BAAY,WAAW,IAAI,IAC3B;AACF,QAAM,SAAS,KAAK,IAAI,OAAO,MAAM,EAAE,OAAO,CAAC,KAAc,aAAa;AACxE,WAAO,IAAI,OAAO,QAAmB;AAAA,EACvC,GAAG,CAAC,CAAC;AAEL,SAAO,MAAM,MAA8B,KAAK,MAAM,EAAE,KAAK,CAAC,WAAW;AACvE,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,SAAmB,CAAC;AAE1B,SAAO,KACJ,IAAI,CAAC,YAAY;AAAA,IAChB,SAAK,4BAAY,WAAW,CAAC,MAAM,CAAC;AAAA,IACpC,QAAQ,OAAO,OAAO,MAAM;AAAA,EAC9B,EAAE,EACD,OAAsB,CAAC,OAAO,WAAW;AACxC,WAAO,MACJ,KAAK,MAAM,MAAM,eAAe,OAAO,KAAK,OAAO,MAAM,CAAC,EAC1D,KAAK,CAAC,OAAO;AAAE,aAAO,KAAK,EAAE;AAAA,IAAE,CAAC;AAAA,EACrC,GAAG,QAAQ,QAAQ,CAAC,EACnB,KAAK,MAAM,MAAM;AACtB;","names":[]}
|
|
@@ -1,3 +1,18 @@
|
|
|
1
|
-
|
|
1
|
+
import { Readable } from 'stream';
|
|
2
|
+
import { ResultStream } from '../java/JT400.cjs';
|
|
3
|
+
|
|
4
|
+
type Opt = {
|
|
5
|
+
jdbcStream?: ResultStream;
|
|
6
|
+
jdbcStreamPromise?: Promise<ResultStream>;
|
|
7
|
+
};
|
|
8
|
+
declare class JdbcStream extends Readable {
|
|
9
|
+
private _jdbcStream?;
|
|
10
|
+
private _jdbcStreamPromise?;
|
|
11
|
+
private _closed;
|
|
12
|
+
constructor(opt: Opt);
|
|
13
|
+
close(): void;
|
|
14
|
+
private _readFromStream;
|
|
15
|
+
_read(): void;
|
|
16
|
+
}
|
|
2
17
|
|
|
3
18
|
export { JdbcStream };
|