@nesgarbo/node-jt400 6.0.3 → 6.0.4

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (152) hide show
  1. package/README.md +330 -369
  2. package/dist-cjs/index.d.cts +12 -5
  3. package/dist-cjs/index.js.map +1 -1
  4. package/dist-cjs/java/JT400.d.cts +3 -3
  5. package/dist-cjs/java/JT400.js.map +1 -1
  6. package/dist-cjs/java/index.js +4 -3
  7. package/dist-cjs/java/index.js.map +1 -1
  8. package/dist-cjs/lib/baseConnection.js +124 -166
  9. package/dist-cjs/lib/baseConnection.js.map +1 -1
  10. package/dist-cjs/lib/baseConnection.types.d.cts +11 -7
  11. package/dist-cjs/lib/baseConnection.types.js.map +1 -1
  12. package/dist-cjs/lib/connection.js +12 -25
  13. package/dist-cjs/lib/connection.js.map +1 -1
  14. package/dist-cjs/lib/connection.types.d.cts +39 -12
  15. package/dist-cjs/lib/connection.types.js.map +1 -1
  16. package/dist-cjs/lib/handleError.d.cts +1 -3
  17. package/dist-cjs/lib/handleError.js +3 -2
  18. package/dist-cjs/lib/handleError.js.map +1 -1
  19. package/dist-cjs/lib/ifs/read_stream.d.cts +6 -1
  20. package/dist-cjs/lib/ifs/read_stream.js +23 -32
  21. package/dist-cjs/lib/ifs/read_stream.js.map +1 -1
  22. package/dist-cjs/lib/ifs/write_stream.d.cts +7 -1
  23. package/dist-cjs/lib/ifs/write_stream.js +13 -24
  24. package/dist-cjs/lib/ifs/write_stream.js.map +1 -1
  25. package/dist-cjs/lib/inMemoryConnection.d.cts +1 -1
  26. package/dist-cjs/lib/inMemoryConnection.js +4 -4
  27. package/dist-cjs/lib/inMemoryConnection.js.map +1 -1
  28. package/dist-cjs/lib/insertList.js +12 -13
  29. package/dist-cjs/lib/insertList.js.map +1 -1
  30. package/dist-cjs/lib/jdbcstream.d.cts +16 -1
  31. package/dist-cjs/lib/jdbcstream.js +31 -36
  32. package/dist-cjs/lib/jdbcstream.js.map +1 -1
  33. package/dist-cjs/lib/jdbcwritestream.d.cts +4 -1
  34. package/dist-cjs/lib/jdbcwritestream.js +7 -20
  35. package/dist-cjs/lib/jdbcwritestream.js.map +1 -1
  36. package/dist-cjs/lib/logger.d.cts +4 -4
  37. package/dist-cjs/lib/logger.js.map +1 -1
  38. package/dist-cjs/lib/sqlutil.d.cts +4 -1
  39. package/dist-cjs/lib/sqlutil.js +1 -0
  40. package/dist-cjs/lib/sqlutil.js.map +1 -1
  41. package/dist-cjs/lib/streamTransformers.d.cts +2 -1
  42. package/dist-cjs/lib/streamTransformers.js +1 -1
  43. package/dist-cjs/lib/streamTransformers.js.map +1 -1
  44. package/dist-cjs/typings/jsonstream.d.js +1 -0
  45. package/dist-cjs/typings/jsonstream.d.js.map +1 -0
  46. package/dist-esm/index.d.ts +12 -5
  47. package/dist-esm/index.js.map +1 -1
  48. package/dist-esm/java/JT400.d.ts +3 -3
  49. package/dist-esm/java/index.js +3 -10
  50. package/dist-esm/java/index.js.map +1 -1
  51. package/dist-esm/lib/baseConnection.js +124 -166
  52. package/dist-esm/lib/baseConnection.js.map +1 -1
  53. package/dist-esm/lib/baseConnection.types.d.ts +11 -7
  54. package/dist-esm/lib/baseConnection.types.js.map +1 -1
  55. package/dist-esm/lib/connection.js +12 -25
  56. package/dist-esm/lib/connection.js.map +1 -1
  57. package/dist-esm/lib/connection.types.d.ts +39 -12
  58. package/dist-esm/lib/handleError.d.ts +1 -3
  59. package/dist-esm/lib/handleError.js +3 -2
  60. package/dist-esm/lib/handleError.js.map +1 -1
  61. package/dist-esm/lib/ifs/read_stream.d.ts +6 -1
  62. package/dist-esm/lib/ifs/read_stream.js +23 -22
  63. package/dist-esm/lib/ifs/read_stream.js.map +1 -1
  64. package/dist-esm/lib/ifs/write_stream.d.ts +7 -1
  65. package/dist-esm/lib/ifs/write_stream.js +13 -14
  66. package/dist-esm/lib/ifs/write_stream.js.map +1 -1
  67. package/dist-esm/lib/inMemoryConnection.d.ts +1 -1
  68. package/dist-esm/lib/inMemoryConnection.js +4 -4
  69. package/dist-esm/lib/inMemoryConnection.js.map +1 -1
  70. package/dist-esm/lib/insertList.js +12 -13
  71. package/dist-esm/lib/insertList.js.map +1 -1
  72. package/dist-esm/lib/jdbcstream.d.ts +16 -1
  73. package/dist-esm/lib/jdbcstream.js +31 -36
  74. package/dist-esm/lib/jdbcstream.js.map +1 -1
  75. package/dist-esm/lib/jdbcwritestream.d.ts +4 -1
  76. package/dist-esm/lib/jdbcwritestream.js +7 -10
  77. package/dist-esm/lib/jdbcwritestream.js.map +1 -1
  78. package/dist-esm/lib/logger.d.ts +4 -4
  79. package/dist-esm/lib/logger.js.map +1 -1
  80. package/dist-esm/lib/sqlutil.d.ts +4 -1
  81. package/dist-esm/lib/sqlutil.js +1 -0
  82. package/dist-esm/lib/sqlutil.js.map +1 -1
  83. package/dist-esm/lib/streamTransformers.d.ts +2 -1
  84. package/dist-esm/lib/streamTransformers.js +1 -1
  85. package/dist-esm/lib/streamTransformers.js.map +1 -1
  86. package/package.json +16 -21
  87. package/dist-cjs/integration-test/call-rpg-spec.d.cts +0 -2
  88. package/dist-cjs/integration-test/call-rpg-spec.js +0 -101
  89. package/dist-cjs/integration-test/call-rpg-spec.js.map +0 -1
  90. package/dist-cjs/integration-test/dataq-spec.d.cts +0 -2
  91. package/dist-cjs/integration-test/dataq-spec.js +0 -57
  92. package/dist-cjs/integration-test/dataq-spec.js.map +0 -1
  93. package/dist-cjs/integration-test/db.d.cts +0 -8
  94. package/dist-cjs/integration-test/db.js +0 -31
  95. package/dist-cjs/integration-test/db.js.map +0 -1
  96. package/dist-cjs/integration-test/db2-connect-spec.d.cts +0 -2
  97. package/dist-cjs/integration-test/db2-connect-spec.js +0 -42
  98. package/dist-cjs/integration-test/db2-connect-spec.js.map +0 -1
  99. package/dist-cjs/integration-test/db2-pool-spec.d.cts +0 -2
  100. package/dist-cjs/integration-test/db2-pool-spec.js +0 -213
  101. package/dist-cjs/integration-test/db2-pool-spec.js.map +0 -1
  102. package/dist-cjs/integration-test/ifs-spec.d.cts +0 -2
  103. package/dist-cjs/integration-test/ifs-spec.js +0 -140
  104. package/dist-cjs/integration-test/ifs-spec.js.map +0 -1
  105. package/dist-cjs/integration-test/msgf-spec.d.cts +0 -2
  106. package/dist-cjs/integration-test/msgf-spec.js +0 -34
  107. package/dist-cjs/integration-test/msgf-spec.js.map +0 -1
  108. package/dist-cjs/integration-test/msgq-spec.d.cts +0 -2
  109. package/dist-cjs/integration-test/msgq-spec.js +0 -45
  110. package/dist-cjs/integration-test/msgq-spec.js.map +0 -1
  111. package/dist-cjs/unit-test/hsql-spec.d.cts +0 -2
  112. package/dist-cjs/unit-test/hsql-spec.js +0 -488
  113. package/dist-cjs/unit-test/hsql-spec.js.map +0 -1
  114. package/dist-cjs/unit-test/sqlutil-spec.d.cts +0 -2
  115. package/dist-cjs/unit-test/sqlutil-spec.js +0 -43
  116. package/dist-cjs/unit-test/sqlutil-spec.js.map +0 -1
  117. package/dist-cjs/unit-test/streamTransformers-spec.d.cts +0 -2
  118. package/dist-cjs/unit-test/streamTransformers-spec.js +0 -121
  119. package/dist-cjs/unit-test/streamTransformers-spec.js.map +0 -1
  120. package/dist-esm/integration-test/call-rpg-spec.d.ts +0 -2
  121. package/dist-esm/integration-test/call-rpg-spec.js +0 -79
  122. package/dist-esm/integration-test/call-rpg-spec.js.map +0 -1
  123. package/dist-esm/integration-test/dataq-spec.d.ts +0 -2
  124. package/dist-esm/integration-test/dataq-spec.js +0 -35
  125. package/dist-esm/integration-test/dataq-spec.js.map +0 -1
  126. package/dist-esm/integration-test/db.d.ts +0 -8
  127. package/dist-esm/integration-test/db.js +0 -8
  128. package/dist-esm/integration-test/db.js.map +0 -1
  129. package/dist-esm/integration-test/db2-connect-spec.d.ts +0 -2
  130. package/dist-esm/integration-test/db2-connect-spec.js +0 -20
  131. package/dist-esm/integration-test/db2-connect-spec.js.map +0 -1
  132. package/dist-esm/integration-test/db2-pool-spec.d.ts +0 -2
  133. package/dist-esm/integration-test/db2-pool-spec.js +0 -197
  134. package/dist-esm/integration-test/db2-pool-spec.js.map +0 -1
  135. package/dist-esm/integration-test/ifs-spec.d.ts +0 -2
  136. package/dist-esm/integration-test/ifs-spec.js +0 -118
  137. package/dist-esm/integration-test/ifs-spec.js.map +0 -1
  138. package/dist-esm/integration-test/msgf-spec.d.ts +0 -2
  139. package/dist-esm/integration-test/msgf-spec.js +0 -12
  140. package/dist-esm/integration-test/msgf-spec.js.map +0 -1
  141. package/dist-esm/integration-test/msgq-spec.d.ts +0 -2
  142. package/dist-esm/integration-test/msgq-spec.js +0 -23
  143. package/dist-esm/integration-test/msgq-spec.js.map +0 -1
  144. package/dist-esm/unit-test/hsql-spec.d.ts +0 -2
  145. package/dist-esm/unit-test/hsql-spec.js +0 -466
  146. package/dist-esm/unit-test/hsql-spec.js.map +0 -1
  147. package/dist-esm/unit-test/sqlutil-spec.d.ts +0 -2
  148. package/dist-esm/unit-test/sqlutil-spec.js +0 -21
  149. package/dist-esm/unit-test/sqlutil-spec.js.map +0 -1
  150. package/dist-esm/unit-test/streamTransformers-spec.d.ts +0 -2
  151. package/dist-esm/unit-test/streamTransformers-spec.js +0 -99
  152. package/dist-esm/unit-test/streamTransformers-spec.js.map +0 -1
