@nesgarbo/node-jt400 6.0.3 → 6.0.4

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (152) hide show
  1. package/README.md +330 -369
  2. package/dist-cjs/index.d.cts +12 -5
  3. package/dist-cjs/index.js.map +1 -1
  4. package/dist-cjs/java/JT400.d.cts +3 -3
  5. package/dist-cjs/java/JT400.js.map +1 -1
  6. package/dist-cjs/java/index.js +4 -3
  7. package/dist-cjs/java/index.js.map +1 -1
  8. package/dist-cjs/lib/baseConnection.js +124 -166
  9. package/dist-cjs/lib/baseConnection.js.map +1 -1
  10. package/dist-cjs/lib/baseConnection.types.d.cts +11 -7
  11. package/dist-cjs/lib/baseConnection.types.js.map +1 -1
  12. package/dist-cjs/lib/connection.js +12 -25
  13. package/dist-cjs/lib/connection.js.map +1 -1
  14. package/dist-cjs/lib/connection.types.d.cts +39 -12
  15. package/dist-cjs/lib/connection.types.js.map +1 -1
  16. package/dist-cjs/lib/handleError.d.cts +1 -3
  17. package/dist-cjs/lib/handleError.js +3 -2
  18. package/dist-cjs/lib/handleError.js.map +1 -1
  19. package/dist-cjs/lib/ifs/read_stream.d.cts +6 -1
  20. package/dist-cjs/lib/ifs/read_stream.js +23 -32
  21. package/dist-cjs/lib/ifs/read_stream.js.map +1 -1
  22. package/dist-cjs/lib/ifs/write_stream.d.cts +7 -1
  23. package/dist-cjs/lib/ifs/write_stream.js +13 -24
  24. package/dist-cjs/lib/ifs/write_stream.js.map +1 -1
  25. package/dist-cjs/lib/inMemoryConnection.d.cts +1 -1
  26. package/dist-cjs/lib/inMemoryConnection.js +4 -4
  27. package/dist-cjs/lib/inMemoryConnection.js.map +1 -1
  28. package/dist-cjs/lib/insertList.js +12 -13
  29. package/dist-cjs/lib/insertList.js.map +1 -1
  30. package/dist-cjs/lib/jdbcstream.d.cts +16 -1
  31. package/dist-cjs/lib/jdbcstream.js +31 -36
  32. package/dist-cjs/lib/jdbcstream.js.map +1 -1
  33. package/dist-cjs/lib/jdbcwritestream.d.cts +4 -1
  34. package/dist-cjs/lib/jdbcwritestream.js +7 -20
  35. package/dist-cjs/lib/jdbcwritestream.js.map +1 -1
  36. package/dist-cjs/lib/logger.d.cts +4 -4
  37. package/dist-cjs/lib/logger.js.map +1 -1
  38. package/dist-cjs/lib/sqlutil.d.cts +4 -1
  39. package/dist-cjs/lib/sqlutil.js +1 -0
  40. package/dist-cjs/lib/sqlutil.js.map +1 -1
  41. package/dist-cjs/lib/streamTransformers.d.cts +2 -1
  42. package/dist-cjs/lib/streamTransformers.js +1 -1
  43. package/dist-cjs/lib/streamTransformers.js.map +1 -1
  44. package/dist-cjs/typings/jsonstream.d.js +1 -0
  45. package/dist-cjs/typings/jsonstream.d.js.map +1 -0
  46. package/dist-esm/index.d.ts +12 -5
  47. package/dist-esm/index.js.map +1 -1
  48. package/dist-esm/java/JT400.d.ts +3 -3
  49. package/dist-esm/java/index.js +3 -10
  50. package/dist-esm/java/index.js.map +1 -1
  51. package/dist-esm/lib/baseConnection.js +124 -166
  52. package/dist-esm/lib/baseConnection.js.map +1 -1
  53. package/dist-esm/lib/baseConnection.types.d.ts +11 -7
  54. package/dist-esm/lib/baseConnection.types.js.map +1 -1
  55. package/dist-esm/lib/connection.js +12 -25
  56. package/dist-esm/lib/connection.js.map +1 -1
  57. package/dist-esm/lib/connection.types.d.ts +39 -12
  58. package/dist-esm/lib/handleError.d.ts +1 -3
  59. package/dist-esm/lib/handleError.js +3 -2
  60. package/dist-esm/lib/handleError.js.map +1 -1
  61. package/dist-esm/lib/ifs/read_stream.d.ts +6 -1
  62. package/dist-esm/lib/ifs/read_stream.js +23 -22
  63. package/dist-esm/lib/ifs/read_stream.js.map +1 -1
  64. package/dist-esm/lib/ifs/write_stream.d.ts +7 -1
  65. package/dist-esm/lib/ifs/write_stream.js +13 -14
  66. package/dist-esm/lib/ifs/write_stream.js.map +1 -1
  67. package/dist-esm/lib/inMemoryConnection.d.ts +1 -1
  68. package/dist-esm/lib/inMemoryConnection.js +4 -4
  69. package/dist-esm/lib/inMemoryConnection.js.map +1 -1
  70. package/dist-esm/lib/insertList.js +12 -13
  71. package/dist-esm/lib/insertList.js.map +1 -1
  72. package/dist-esm/lib/jdbcstream.d.ts +16 -1
  73. package/dist-esm/lib/jdbcstream.js +31 -36
  74. package/dist-esm/lib/jdbcstream.js.map +1 -1
  75. package/dist-esm/lib/jdbcwritestream.d.ts +4 -1
  76. package/dist-esm/lib/jdbcwritestream.js +7 -10
  77. package/dist-esm/lib/jdbcwritestream.js.map +1 -1
  78. package/dist-esm/lib/logger.d.ts +4 -4
  79. package/dist-esm/lib/logger.js.map +1 -1
  80. package/dist-esm/lib/sqlutil.d.ts +4 -1
  81. package/dist-esm/lib/sqlutil.js +1 -0
  82. package/dist-esm/lib/sqlutil.js.map +1 -1
  83. package/dist-esm/lib/streamTransformers.d.ts +2 -1
  84. package/dist-esm/lib/streamTransformers.js +1 -1
  85. package/dist-esm/lib/streamTransformers.js.map +1 -1
  86. package/package.json +16 -21
  87. package/dist-cjs/integration-test/call-rpg-spec.d.cts +0 -2
  88. package/dist-cjs/integration-test/call-rpg-spec.js +0 -101
  89. package/dist-cjs/integration-test/call-rpg-spec.js.map +0 -1
  90. package/dist-cjs/integration-test/dataq-spec.d.cts +0 -2
  91. package/dist-cjs/integration-test/dataq-spec.js +0 -57
  92. package/dist-cjs/integration-test/dataq-spec.js.map +0 -1
  93. package/dist-cjs/integration-test/db.d.cts +0 -8
  94. package/dist-cjs/integration-test/db.js +0 -31
  95. package/dist-cjs/integration-test/db.js.map +0 -1
  96. package/dist-cjs/integration-test/db2-connect-spec.d.cts +0 -2
  97. package/dist-cjs/integration-test/db2-connect-spec.js +0 -42
  98. package/dist-cjs/integration-test/db2-connect-spec.js.map +0 -1
  99. package/dist-cjs/integration-test/db2-pool-spec.d.cts +0 -2
  100. package/dist-cjs/integration-test/db2-pool-spec.js +0 -213
  101. package/dist-cjs/integration-test/db2-pool-spec.js.map +0 -1
  102. package/dist-cjs/integration-test/ifs-spec.d.cts +0 -2
  103. package/dist-cjs/integration-test/ifs-spec.js +0 -140
  104. package/dist-cjs/integration-test/ifs-spec.js.map +0 -1
  105. package/dist-cjs/integration-test/msgf-spec.d.cts +0 -2
  106. package/dist-cjs/integration-test/msgf-spec.js +0 -34
  107. package/dist-cjs/integration-test/msgf-spec.js.map +0 -1
  108. package/dist-cjs/integration-test/msgq-spec.d.cts +0 -2
  109. package/dist-cjs/integration-test/msgq-spec.js +0 -45
  110. package/dist-cjs/integration-test/msgq-spec.js.map +0 -1
  111. package/dist-cjs/unit-test/hsql-spec.d.cts +0 -2
  112. package/dist-cjs/unit-test/hsql-spec.js +0 -488
  113. package/dist-cjs/unit-test/hsql-spec.js.map +0 -1
  114. package/dist-cjs/unit-test/sqlutil-spec.d.cts +0 -2
  115. package/dist-cjs/unit-test/sqlutil-spec.js +0 -43
  116. package/dist-cjs/unit-test/sqlutil-spec.js.map +0 -1
  117. package/dist-cjs/unit-test/streamTransformers-spec.d.cts +0 -2
  118. package/dist-cjs/unit-test/streamTransformers-spec.js +0 -121
  119. package/dist-cjs/unit-test/streamTransformers-spec.js.map +0 -1
  120. package/dist-esm/integration-test/call-rpg-spec.d.ts +0 -2
  121. package/dist-esm/integration-test/call-rpg-spec.js +0 -79
  122. package/dist-esm/integration-test/call-rpg-spec.js.map +0 -1
  123. package/dist-esm/integration-test/dataq-spec.d.ts +0 -2
  124. package/dist-esm/integration-test/dataq-spec.js +0 -35
  125. package/dist-esm/integration-test/dataq-spec.js.map +0 -1
  126. package/dist-esm/integration-test/db.d.ts +0 -8
  127. package/dist-esm/integration-test/db.js +0 -8
  128. package/dist-esm/integration-test/db.js.map +0 -1
  129. package/dist-esm/integration-test/db2-connect-spec.d.ts +0 -2
  130. package/dist-esm/integration-test/db2-connect-spec.js +0 -20
  131. package/dist-esm/integration-test/db2-connect-spec.js.map +0 -1
  132. package/dist-esm/integration-test/db2-pool-spec.d.ts +0 -2
  133. package/dist-esm/integration-test/db2-pool-spec.js +0 -197
  134. package/dist-esm/integration-test/db2-pool-spec.js.map +0 -1
  135. package/dist-esm/integration-test/ifs-spec.d.ts +0 -2
  136. package/dist-esm/integration-test/ifs-spec.js +0 -118
  137. package/dist-esm/integration-test/ifs-spec.js.map +0 -1
  138. package/dist-esm/integration-test/msgf-spec.d.ts +0 -2
  139. package/dist-esm/integration-test/msgf-spec.js +0 -12
  140. package/dist-esm/integration-test/msgf-spec.js.map +0 -1
  141. package/dist-esm/integration-test/msgq-spec.d.ts +0 -2
  142. package/dist-esm/integration-test/msgq-spec.js +0 -23
  143. package/dist-esm/integration-test/msgq-spec.js.map +0 -1
  144. package/dist-esm/unit-test/hsql-spec.d.ts +0 -2
  145. package/dist-esm/unit-test/hsql-spec.js +0 -466
  146. package/dist-esm/unit-test/hsql-spec.js.map +0 -1
  147. package/dist-esm/unit-test/sqlutil-spec.d.ts +0 -2
  148. package/dist-esm/unit-test/sqlutil-spec.js +0 -21
  149. package/dist-esm/unit-test/sqlutil-spec.js.map +0 -1
  150. package/dist-esm/unit-test/streamTransformers-spec.d.ts +0 -2
  151. package/dist-esm/unit-test/streamTransformers-spec.js +0 -99
  152. package/dist-esm/unit-test/streamTransformers-spec.js.map +0 -1