@@ -1,5 +1,5 @@
1
1
  import { Readable } from 'stream';
2
- import { BaseConnection, Close } from './baseConnection.types.js';
2
+ import { BaseConnection, Param, Metadata, Close } from './baseConnection.types.js';
3
3
  import { Ifs } from './ifs/types.js';
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,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 };
@@ -1,7 +1,8 @@
1
1
  import { Oops } from "oops-error";
2
2
  function handleError(context) {
3
3
  return (err) => {
4
- const errMsg = err.cause && err.cause.getMessageSync && err.cause.getMessageSync() || err.getMessageSync && err.getMessageSync() || err.message;
4
+ const e = err;
5
+ const errMsg = e.cause?.getMessageSync?.() ?? e.getMessageSync?.() ?? e.message ?? String(err);
5
6
  const start = errMsg.indexOf(": ");
6
7
  const end = errMsg.indexOf("\n");
7
8
  const message = start > 0 && end > 0 ? errMsg.slice(start + 2, end) : errMsg;
@@ -10,7 +11,7 @@ function handleError(context) {
10
11
  message,
11
12
  context,
12
13
  category,
13
- cause: err
14
+ cause: err instanceof Error ? err : new Error(String(err))
14
15
  });
15
16
  };
16
17
  }
@@ -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,SAAS,YAAY;AAEd,SAAS,YAAY,SAAiC;AAC3D,SAAO,CAAC,QAAa;AACnB,UAAM,SACH,IAAI,SAAS,IAAI,MAAM,kBAAkB,IAAI,MAAM,eAAe,KAClE,IAAI,kBAAkB,IAAI,eAAe,KAC1C,IAAI;AACN,UAAM,QAAQ,OAAO,QAAQ,IAAI;AACjC,UAAM,MAAM,OAAO,QAAQ,IAAI;AAC/B,UAAM,UAAU,QAAQ,KAAK,MAAM,IAAI,OAAO,MAAM,QAAQ,GAAG,GAAG,IAAI;AACtE,UAAM,WACJ,QAAQ,YAAY,EAAE,SAAS,YAAY,KAC3C,OAAO,SAAS,+BAA+B,IAC3C,qBACA;AACN,UAAM,IAAI,KAAK;AAAA,MACb;AAAA,MACA;AAAA,MACA;AAAA,MACA,OAAO;AAAA,IACT,CAAC;AAAA,EACH;AACF;","names":[]}
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,SAAS,YAAY;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,KAAK;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.js';
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,27 +1,28 @@
1
- import util from "util";
2
1
  import { Readable } from "stream";
3
- function IfsReadStream(opt) {
4
- Readable.call(this, { objectMode: false });
5
- this._ifsReadStream = opt.ifsReadStream;
2
+ class IfsReadStream extends Readable {
3
+ _ifsReadStream;
4
+ constructor(opt) {
5
+ super({ objectMode: false });
6
+ this._ifsReadStream = opt.ifsReadStream;
7
+ }
8
+ _read() {
9
+ this._ifsReadStream.then(
10
+ (stream) => stream.read().then((res) => {
11
+ const raw = res;
12
+ if (raw == null) {
13
+ this.push(null);
14
+ return;
15
+ }
16
+ const buf = Buffer.isBuffer(raw) ? raw : raw instanceof Uint8Array ? Buffer.from(raw) : Buffer.from(raw);
17
+ if (buf.length === 0) {
18
+ this.push(null);
19
+ return;
20
+ }
21
+ this.push(buf);
22
+ })
23
+ ).catch((err) => this.emit("error", err));
24
+ }
6
25
  }
7
- util.inherits(IfsReadStream, Readable);
8
- IfsReadStream.prototype._read = function() {
9
- const streamPromise = this._ifsReadStream;
10
- streamPromise.then(
11
- (stream) => stream.read().then((res) => {
12
- if (res == null) {
13
- this.push(null);
14
- return;
15
- }
16
- const buf = Buffer.isBuffer(res) ? res : res instanceof Uint8Array ? Buffer.from(res) : Buffer.from(res);
17
- if (buf.length === 0) {
18
- this.push(null);
19
- return;
20
- }
21
- this.push(buf);
22
- })
23
- ).catch((err) => this.emit("error", err));
24
- };
25
26
  export {
26
27
  IfsReadStream
27
28
  };
@@ -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,OAAO,UAAU;AACjB,SAAS,gBAAgB;AAOlB,SAAS,cAAc,KAAU;AACtC,WAAS,KAAK,MAAM,EAAE,YAAY,MAAM,CAAC;AACzC,OAAK,iBAAiB,IAAI;AAC5B;AAEA,KAAK,SAAS,eAAe,QAAQ;AAErC,cAAc,UAAU,QAAQ,WAAY;AAC1C,QAAM,gBAA4C,KAAK;AACvD,gBACG;AAAA,IAAK,CAAC,WACL,OAAO,KAAK,EAAE,KAAK,CAAC,QAAa;AAE/B,UAAI,OAAO,MAAM;AACf,aAAK,KAAK,IAAI;AACd;AAAA,MACF;AAEA,YAAM,MACJ,OAAO,SAAS,GAAG,IAAI,MAAM,eAAe,aAAa,OAAO,KAAK,GAAG,IAAI,OAAO,KAAK,GAAU;AAEpG,UAAI,IAAI,WAAW,GAAG;AACpB,aAAK,KAAK,IAAI;AACd;AAAA,MACF;AAEA,WAAK,KAAK,GAAG;AAAA,IACf,CAAC;AAAA,EACH,EACC,MAAM,CAAC,QAAa,KAAK,KAAK,SAAS,GAAG,CAAC;AAChD;","names":[]}
1
+ {"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,SAAS,gBAAgB;AAOlB,MAAM,sBAAsB,SAAS;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.js';
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,18 +1,17 @@
1
- import util from "util";
2
- import FlushWritable from "flushwritable";
3
- function IfsWriteStream(opt) {
4
- FlushWritable.call(this, { objectMode: false });
5
- this._ifsWriteStream = opt.ifsWriteStream;
1
+ import { Writable } from "stream";
2
+ class IfsWriteStream extends Writable {
3
+ _ifsWriteStream;
4
+ constructor(opt) {
5
+ super({ objectMode: false });
6
+ this._ifsWriteStream = opt.ifsWriteStream;
7
+ }
8
+ _write(chunk, _, next) {
9
+ this._ifsWriteStream.then((stream) => stream.write(chunk)).then(() => next()).catch((err) => next(err));
10
+ }
11
+ _final(done) {
12
+ this._ifsWriteStream.then((stream) => stream.flush()).then(() => done()).catch((err) => done(err));
13
+ }
6
14
  }
7
- util.inherits(IfsWriteStream, FlushWritable);
8
- IfsWriteStream.prototype._write = function(chunk, _, next) {
9
- const writeStream = this._ifsWriteStream;
10
- writeStream.then((stream) => stream.write(chunk)).then(() => next()).catch((err) => this.emit("error", err));
11
- };
12
- IfsWriteStream.prototype._flush = function(done) {
13
- const writeStream = this._ifsWriteStream;
14
- writeStream.then((stream) => stream.flush()).then(() => done()).catch((err) => done(err));
15
- };
16
15
  export {
17
16
  IfsWriteStream
18
17
  };
@@ -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":"AACA,OAAO,UAAU;AACjB,OAAO,mBAAmB;AAMnB,SAAS,eAAe,KAAU;AACvC,gBAAc,KAAK,MAAM,EAAE,YAAY,MAAM,CAAC;AAC9C,OAAK,kBAAkB,IAAI;AAC7B;AAEA,KAAK,SAAS,gBAAgB,aAAa;AAE3C,eAAe,UAAU,SAAS,SAChC,OACA,GACA,MACA;AACA,QAAM,cAA2C,KAAK;AACtD,cACG,KAAK,CAAC,WAAW,OAAO,MAAM,KAAK,CAAC,EACpC,KAAK,MAAM,KAAK,CAAC,EACjB,MAAM,CAAC,QAAQ,KAAK,KAAK,SAAS,GAAG,CAAC;AAC3C;AAEA,eAAe,UAAU,SAAS,SAAU,MAA2B;AACrE,QAAM,cAA2C,KAAK;AACtD,cACG,KAAK,CAAC,WAAW,OAAO,MAAM,CAAC,EAC/B,KAAK,MAAM,KAAK,CAAC,EACjB,MAAM,CAAC,QAAQ,KAAK,GAAG,CAAC;AAC7B;","names":[]}
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,SAAS,gBAAgB;AAOlB,MAAM,uBAAuB,SAAS;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.js';
7
7
  import './ifs/types.js';
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
 
@@ -16,19 +16,19 @@ function createInMemoryConnection(jt400Factory, logger) {
16
16
  const mockFunc = pgmMockRegistry[opt.programName];
17
17
  if (mockFunc) {
18
18
  const res = mockFunc(params, timeout);
19
- return res.then ? res : Promise.resolve(res);
19
+ return typeof res.then === "function" ? res : Promise.resolve(res);
20
20
  }
21
21
  return defaultFunc(params, timeout);
22
22
  };
23
23
  };
24
- const inMemoryconnection = {
24
+ const inMemoryConnection = {
25
25
  ...instance,
26
26
  mockPgm(programName, func) {
27
27
  pgmMockRegistry[programName] = func;
28
- return inMemoryconnection;
28
+ return inMemoryConnection;
29
29
  }
30
30
  };
31
- return inMemoryconnection;
31
+ return inMemoryConnection;
32
32
  }
33
33
  export {
34
34
  createInMemoryConnection
@@ -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":"AACA,SAAS,wBAAwB;AAEjC,SAAS,gCAAgC;AAOlC,SAAS,yBACd,cACA,QACoB;AACpB,QAAM,UAAU,aAAa,yBAAyB;AACtD,QAAM,WAAW,iBAAiB;AAAA,IAChC,YAAY;AAAA,IACZ,eAAe;AAAA,IACf;AAAA,IACA,UAAU;AAAA,EACZ,CAAC;AACD,QAAM,kBAAkB,CAAC;AAEzB,QAAM,aAAa,SAAS;AAC5B,WAAS,gBAAgB,SAAU,KAAK;AACtC,UAAM,cAAc,WAAW,GAAG;AAClC,WAAO,SAAU,QAAQ,UAAU,GAAG;AACpC,YAAM,WAAW,gBAAgB,IAAI,WAAW;AAEhD,UAAI,UAAU;AACZ,cAAM,MAAM,SAAS,QAAQ,OAAO;AACpC,eAAO,IAAI,OAAO,MAAM,QAAQ,QAAQ,GAAG;AAAA,MAC7C;AAEA,aAAO,YAAY,QAAQ,OAAO;AAAA,IACpC;AAAA,EACF;AACA,QAAM,qBAAyC;AAAA,IAC7C,GAAG;AAAA,IACH,QAAQ,aAAa,MAAM;AACzB,sBAAgB,WAAW,IAAI;AAC/B,aAAO;AAAA,IACT;AAAA,EACF;AACA,SAAO;AACT;","names":[]}
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":"AACA,SAAS,wBAAwB;AAEjC,SAAS,gCAAgC;AAOlC,SAAS,yBACd,cACA,QACoB;AACpB,QAAM,UAAU,aAAa,yBAAyB;AACtD,QAAM,WAAW,iBAAiB;AAAA,IAChC,YAAY;AAAA,IACZ,eAAe;AAAA,IACf;AAAA,IACA,UAAU;AAAA,EACZ,CAAC;AACD,QAAM,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":[]}
@@ -3,6 +3,10 @@ const createInsertListInOneStatment = (jt400) => (tableName, idColumn, list) =>
3
3
  if (!list || list.length === 0) {
4
4
  return Promise.resolve([]);
5
5
  }
6
+ const firstKeys = Object.keys(list[0]).join(",");
7
+ if (list.some((r) => Object.keys(r).join(",") !== firstKeys)) {
8
+ return Promise.reject(new Error("All records must have the same keys in the same order"));
9
+ }
6
10
  const sql = "SELECT " + idColumn + " FROM NEW TABLE(" + toInsertSql(tableName, list) + ")";
7
11
  const params = list.map(Object.values).reduce((arr, valueArr) => {
8
12
  return arr.concat(valueArr);
@@ -13,19 +17,14 @@ const createInsertListInOneStatment = (jt400) => (tableName, idColumn, list) =>
13
17
  };
14
18
  const createStandardInsertList = (jt400) => (tableName, _, list) => {
15
19
  const idList = [];
16
- const pushToIdList = idList.push.bind(idList);
17
- return list.map((record) => {
18
- return {
19
- sql: toInsertSql(tableName, [record]),
20
- values: Object.values(record)
21
- };
22
- }).reduce((soFar, sqlObj) => {
23
- return soFar.then(() => {
24
- return jt400.insertAndGetId(sqlObj.sql, sqlObj.values);
25
- }).then(pushToIdList);
26
- }, Promise.resolve()).then(() => {
27
- return idList;
28
- });
20
+ return list.map((record) => ({
21
+ sql: toInsertSql(tableName, [record]),
22
+ values: Object.values(record)
23
+ })).reduce((soFar, sqlObj) => {
24
+ return soFar.then(() => jt400.insertAndGetId(sqlObj.sql, sqlObj.values)).then((id) => {
25
+ idList.push(id);
26
+ });
27
+ }, Promise.resolve()).then(() => idList);
29
28
  };
30
29
  export {
31
30
  createInsertListInOneStatment,
@@ -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":"AACA,SAAS,mBAAmB;AAGrB,MAAM,gCACX,CAAC,UAAU,CAAC,WAAW,UAAU,SAAS;AACxC,MAAI,CAAC,QAAQ,KAAK,WAAW,GAAG;AAC9B,WAAO,QAAQ,QAAQ,CAAC,CAAC;AAAA,EAC3B;AACA,QAAM,MACJ,YACA,WACA,qBACA,YAAY,WAAW,IAAI,IAC3B;AACF,QAAM,SAAS,KAAK,IAAI,OAAO,MAAM,EAAE,OAAO,CAAC,KAAK,aAAa;AAC/D,WAAO,IAAI,OAAO,QAAQ;AAAA,EAC5B,GAAG,CAAC,CAAC;AAEL,SAAO,MAAM,MAAW,KAAK,MAAM,EAAE,KAAK,CAAC,WAAW;AACpD,WAAO,OAAO,IAAI,CAAC,UAAU,MAAM,SAAS,YAAY,CAAC,CAAC;AAAA,EAC5D,CAAC;AACH;AAEK,MAAM,2BACX,CAAC,UAAU,CAAC,WAAW,GAAG,SAAS;AACjC,QAAM,SAAS,CAAC;AAChB,QAAM,eAAe,OAAO,KAAK,KAAK,MAAM;AAE5C,SAAO,KACJ,IAAI,CAAC,WAAW;AACf,WAAO;AAAA,MACL,KAAK,YAAY,WAAW,CAAC,MAAM,CAAC;AAAA,MACpC,QAAQ,OAAO,OAAO,MAAM;AAAA,IAC9B;AAAA,EACF,CAAC,EACA,OAAO,CAAC,OAAO,WAAgB;AAC9B,WAAO,MACJ,KAAK,MAAM;AACV,aAAO,MAAM,eAAe,OAAO,KAAK,OAAO,MAAM;AAAA,IACvD,CAAC,EACA,KAAK,YAAY;AAAA,EACtB,GAAG,QAAQ,QAAQ,CAAC,EACnB,KAAK,MAAM;AACV,WAAO;AAAA,EACT,CAAC;AACL;","names":[]}
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":"AACA,SAAS,mBAAmB;AAGrB,MAAM,gCACX,CAAC,UAAU,CAAC,WAAW,UAAU,SAAS;AACxC,MAAI,CAAC,QAAQ,KAAK,WAAW,GAAG;AAC9B,WAAO,QAAQ,QAAQ,CAAC,CAAC;AAAA,EAC3B;AACA,QAAM,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,qBACA,YAAY,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,KAAK,YAAY,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.js';
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 };
@@ -1,42 +1,37 @@
1
- import { inherits } from "util";
2
1
  import { Readable } from "stream";
3
- function JdbcStream(opt) {
4
- Readable.call(this, { objectMode: false });
5
- this._jdbcStream = opt.jdbcStream;
6
- this._jdbcStreamPromise = opt.jdbcStreamPromise;
7
- }
8
- inherits(JdbcStream, Readable);
9
- function read(context) {
10
- if (context._closed) {
11
- context._jdbcStream.close().catch((err) => {
12
- if (err) {
13
- context.emit("error", err);
14
- }
15
- });
16
- context.push(null);
17
- } else {
18
- context._jdbcStream.read().then((res) => {
19
- context.push(res);
20
- }).catch((err) => {
21
- context.emit("error", err);
22
- });
2
+ class JdbcStream extends Readable {
3
+ _jdbcStream;
4
+ _jdbcStreamPromise;
5
+ _closed = false;
6
+ constructor(opt) {
7
+ super({ objectMode: false });
8
+ this._jdbcStream = opt.jdbcStream;
9
+ this._jdbcStreamPromise = opt.jdbcStreamPromise;
23
10
  }
24
- }
25
- JdbcStream.prototype.close = function() {
26
- this._closed = true;
27
- };
28
- JdbcStream.prototype._read = function() {
29
- if (!this._jdbcStream) {
30
- this._jdbcStreamPromise.then((stream) => {
31
- this._jdbcStream = stream;
32
- read(this);
33
- }).catch((err) => {
34
- this.emit("error", err);
35
- });
36
- } else {
37
- read(this);
11
+ close() {
12
+ this._closed = true;
38
13
  }
39
- };
14
+ _readFromStream(stream) {
15
+ if (this._closed) {
16
+ stream.close().catch((err) => {
17
+ if (err) this.emit("error", err);
18
+ });
19
+ this.push(null);
20
+ } else {
21
+ stream.read().then((res) => this.push(res)).catch((err) => this.emit("error", err));
22
+ }
23
+ }
24
+ _read() {
25
+ if (!this._jdbcStream) {
26
+ this._jdbcStreamPromise.then((stream) => {
27
+ this._jdbcStream = stream;
28
+ this._readFromStream(stream);
29
+ }).catch((err) => this.emit("error", err));
30
+ } else {
31
+ this._readFromStream(this._jdbcStream);
32
+ }
33
+ }
34
+ }
40
35
  export {
41
36
  JdbcStream
42
37
  };
@@ -1 +1 @@
1
- {"version":3,"sources":["../../ts-src/lib/jdbcstream.ts"],"sourcesContent":["import { inherits } from 'util'\nimport { Readable } from 'stream'\n\nexport function JdbcStream(opt) {\n Readable.call(this, { objectMode: false })\n this._jdbcStream = opt.jdbcStream\n this._jdbcStreamPromise = opt.jdbcStreamPromise\n}\n\ninherits(JdbcStream, Readable)\n\nfunction read(context) {\n if (context._closed) {\n context._jdbcStream.close().catch((err) => {\n if (err) {\n context.emit('error', err)\n }\n })\n context.push(null)\n } else {\n context._jdbcStream\n .read()\n .then((res) => {\n context.push(res)\n })\n .catch((err) => {\n context.emit('error', err)\n })\n }\n}\n\nJdbcStream.prototype.close = function () {\n this._closed = true\n}\n\nJdbcStream.prototype._read = function () {\n if (!this._jdbcStream) {\n this._jdbcStreamPromise\n .then((stream) => {\n this._jdbcStream = stream\n read(this)\n })\n .catch((err) => {\n this.emit('error', err)\n })\n } else {\n read(this)\n }\n}\n"],"mappings":"AAAA,SAAS,gBAAgB;AACzB,SAAS,gBAAgB;AAElB,SAAS,WAAW,KAAK;AAC9B,WAAS,KAAK,MAAM,EAAE,YAAY,MAAM,CAAC;AACzC,OAAK,cAAc,IAAI;AACvB,OAAK,qBAAqB,IAAI;AAChC;AAEA,SAAS,YAAY,QAAQ;AAE7B,SAAS,KAAK,SAAS;AACrB,MAAI,QAAQ,SAAS;AACnB,YAAQ,YAAY,MAAM,EAAE,MAAM,CAAC,QAAQ;AACzC,UAAI,KAAK;AACP,gBAAQ,KAAK,SAAS,GAAG;AAAA,MAC3B;AAAA,IACF,CAAC;AACD,YAAQ,KAAK,IAAI;AAAA,EACnB,OAAO;AACL,YAAQ,YACL,KAAK,EACL,KAAK,CAAC,QAAQ;AACb,cAAQ,KAAK,GAAG;AAAA,IAClB,CAAC,EACA,MAAM,CAAC,QAAQ;AACd,cAAQ,KAAK,SAAS,GAAG;AAAA,IAC3B,CAAC;AAAA,EACL;AACF;AAEA,WAAW,UAAU,QAAQ,WAAY;AACvC,OAAK,UAAU;AACjB;AAEA,WAAW,UAAU,QAAQ,WAAY;AACvC,MAAI,CAAC,KAAK,aAAa;AACrB,SAAK,mBACF,KAAK,CAAC,WAAW;AAChB,WAAK,cAAc;AACnB,WAAK,IAAI;AAAA,IACX,CAAC,EACA,MAAM,CAAC,QAAQ;AACd,WAAK,KAAK,SAAS,GAAG;AAAA,IACxB,CAAC;AAAA,EACL,OAAO;AACL,SAAK,IAAI;AAAA,EACX;AACF;","names":[]}
1
+ {"version":3,"sources":["../../ts-src/lib/jdbcstream.ts"],"sourcesContent":["import { Readable } from 'stream'\nimport { ResultStream } from '../java/JT400.js'\n\ntype Opt = {\n jdbcStream?: ResultStream\n jdbcStreamPromise?: Promise<ResultStream>\n}\n\nexport class JdbcStream extends Readable {\n private _jdbcStream?: ResultStream\n private _jdbcStreamPromise?: Promise<ResultStream>\n private _closed = false\n\n constructor(opt: Opt) {\n super({ objectMode: false })\n this._jdbcStream = opt.jdbcStream\n this._jdbcStreamPromise = opt.jdbcStreamPromise\n }\n\n close() {\n this._closed = true\n }\n\n private _readFromStream(stream: ResultStream) {\n if (this._closed) {\n stream.close().catch((err) => {\n if (err) this.emit('error', err)\n })\n this.push(null)\n } else {\n stream\n .read()\n .then((res) => this.push(res))\n .catch((err) => this.emit('error', err))\n }\n }\n\n _read() {\n if (!this._jdbcStream) {\n this._jdbcStreamPromise!\n .then((stream) => {\n this._jdbcStream = stream\n this._readFromStream(stream)\n })\n .catch((err) => this.emit('error', err))\n } else {\n this._readFromStream(this._jdbcStream)\n }\n }\n}\n"],"mappings":"AAAA,SAAS,gBAAgB;AAQlB,MAAM,mBAAmB,SAAS;AAAA,EAC/B;AAAA,EACA;AAAA,EACA,UAAU;AAAA,EAElB,YAAY,KAAU;AACpB,UAAM,EAAE,YAAY,MAAM,CAAC;AAC3B,SAAK,cAAc,IAAI;AACvB,SAAK,qBAAqB,IAAI;AAAA,EAChC;AAAA,EAEA,QAAQ;AACN,SAAK,UAAU;AAAA,EACjB;AAAA,EAEQ,gBAAgB,QAAsB;AAC5C,QAAI,KAAK,SAAS;AAChB,aAAO,MAAM,EAAE,MAAM,CAAC,QAAQ;AAC5B,YAAI,IAAK,MAAK,KAAK,SAAS,GAAG;AAAA,MACjC,CAAC;AACD,WAAK,KAAK,IAAI;AAAA,IAChB,OAAO;AACL,aACG,KAAK,EACL,KAAK,CAAC,QAAQ,KAAK,KAAK,GAAG,CAAC,EAC5B,MAAM,CAAC,QAAQ,KAAK,KAAK,SAAS,GAAG,CAAC;AAAA,IAC3C;AAAA,EACF;AAAA,EAEA,QAAQ;AACN,QAAI,CAAC,KAAK,aAAa;AACrB,WAAK,mBACF,KAAK,CAAC,WAAW;AAChB,aAAK,cAAc;AACnB,aAAK,gBAAgB,MAAM;AAAA,MAC7B,CAAC,EACA,MAAM,CAAC,QAAQ,KAAK,KAAK,SAAS,GAAG,CAAC;AAAA,IAC3C,OAAO;AACL,WAAK,gBAAgB,KAAK,WAAW;AAAA,IACvC;AAAA,EACF;AACF;","names":[]}
@@ -1,3 +1,6 @@
1
- declare function createJdbcWriteStream(batchUpdate: any, statement: any, bufferSize: any): any;
1
+ import { Writable } from 'stream';
2
+ import { BatchUpdate } from './baseConnection.types.js';
3
+
4
+ declare function createJdbcWriteStream(batchUpdate: BatchUpdate, statement: string, bufferSize?: number): Writable;
2
5
 
3
6
  export { createJdbcWriteStream };
@@ -1,24 +1,21 @@
1
- import FlushWritable from "flushwritable";
2
- function createJdbcWriteStream(batchUpdate, statement, bufferSize) {
3
- bufferSize = bufferSize || 100;
4
- const ws = new FlushWritable({ objectMode: true });
1
+ import { Writable } from "stream";
2
+ function createJdbcWriteStream(batchUpdate, statement, bufferSize = 100) {
5
3
  let dataBuffer = [];
6
4
  function flush(done) {
7
5
  const d = dataBuffer;
8
6
  dataBuffer = [];
9
- batchUpdate(statement, d).then(() => {
10
- done();
11
- }).catch(done);
7
+ batchUpdate(statement, d).then(() => done()).catch(done);
12
8
  }
13
- ws._write = function(chunck, _, next) {
14
- dataBuffer.push(chunck);
9
+ const ws = new Writable({ objectMode: true });
10
+ ws._write = function(chunk, _, next) {
11
+ dataBuffer.push(chunk);
15
12
  if (dataBuffer.length >= bufferSize) {
16
13
  flush(next);
17
14
  } else {
18
15
  next();
19
16
  }
20
17
  };
21
- ws._flush = function(done) {
18
+ ws._final = function(done) {
22
19
  if (dataBuffer.length) {
23
20
  flush(done);
24
21
  } else {
@@ -1 +1 @@
1
- {"version":3,"sources":["../../ts-src/lib/jdbcwritestream.ts"],"sourcesContent":["import FlushWritable from 'flushwritable'\n\nexport function createJdbcWriteStream(batchUpdate, statement, bufferSize) {\n bufferSize = bufferSize || 100\n const ws = new FlushWritable({ objectMode: true })\n let dataBuffer: any[] = []\n\n function flush(done) {\n const d = dataBuffer\n dataBuffer = []\n batchUpdate(statement, d)\n .then(() => {\n done()\n })\n .catch(done)\n }\n\n ws._write = function (chunck, _, next) {\n dataBuffer.push(chunck)\n if (dataBuffer.length >= bufferSize) {\n flush(next)\n } else {\n next()\n }\n }\n\n ws._flush = function (done) {\n if (dataBuffer.length) {\n flush(done)\n } else {\n done()\n }\n }\n\n return ws\n}\n"],"mappings":"AAAA,OAAO,mBAAmB;AAEnB,SAAS,sBAAsB,aAAa,WAAW,YAAY;AACxE,eAAa,cAAc;AAC3B,QAAM,KAAK,IAAI,cAAc,EAAE,YAAY,KAAK,CAAC;AACjD,MAAI,aAAoB,CAAC;AAEzB,WAAS,MAAM,MAAM;AACnB,UAAM,IAAI;AACV,iBAAa,CAAC;AACd,gBAAY,WAAW,CAAC,EACrB,KAAK,MAAM;AACV,WAAK;AAAA,IACP,CAAC,EACA,MAAM,IAAI;AAAA,EACf;AAEA,KAAG,SAAS,SAAU,QAAQ,GAAG,MAAM;AACrC,eAAW,KAAK,MAAM;AACtB,QAAI,WAAW,UAAU,YAAY;AACnC,YAAM,IAAI;AAAA,IACZ,OAAO;AACL,WAAK;AAAA,IACP;AAAA,EACF;AAEA,KAAG,SAAS,SAAU,MAAM;AAC1B,QAAI,WAAW,QAAQ;AACrB,YAAM,IAAI;AAAA,IACZ,OAAO;AACL,WAAK;AAAA,IACP;AAAA,EACF;AAEA,SAAO;AACT;","names":[]}
1
+ {"version":3,"sources":["../../ts-src/lib/jdbcwritestream.ts"],"sourcesContent":["import { Writable } from 'stream'\nimport { BatchUpdate, Param } from './baseConnection.types.js'\n\nexport function createJdbcWriteStream(\n batchUpdate: BatchUpdate,\n statement: string,\n bufferSize: number = 100,\n): Writable {\n let dataBuffer: Param[][] = []\n\n function flush(done: (err?: Error | null) => void) {\n const d = dataBuffer\n dataBuffer = []\n batchUpdate(statement, d)\n .then(() => done())\n .catch(done)\n }\n\n const ws = new Writable({ objectMode: true })\n\n ws._write = function (chunk: Param[], _: string, next: (err?: Error | null) => void) {\n dataBuffer.push(chunk)\n if (dataBuffer.length >= bufferSize) {\n flush(next)\n } else {\n next()\n }\n }\n\n ws._final = function (done: (err?: Error | null) => void) {\n if (dataBuffer.length) {\n flush(done)\n } else {\n done()\n }\n }\n\n return ws\n}\n"],"mappings":"AAAA,SAAS,gBAAgB;AAGlB,SAAS,sBACd,aACA,WACA,aAAqB,KACX;AACV,MAAI,aAAwB,CAAC;AAE7B,WAAS,MAAM,MAAoC;AACjD,UAAM,IAAI;AACV,iBAAa,CAAC;AACd,gBAAY,WAAW,CAAC,EACrB,KAAK,MAAM,KAAK,CAAC,EACjB,MAAM,IAAI;AAAA,EACf;AAEA,QAAM,KAAK,IAAI,SAAS,EAAE,YAAY,KAAK,CAAC;AAE5C,KAAG,SAAS,SAAU,OAAgB,GAAW,MAAoC;AACnF,eAAW,KAAK,KAAK;AACrB,QAAI,WAAW,UAAU,YAAY;AACnC,YAAM,IAAI;AAAA,IACZ,OAAO;AACL,WAAK;AAAA,IACP;AAAA,EACF;AAEA,KAAG,SAAS,SAAU,MAAoC;AACxD,QAAI,WAAW,QAAQ;AACrB,YAAM,IAAI;AAAA,IACZ,OAAO;AACL,WAAK;AAAA,IACP;AAAA,EACF;AAEA,SAAO;AACT;","names":[]}
@@ -1,8 +1,8 @@
1
1
  interface Logger {
2
- debug: (message: any, ...args: any[]) => void;
3
- info: (message: any, ...args: any[]) => void;
4
- warn: (message: any, ...args: any[]) => void;
5
- error: (message: any, ...args: any[]) => void;
2
+ debug: (message: unknown, ...args: unknown[]) => void;
3
+ info: (message: unknown, ...args: unknown[]) => void;
4
+ warn: (message: unknown, ...args: unknown[]) => void;
5
+ error: (message: unknown, ...args: unknown[]) => void;
6
6
  }
7
7
  declare const createDefaultLogger: () => Logger;
8
8
 
@@ -1 +1 @@
1
- {"version":3,"sources":["../../ts-src/lib/logger.ts"],"sourcesContent":["export interface Logger {\n debug: (message: any, ...args: any[]) => void\n info: (message: any, ...args: any[]) => void\n warn: (message: any, ...args: any[]) => void\n error: (message: any, ...args: any[]) => void\n}\n\nexport const createDefaultLogger = (): Logger => {\n // Default logger that does nothing\n return {\n debug: () => {},\n info: () => {},\n warn: () => {},\n error: () => {},\n }\n}\n"],"mappings":"AAOO,MAAM,sBAAsB,MAAc;AAE/C,SAAO;AAAA,IACL,OAAO,MAAM;AAAA,IAAC;AAAA,IACd,MAAM,MAAM;AAAA,IAAC;AAAA,IACb,MAAM,MAAM;AAAA,IAAC;AAAA,IACb,OAAO,MAAM;AAAA,IAAC;AAAA,EAChB;AACF;","names":[]}
1
+ {"version":3,"sources":["../../ts-src/lib/logger.ts"],"sourcesContent":["export interface Logger {\n debug: (message: unknown, ...args: unknown[]) => void\n info: (message: unknown, ...args: unknown[]) => void\n warn: (message: unknown, ...args: unknown[]) => void\n error: (message: unknown, ...args: unknown[]) => void\n}\n\nexport const createDefaultLogger = (): Logger => {\n // Default logger that does nothing\n return {\n debug: () => {},\n info: () => {},\n warn: () => {},\n error: () => {},\n }\n}\n"],"mappings":"AAOO,MAAM,sBAAsB,MAAc;AAE/C,SAAO;AAAA,IACL,OAAO,MAAM;AAAA,IAAC;AAAA,IACd,MAAM,MAAM;AAAA,IAAC;AAAA,IACb,MAAM,MAAM;AAAA,IAAC;AAAA,IACb,OAAO,MAAM;AAAA,IAAC;AAAA,EAChB;AACF;","names":[]}
@@ -1,3 +1,6 @@
1
- declare function toInsertSql(tableName: string, records: any[]): string;
1
+ import { Param } from './baseConnection.types.js';
2
+ import 'stream';
3
+
4
+ declare function toInsertSql(tableName: string, records: Record<string, Param>[]): string;
2
5
 
3
6
  export { toInsertSql };
@@ -3,6 +3,7 @@ function recordToValues(record) {
3
3
  return "(" + str + ")";
4
4
  }
5
5
  function toInsertSql(tableName, records) {
6
+ if (!records.length) throw new Error("toInsertSql requires at least one record");
6
7
  const first = records[0];
7
8
  const keys = Object.keys(first);
8
9
  const sql = `INSERT INTO ${tableName} (${keys.join(", ")}) VALUES${records.map(recordToValues).join(", ")}`;
@@ -1 +1 @@
1
- {"version":3,"sources":["../../ts-src/lib/sqlutil.ts"],"sourcesContent":["function recordToValues(record) {\n const str = Object.keys(record)\n .map(() => '?')\n .join(', ')\n return '(' + str + ')'\n}\n\n/**\n * Returns insert statement for records\n */\nexport function toInsertSql(tableName: string, records: any[]): string {\n const first = records[0]\n const keys = Object.keys(first)\n const sql = `INSERT INTO ${tableName} (${keys.join(', ')}) VALUES${records\n .map(recordToValues)\n .join(', ')}`\n return sql\n}\n"],"mappings":"AAAA,SAAS,eAAe,QAAQ;AAC9B,QAAM,MAAM,OAAO,KAAK,MAAM,EAC3B,IAAI,MAAM,GAAG,EACb,KAAK,IAAI;AACZ,SAAO,MAAM,MAAM;AACrB;AAKO,SAAS,YAAY,WAAmB,SAAwB;AACrE,QAAM,QAAQ,QAAQ,CAAC;AACvB,QAAM,OAAO,OAAO,KAAK,KAAK;AAC9B,QAAM,MAAM,eAAe,SAAS,KAAK,KAAK,KAAK,IAAI,CAAC,WAAW,QAChE,IAAI,cAAc,EAClB,KAAK,IAAI,CAAC;AACb,SAAO;AACT;","names":[]}
1
+ {"version":3,"sources":["../../ts-src/lib/sqlutil.ts"],"sourcesContent":["import { Param } from './baseConnection.types.js'\n\nfunction recordToValues(record: Record<string, Param>): string {\n const str = Object.keys(record)\n .map(() => '?')\n .join(', ')\n return '(' + str + ')'\n}\n\nexport function toInsertSql(tableName: string, records: Record<string, Param>[]): string {\n if (!records.length) throw new Error('toInsertSql requires at least one record')\n const first = records[0]\n const keys = Object.keys(first)\n const sql = `INSERT INTO ${tableName} (${keys.join(', ')}) VALUES${records\n .map(recordToValues)\n .join(', ')}`\n return sql\n}\n"],"mappings":"AAEA,SAAS,eAAe,QAAuC;AAC7D,QAAM,MAAM,OAAO,KAAK,MAAM,EAC3B,IAAI,MAAM,GAAG,EACb,KAAK,IAAI;AACZ,SAAO,MAAM,MAAM;AACrB;AAEO,SAAS,YAAY,WAAmB,SAA0C;AACvF,MAAI,CAAC,QAAQ,OAAQ,OAAM,IAAI,MAAM,0CAA0C;AAC/E,QAAM,QAAQ,QAAQ,CAAC;AACvB,QAAM,OAAO,OAAO,KAAK,KAAK;AAC9B,QAAM,MAAM,eAAe,SAAS,KAAK,KAAK,KAAK,IAAI,CAAC,WAAW,QAChE,IAAI,cAAc,EAClB,KAAK,IAAI,CAAC;AACb,SAAO;AACT;","names":[]}
@@ -1,5 +1,6 @@
1
1
  import { Transform } from 'stream';
2
+ import { Metadata } from './baseConnection.types.js';
2
3
 
3
- declare function arrayToObject(metadata: any): Transform;
4
+ declare function arrayToObject(metadata: Metadata[]): Transform;
4
5
 
5
6
  export { arrayToObject };
@@ -21,7 +21,7 @@ function arrayToObject(metadata) {
21
21
  }
22
22
  callback(null, obj);
23
23
  } catch (err) {
24
- callback(err);
24
+ callback(err instanceof Error ? err : new Error(String(err)));
25
25
  }
26
26
  }
27
27
  });
@@ -1 +1 @@
1
- {"version":3,"sources":["../../ts-src/lib/streamTransformers.ts"],"sourcesContent":["import { Transform } from 'stream'\n\nexport function arrayToObject(metadata) {\n const columnNames = metadata.map((md) => md.name)\n\n const transformer = new Transform({\n objectMode: true,\n transform(chunk, _, callback) {\n try {\n if (!Array.isArray(chunk)) {\n return callback(new Error('Expected an array chunk as input'))\n }\n\n if (chunk.length !== columnNames.length) {\n return callback(\n new Error(\n `Array chunk length ${chunk.length} does not match columns length ${columnNames.length}`,\n ),\n )\n }\n\n const obj = {}\n for (let i = 0; i < columnNames.length; i++) {\n obj[columnNames[i]] = chunk[i]\n }\n\n callback(null, obj)\n } catch (err) {\n callback(err)\n }\n },\n })\n\n return transformer\n}\n"],"mappings":"AAAA,SAAS,iBAAiB;AAEnB,SAAS,cAAc,UAAU;AACtC,QAAM,cAAc,SAAS,IAAI,CAAC,OAAO,GAAG,IAAI;AAEhD,QAAM,cAAc,IAAI,UAAU;AAAA,IAChC,YAAY;AAAA,IACZ,UAAU,OAAO,GAAG,UAAU;AAC5B,UAAI;AACF,YAAI,CAAC,MAAM,QAAQ,KAAK,GAAG;AACzB,iBAAO,SAAS,IAAI,MAAM,kCAAkC,CAAC;AAAA,QAC/D;AAEA,YAAI,MAAM,WAAW,YAAY,QAAQ;AACvC,iBAAO;AAAA,YACL,IAAI;AAAA,cACF,sBAAsB,MAAM,MAAM,kCAAkC,YAAY,MAAM;AAAA,YACxF;AAAA,UACF;AAAA,QACF;AAEA,cAAM,MAAM,CAAC;AACb,iBAAS,IAAI,GAAG,IAAI,YAAY,QAAQ,KAAK;AAC3C,cAAI,YAAY,CAAC,CAAC,IAAI,MAAM,CAAC;AAAA,QAC/B;AAEA,iBAAS,MAAM,GAAG;AAAA,MACpB,SAAS,KAAK;AACZ,iBAAS,GAAG;AAAA,MACd;AAAA,IACF;AAAA,EACF,CAAC;AAED,SAAO;AACT;","names":[]}
1
+ {"version":3,"sources":["../../ts-src/lib/streamTransformers.ts"],"sourcesContent":["import { Transform } from 'stream'\nimport { Metadata } from './baseConnection.types.js'\n\nexport function arrayToObject(metadata: Metadata[]) {\n const columnNames = metadata.map((md) => md.name)\n\n const transformer = new Transform({\n objectMode: true,\n transform(chunk, _, callback) {\n try {\n if (!Array.isArray(chunk)) {\n return callback(new Error('Expected an array chunk as input'))\n }\n\n if (chunk.length !== columnNames.length) {\n return callback(\n new Error(\n `Array chunk length ${chunk.length} does not match columns length ${columnNames.length}`,\n ),\n )\n }\n\n const obj = {}\n for (let i = 0; i < columnNames.length; i++) {\n obj[columnNames[i]] = chunk[i]\n }\n\n callback(null, obj)\n } catch (err) {\n callback(err instanceof Error ? err : new Error(String(err)))\n }\n },\n })\n\n return transformer\n}\n"],"mappings":"AAAA,SAAS,iBAAiB;AAGnB,SAAS,cAAc,UAAsB;AAClD,QAAM,cAAc,SAAS,IAAI,CAAC,OAAO,GAAG,IAAI;AAEhD,QAAM,cAAc,IAAI,UAAU;AAAA,IAChC,YAAY;AAAA,IACZ,UAAU,OAAO,GAAG,UAAU;AAC5B,UAAI;AACF,YAAI,CAAC,MAAM,QAAQ,KAAK,GAAG;AACzB,iBAAO,SAAS,IAAI,MAAM,kCAAkC,CAAC;AAAA,QAC/D;AAEA,YAAI,MAAM,WAAW,YAAY,QAAQ;AACvC,iBAAO;AAAA,YACL,IAAI;AAAA,cACF,sBAAsB,MAAM,MAAM,kCAAkC,YAAY,MAAM;AAAA,YACxF;AAAA,UACF;AAAA,QACF;AAEA,cAAM,MAAM,CAAC;AACb,iBAAS,IAAI,GAAG,IAAI,YAAY,QAAQ,KAAK;AAC3C,cAAI,YAAY,CAAC,CAAC,IAAI,MAAM,CAAC;AAAA,QAC/B;AAEA,iBAAS,MAAM,GAAG;AAAA,MACpB,SAAS,KAAK;AACZ,iBAAS,eAAe,QAAQ,MAAM,IAAI,MAAM,OAAO,GAAG,CAAC,CAAC;AAAA,MAC9D;AAAA,IACF;AAAA,EACF,CAAC;AAED,SAAO;AACT;","names":[]}