@@ -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
- // write (key, data) {
96
- // dq.writeSync(key, data);
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 function(key, wait, writeKeyLength) {
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
- let wait = -1;
126
- let key;
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
- const messageId = arguments[0].messageId;
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 this.defineProgram({
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 5.0. Please use defineProgram."),
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 // write (key, data) {\n // \tdq.writeSync(key, data);\n // },\n read() {\n let wait = -1\n if (arguments[0] === Object(arguments[0])) {\n wait = arguments[0].wait || wait\n }\n return dq.read(wait)\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 function (key, wait, writeKeyLength) {\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() {\n let wait = -1\n let key: string\n let writeKeyLength\n if (arguments[0] === Object(arguments[0])) {\n key = arguments[0].key\n wait = arguments[0].wait || wait\n writeKeyLength = arguments[0].writeKeyLength\n } else {\n key = arguments[0]\n }\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() {\n const messageId = arguments[0].messageId\n return messageFile.read(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, paramsSchema, libraryName) {\n return this.defineProgram({\n programName,\n paramsSchema,\n libraryName,\n })\n }, 'pgm function is deprecated and will be removed in version 5.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
+ {"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[7];
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<any> | Promise<null>;
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<any>;
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<any>;
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) => any;
68
- defineProgram: (options: ProgramDefinitionOptions) => any;
69
- getTablesAsStream: (params: any) => Readable;
70
- getColumns: (params: any) => any;
71
- getPrimaryKeys: (params: any) => any;
72
- transaction: (fn: TransactionFun) => Promise<any>;
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[7]\n}\n\nexport interface MessageQ {\n sendInformational: (messageText: string) => Promise<void>\n read: (params?: MessageQReadOptions) => Promise<any> | Promise<null>\n}\n\nexport interface DataQOptions {\n name: string\n}\nexport interface KeyedDataQ {\n write: (key: string, data: string) => void\n read: (params: DataQReadOptions | string) => Promise<any>\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 = (transaction: BaseConnection) => Promise<any>\n\nexport interface Connection extends BaseConnection {\n pgm: (\n programName: string,\n paramsSchema: PgmParamType[],\n libraryName?: string,\n ) => any\n defineProgram: (options: ProgramDefinitionOptions) => any\n getTablesAsStream: (params: any) => Readable\n getColumns: (params: any) => any\n getPrimaryKeys: (params: any) => any\n transaction: (fn: TransactionFun) => Promise<any>\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":[]}
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":[]}
@@ -1,5 +1,3 @@
1
- declare function handleError(context: {
2
- [key: string]: any;
3
- }): (err: any) => never;
1
+ declare function handleError(context: Record<string, unknown>): (err: unknown) => never;
4
2
 
5
3
  export { handleError };
@@ -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 errMsg = err.cause && err.cause.getMessageSync && err.cause.getMessageSync() || err.getMessageSync && err.getMessageSync() || err.message;
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: { [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;AAAA;AAAA;AAAA;AAAA;AAAA,wBAAqB;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,uBAAK;AAAA,MACb;AAAA,MACA;AAAA,MACA;AAAA,MACA,OAAO;AAAA,IACT,CAAC;AAAA,EACH;AACF;","names":[]}
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 function IfsReadStream(opt: Opt): void;
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
- function IfsReadStream(opt) {
36
- import_stream.Readable.call(this, { objectMode: false });
37
- this._ifsReadStream = opt.ifsReadStream;
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 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;AAAA;AAAA;AAAA;AAAA;AAAA,kBAAiB;AACjB,oBAAyB;AAOlB,SAAS,cAAc,KAAU;AACtC,yBAAS,KAAK,MAAM,EAAE,YAAY,MAAM,CAAC;AACzC,OAAK,iBAAiB,IAAI;AAC5B;AAEA,YAAAA,QAAK,SAAS,eAAe,sBAAQ;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":["util"]}
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 function IfsWriteStream(opt: Opt): void;
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 import_util = __toESM(require("util"), 1);
34
- var import_flushwritable = __toESM(require("flushwritable"), 1);
35
- function IfsWriteStream(opt) {
36
- import_flushwritable.default.call(this, { objectMode: false });
37
- this._ifsWriteStream = opt.ifsWriteStream;
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 { 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":";;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AACA,kBAAiB;AACjB,2BAA0B;AAMnB,SAAS,eAAe,KAAU;AACvC,uBAAAA,QAAc,KAAK,MAAM,EAAE,YAAY,MAAM,CAAC;AAC9C,OAAK,kBAAkB,IAAI;AAC7B;AAEA,YAAAC,QAAK,SAAS,gBAAgB,qBAAAD,OAAa;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":["FlushWritable","util"]}
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: any) => any) => InMemoryConnection;
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 inMemoryconnection = {
46
+ const inMemoryConnection = {
47
47
  ...instance,
48
48
  mockPgm(programName, func) {
49
49
  pgmMockRegistry[programName] = func;
50
- return inMemoryconnection;
50
+ return inMemoryConnection;
51
51
  }
52
52
  };
53
- return inMemoryconnection;
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: 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":";;;;;;;;;;;;;;;;;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,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":[]}
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
- const pushToIdList = idList.push.bind(idList);
40
- return list.map((record) => {
41
- return {
42
- sql: (0, import_sqlutil.toInsertSql)(tableName, [record]),
43
- values: Object.values(record)
44
- };
45
- }).reduce((soFar, sqlObj) => {
46
- return soFar.then(() => {
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<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":";;;;;;;;;;;;;;;;;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,MACJ,YACA,WACA,yBACA,4BAAY,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,SAAK,4BAAY,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":[]}
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
- declare function JdbcStream(opt: any): void;
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 };