@haybarn/node-api 1.5.3-rc2

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 (149) hide show
  1. package/LICENSE +7 -0
  2. package/README.md +1224 -0
  3. package/lib/DuckDBAppender.d.ts +51 -0
  4. package/lib/DuckDBAppender.js +149 -0
  5. package/lib/DuckDBBindInfo.d.ts +12 -0
  6. package/lib/DuckDBBindInfo.js +33 -0
  7. package/lib/DuckDBClientContext.d.ts +6 -0
  8. package/lib/DuckDBClientContext.js +17 -0
  9. package/lib/DuckDBConnection.d.ts +49 -0
  10. package/lib/DuckDBConnection.js +208 -0
  11. package/lib/DuckDBDataChunk.d.ts +41 -0
  12. package/lib/DuckDBDataChunk.js +223 -0
  13. package/lib/DuckDBExtractedStatements.d.ts +12 -0
  14. package/lib/DuckDBExtractedStatements.js +31 -0
  15. package/lib/DuckDBFunctionInfo.d.ts +10 -0
  16. package/lib/DuckDBFunctionInfo.js +29 -0
  17. package/lib/DuckDBInstance.d.ts +10 -0
  18. package/lib/DuckDBInstance.js +30 -0
  19. package/lib/DuckDBInstanceCache.d.ts +8 -0
  20. package/lib/DuckDBInstanceCache.js +28 -0
  21. package/lib/DuckDBLogicalType.d.ts +66 -0
  22. package/lib/DuckDBLogicalType.js +328 -0
  23. package/lib/DuckDBMaterializedResult.d.ts +9 -0
  24. package/lib/DuckDBMaterializedResult.js +24 -0
  25. package/lib/DuckDBPendingResult.d.ts +18 -0
  26. package/lib/DuckDBPendingResult.js +60 -0
  27. package/lib/DuckDBPreparedStatement.d.ts +72 -0
  28. package/lib/DuckDBPreparedStatement.js +219 -0
  29. package/lib/DuckDBPreparedStatementCollection.d.ts +4 -0
  30. package/lib/DuckDBPreparedStatementCollection.js +2 -0
  31. package/lib/DuckDBPreparedStatementWeakRefCollection.d.ts +9 -0
  32. package/lib/DuckDBPreparedStatementWeakRefCollection.js +28 -0
  33. package/lib/DuckDBResult.d.ts +57 -0
  34. package/lib/DuckDBResult.js +229 -0
  35. package/lib/DuckDBResultReader.d.ts +68 -0
  36. package/lib/DuckDBResultReader.js +203 -0
  37. package/lib/DuckDBScalarFunction.d.ts +33 -0
  38. package/lib/DuckDBScalarFunction.js +83 -0
  39. package/lib/DuckDBType.d.ts +373 -0
  40. package/lib/DuckDBType.js +930 -0
  41. package/lib/DuckDBTypeId.d.ts +42 -0
  42. package/lib/DuckDBTypeId.js +47 -0
  43. package/lib/DuckDBValueConverter.d.ts +3 -0
  44. package/lib/DuckDBValueConverter.js +2 -0
  45. package/lib/DuckDBValueConverters.d.ts +47 -0
  46. package/lib/DuckDBValueConverters.js +214 -0
  47. package/lib/DuckDBVector.d.ts +596 -0
  48. package/lib/DuckDBVector.js +2525 -0
  49. package/lib/JS.d.ts +3 -0
  50. package/lib/JS.js +2 -0
  51. package/lib/JSDuckDBValueConverter.d.ts +3 -0
  52. package/lib/JSDuckDBValueConverter.js +49 -0
  53. package/lib/Json.d.ts +3 -0
  54. package/lib/Json.js +2 -0
  55. package/lib/JsonDuckDBValueConverter.d.ts +3 -0
  56. package/lib/JsonDuckDBValueConverter.js +49 -0
  57. package/lib/configurationOptionDescriptions.d.ts +1 -0
  58. package/lib/configurationOptionDescriptions.js +16 -0
  59. package/lib/conversion/bytesFromString.d.ts +1 -0
  60. package/lib/conversion/bytesFromString.js +7 -0
  61. package/lib/conversion/dateTimeStringConversion.d.ts +20 -0
  62. package/lib/conversion/dateTimeStringConversion.js +238 -0
  63. package/lib/conversion/displayStringForDuckDBValue.d.ts +2 -0
  64. package/lib/conversion/displayStringForDuckDBValue.js +13 -0
  65. package/lib/conversion/stringFromBlob.d.ts +4 -0
  66. package/lib/conversion/stringFromBlob.js +45 -0
  67. package/lib/conversion/stringFromDecimal.d.ts +18 -0
  68. package/lib/conversion/stringFromDecimal.js +80 -0
  69. package/lib/convertColumnsFromChunks.d.ts +3 -0
  70. package/lib/convertColumnsFromChunks.js +16 -0
  71. package/lib/convertColumnsObjectFromChunks.d.ts +3 -0
  72. package/lib/convertColumnsObjectFromChunks.js +19 -0
  73. package/lib/convertRowObjectsFromChunks.d.ts +3 -0
  74. package/lib/convertRowObjectsFromChunks.js +17 -0
  75. package/lib/convertRowsFromChunks.d.ts +3 -0
  76. package/lib/convertRowsFromChunks.js +13 -0
  77. package/lib/createConfig.d.ts +2 -0
  78. package/lib/createConfig.js +19 -0
  79. package/lib/createDuckDBValueConverter.d.ts +3 -0
  80. package/lib/createDuckDBValueConverter.js +15 -0
  81. package/lib/createResult.d.ts +3 -0
  82. package/lib/createResult.js +17 -0
  83. package/lib/createValue.d.ts +4 -0
  84. package/lib/createValue.js +222 -0
  85. package/lib/duckdb.d.ts +33 -0
  86. package/lib/duckdb.js +54 -0
  87. package/lib/enums.d.ts +5 -0
  88. package/lib/enums.js +9 -0
  89. package/lib/getColumnsFromChunks.d.ts +3 -0
  90. package/lib/getColumnsFromChunks.js +10 -0
  91. package/lib/getColumnsObjectFromChunks.d.ts +3 -0
  92. package/lib/getColumnsObjectFromChunks.js +10 -0
  93. package/lib/getRowObjectsFromChunks.d.ts +3 -0
  94. package/lib/getRowObjectsFromChunks.js +10 -0
  95. package/lib/getRowsFromChunks.d.ts +3 -0
  96. package/lib/getRowsFromChunks.js +10 -0
  97. package/lib/index.d.ts +3 -0
  98. package/lib/index.js +41 -0
  99. package/lib/sleep.d.ts +1 -0
  100. package/lib/sleep.js +8 -0
  101. package/lib/sql.d.ts +2 -0
  102. package/lib/sql.js +10 -0
  103. package/lib/typeForValue.d.ts +3 -0
  104. package/lib/typeForValue.js +91 -0
  105. package/lib/values/DuckDBArrayValue.d.ts +7 -0
  106. package/lib/values/DuckDBArrayValue.js +18 -0
  107. package/lib/values/DuckDBBitValue.d.ts +16 -0
  108. package/lib/values/DuckDBBitValue.js +103 -0
  109. package/lib/values/DuckDBBlobValue.d.ts +8 -0
  110. package/lib/values/DuckDBBlobValue.js +26 -0
  111. package/lib/values/DuckDBDateValue.d.ts +16 -0
  112. package/lib/values/DuckDBDateValue.js +39 -0
  113. package/lib/values/DuckDBDecimalValue.d.ts +19 -0
  114. package/lib/values/DuckDBDecimalValue.js +44 -0
  115. package/lib/values/DuckDBIntervalValue.d.ts +9 -0
  116. package/lib/values/DuckDBIntervalValue.js +22 -0
  117. package/lib/values/DuckDBListValue.d.ts +7 -0
  118. package/lib/values/DuckDBListValue.js +18 -0
  119. package/lib/values/DuckDBMapValue.d.ts +11 -0
  120. package/lib/values/DuckDBMapValue.js +18 -0
  121. package/lib/values/DuckDBStructValue.d.ts +7 -0
  122. package/lib/values/DuckDBStructValue.js +22 -0
  123. package/lib/values/DuckDBTimeNSValue.d.ts +9 -0
  124. package/lib/values/DuckDBTimeNSValue.js +20 -0
  125. package/lib/values/DuckDBTimeTZValue.d.ts +35 -0
  126. package/lib/values/DuckDBTimeTZValue.js +65 -0
  127. package/lib/values/DuckDBTimeValue.d.ts +12 -0
  128. package/lib/values/DuckDBTimeValue.js +33 -0
  129. package/lib/values/DuckDBTimestampMillisecondsValue.d.ts +13 -0
  130. package/lib/values/DuckDBTimestampMillisecondsValue.js +31 -0
  131. package/lib/values/DuckDBTimestampNanosecondsValue.d.ts +13 -0
  132. package/lib/values/DuckDBTimestampNanosecondsValue.js +30 -0
  133. package/lib/values/DuckDBTimestampSecondsValue.d.ts +13 -0
  134. package/lib/values/DuckDBTimestampSecondsValue.js +30 -0
  135. package/lib/values/DuckDBTimestampTZValue.d.ts +16 -0
  136. package/lib/values/DuckDBTimestampTZValue.js +41 -0
  137. package/lib/values/DuckDBTimestampValue.d.ts +18 -0
  138. package/lib/values/DuckDBTimestampValue.js +41 -0
  139. package/lib/values/DuckDBUUIDValue.d.ts +19 -0
  140. package/lib/values/DuckDBUUIDValue.js +40 -0
  141. package/lib/values/DuckDBUnionValue.d.ts +8 -0
  142. package/lib/values/DuckDBUnionValue.js +22 -0
  143. package/lib/values/DuckDBValue.d.ts +20 -0
  144. package/lib/values/DuckDBValue.js +2 -0
  145. package/lib/values/index.d.ts +20 -0
  146. package/lib/values/index.js +36 -0
  147. package/lib/version.d.ts +1 -0
  148. package/lib/version.js +10 -0
  149. package/package.json +15 -0
@@ -0,0 +1,219 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.DuckDBPreparedStatement = void 0;
7
+ const node_bindings_1 = __importDefault(require("@haybarn/node-bindings"));
8
+ const createValue_1 = require("./createValue");
9
+ const DuckDBLogicalType_1 = require("./DuckDBLogicalType");
10
+ const DuckDBMaterializedResult_1 = require("./DuckDBMaterializedResult");
11
+ const DuckDBPendingResult_1 = require("./DuckDBPendingResult");
12
+ const DuckDBResult_1 = require("./DuckDBResult");
13
+ const DuckDBResultReader_1 = require("./DuckDBResultReader");
14
+ const DuckDBType_1 = require("./DuckDBType");
15
+ const typeForValue_1 = require("./typeForValue");
16
+ const values_1 = require("./values");
17
+ class DuckDBPreparedStatement {
18
+ prepared_statement;
19
+ constructor(prepared_statement) {
20
+ this.prepared_statement = prepared_statement;
21
+ }
22
+ destroySync() {
23
+ return node_bindings_1.default.destroy_prepare_sync(this.prepared_statement);
24
+ }
25
+ get statementType() {
26
+ return node_bindings_1.default.prepared_statement_type(this.prepared_statement);
27
+ }
28
+ get parameterCount() {
29
+ return node_bindings_1.default.nparams(this.prepared_statement);
30
+ }
31
+ parameterName(parameterIndex) {
32
+ return node_bindings_1.default.parameter_name(this.prepared_statement, parameterIndex);
33
+ }
34
+ parameterTypeId(parameterIndex) {
35
+ return node_bindings_1.default.param_type(this.prepared_statement, parameterIndex);
36
+ }
37
+ parameterType(parameterIndex) {
38
+ return DuckDBLogicalType_1.DuckDBLogicalType.create(node_bindings_1.default.param_logical_type(this.prepared_statement, parameterIndex)).asType();
39
+ }
40
+ get columnCount() {
41
+ return node_bindings_1.default.prepared_statement_column_count(this.prepared_statement);
42
+ }
43
+ columnName(columnIndex) {
44
+ return node_bindings_1.default.prepared_statement_column_name(this.prepared_statement, columnIndex);
45
+ }
46
+ columnTypeId(columnIndex) {
47
+ return node_bindings_1.default.prepared_statement_column_type(this.prepared_statement, columnIndex);
48
+ }
49
+ columnType(columnIndex) {
50
+ return DuckDBLogicalType_1.DuckDBLogicalType.create(node_bindings_1.default.prepared_statement_column_logical_type(this.prepared_statement, columnIndex)).asType();
51
+ }
52
+ clearBindings() {
53
+ node_bindings_1.default.clear_bindings(this.prepared_statement);
54
+ }
55
+ parameterIndex(parameterName) {
56
+ return node_bindings_1.default.bind_parameter_index(this.prepared_statement, parameterName);
57
+ }
58
+ bindBoolean(parameterIndex, value) {
59
+ node_bindings_1.default.bind_boolean(this.prepared_statement, parameterIndex, value);
60
+ }
61
+ bindTinyInt(parameterIndex, value) {
62
+ node_bindings_1.default.bind_int8(this.prepared_statement, parameterIndex, value);
63
+ }
64
+ bindSmallInt(parameterIndex, value) {
65
+ node_bindings_1.default.bind_int16(this.prepared_statement, parameterIndex, value);
66
+ }
67
+ bindInteger(parameterIndex, value) {
68
+ node_bindings_1.default.bind_int32(this.prepared_statement, parameterIndex, value);
69
+ }
70
+ bindBigInt(parameterIndex, value) {
71
+ node_bindings_1.default.bind_int64(this.prepared_statement, parameterIndex, value);
72
+ }
73
+ bindHugeInt(parameterIndex, value) {
74
+ node_bindings_1.default.bind_hugeint(this.prepared_statement, parameterIndex, value);
75
+ }
76
+ bindUTinyInt(parameterIndex, value) {
77
+ node_bindings_1.default.bind_uint8(this.prepared_statement, parameterIndex, value);
78
+ }
79
+ bindUSmallInt(parameterIndex, value) {
80
+ node_bindings_1.default.bind_uint16(this.prepared_statement, parameterIndex, value);
81
+ }
82
+ bindUInteger(parameterIndex, value) {
83
+ node_bindings_1.default.bind_uint32(this.prepared_statement, parameterIndex, value);
84
+ }
85
+ bindUBigInt(parameterIndex, value) {
86
+ node_bindings_1.default.bind_uint64(this.prepared_statement, parameterIndex, value);
87
+ }
88
+ bindUHugeInt(parameterIndex, value) {
89
+ node_bindings_1.default.bind_uhugeint(this.prepared_statement, parameterIndex, value);
90
+ }
91
+ bindBigNum(parameterIndex, value) {
92
+ this.bindValue(parameterIndex, value, DuckDBType_1.BIGNUM);
93
+ }
94
+ bindDecimal(parameterIndex, value) {
95
+ node_bindings_1.default.bind_decimal(this.prepared_statement, parameterIndex, value);
96
+ }
97
+ bindFloat(parameterIndex, value) {
98
+ node_bindings_1.default.bind_float(this.prepared_statement, parameterIndex, value);
99
+ }
100
+ bindDouble(parameterIndex, value) {
101
+ node_bindings_1.default.bind_double(this.prepared_statement, parameterIndex, value);
102
+ }
103
+ bindDate(parameterIndex, value) {
104
+ node_bindings_1.default.bind_date(this.prepared_statement, parameterIndex, value);
105
+ }
106
+ bindTime(parameterIndex, value) {
107
+ node_bindings_1.default.bind_time(this.prepared_statement, parameterIndex, value);
108
+ }
109
+ bindTimeTZ(parameterIndex, value) {
110
+ this.bindValue(parameterIndex, value, DuckDBType_1.TIMETZ);
111
+ }
112
+ bindTimestamp(parameterIndex, value) {
113
+ node_bindings_1.default.bind_timestamp(this.prepared_statement, parameterIndex, value);
114
+ }
115
+ bindTimestampTZ(parameterIndex, value) {
116
+ this.bindValue(parameterIndex, value, DuckDBType_1.TIMESTAMPTZ);
117
+ }
118
+ bindTimestampSeconds(parameterIndex, value) {
119
+ this.bindValue(parameterIndex, value, DuckDBType_1.TIMESTAMP_S);
120
+ }
121
+ bindTimestampMilliseconds(parameterIndex, value) {
122
+ this.bindValue(parameterIndex, value, DuckDBType_1.TIMESTAMP_MS);
123
+ }
124
+ bindTimestampNanoseconds(parameterIndex, value) {
125
+ this.bindValue(parameterIndex, value, DuckDBType_1.TIMESTAMP_NS);
126
+ }
127
+ bindInterval(parameterIndex, value) {
128
+ node_bindings_1.default.bind_interval(this.prepared_statement, parameterIndex, value);
129
+ }
130
+ bindVarchar(parameterIndex, value) {
131
+ node_bindings_1.default.bind_varchar(this.prepared_statement, parameterIndex, value);
132
+ }
133
+ bindBlob(parameterIndex, value) {
134
+ node_bindings_1.default.bind_blob(this.prepared_statement, parameterIndex, value);
135
+ }
136
+ bindEnum(parameterIndex, value, type) {
137
+ this.bindValue(parameterIndex, value, type);
138
+ }
139
+ bindArray(parameterIndex, value, type) {
140
+ this.bindValue(parameterIndex, value instanceof values_1.DuckDBArrayValue ? value : (0, values_1.arrayValue)(value), type);
141
+ }
142
+ bindList(parameterIndex, value, type) {
143
+ this.bindValue(parameterIndex, value instanceof values_1.DuckDBListValue ? value : (0, values_1.listValue)(value), type);
144
+ }
145
+ bindStruct(parameterIndex, value, type) {
146
+ this.bindValue(parameterIndex, value instanceof values_1.DuckDBStructValue ? value : (0, values_1.structValue)(value), type);
147
+ }
148
+ bindMap(parameterIndex, value, type) {
149
+ this.bindValue(parameterIndex, value, type);
150
+ }
151
+ bindUnion(parameterIndex, value, type) {
152
+ this.bindValue(parameterIndex, value, type);
153
+ }
154
+ bindUUID(parameterIndex, value) {
155
+ this.bindValue(parameterIndex, value, DuckDBType_1.UUID);
156
+ }
157
+ bindBit(parameterIndex, value) {
158
+ this.bindValue(parameterIndex, value, DuckDBType_1.BIT);
159
+ }
160
+ bindNull(parameterIndex) {
161
+ node_bindings_1.default.bind_null(this.prepared_statement, parameterIndex);
162
+ }
163
+ bindValue(parameterIndex, value, type) {
164
+ node_bindings_1.default.bind_value(this.prepared_statement, parameterIndex, (0, createValue_1.createValue)(type ? type : (0, typeForValue_1.typeForValue)(value), value));
165
+ }
166
+ bind(values, types) {
167
+ if (Array.isArray(values)) {
168
+ const typesIsArray = Array.isArray(types);
169
+ for (let i = 0; i < values.length; i++) {
170
+ this.bindValue(i + 1, values[i], typesIsArray ? types[i] : undefined);
171
+ }
172
+ }
173
+ else {
174
+ const typesIsRecord = types && !Array.isArray(types);
175
+ for (const key in values) {
176
+ this.bindValue(this.parameterIndex(key), values[key], typesIsRecord ? types[key] : undefined);
177
+ }
178
+ }
179
+ }
180
+ async run() {
181
+ return new DuckDBMaterializedResult_1.DuckDBMaterializedResult(await node_bindings_1.default.execute_prepared(this.prepared_statement));
182
+ }
183
+ async runAndRead() {
184
+ return new DuckDBResultReader_1.DuckDBResultReader(await this.run());
185
+ }
186
+ async runAndReadAll() {
187
+ const reader = new DuckDBResultReader_1.DuckDBResultReader(await this.run());
188
+ await reader.readAll();
189
+ return reader;
190
+ }
191
+ async runAndReadUntil(targetRowCount) {
192
+ const reader = new DuckDBResultReader_1.DuckDBResultReader(await this.run());
193
+ await reader.readUntil(targetRowCount);
194
+ return reader;
195
+ }
196
+ async stream() {
197
+ return new DuckDBResult_1.DuckDBResult(await node_bindings_1.default.execute_prepared_streaming(this.prepared_statement));
198
+ }
199
+ async streamAndRead() {
200
+ return new DuckDBResultReader_1.DuckDBResultReader(await this.stream());
201
+ }
202
+ async streamAndReadAll() {
203
+ const reader = new DuckDBResultReader_1.DuckDBResultReader(await this.stream());
204
+ await reader.readAll();
205
+ return reader;
206
+ }
207
+ async streamAndReadUntil(targetRowCount) {
208
+ const reader = new DuckDBResultReader_1.DuckDBResultReader(await this.stream());
209
+ await reader.readUntil(targetRowCount);
210
+ return reader;
211
+ }
212
+ start() {
213
+ return new DuckDBPendingResult_1.DuckDBPendingResult(node_bindings_1.default.pending_prepared(this.prepared_statement));
214
+ }
215
+ startStream() {
216
+ return new DuckDBPendingResult_1.DuckDBPendingResult(node_bindings_1.default.pending_prepared_streaming(this.prepared_statement));
217
+ }
218
+ }
219
+ exports.DuckDBPreparedStatement = DuckDBPreparedStatement;
@@ -0,0 +1,4 @@
1
+ import { DuckDBPreparedStatement } from './DuckDBPreparedStatement';
2
+ export interface DuckDBPreparedStatementCollection {
3
+ add(prepared: DuckDBPreparedStatement): void;
4
+ }
@@ -0,0 +1,2 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
@@ -0,0 +1,9 @@
1
+ import { DuckDBPreparedStatement } from './DuckDBPreparedStatement';
2
+ import { DuckDBPreparedStatementCollection } from './DuckDBPreparedStatementCollection';
3
+ export declare class DuckDBPreparedStatementWeakRefCollection implements DuckDBPreparedStatementCollection {
4
+ preparedStatements: WeakRef<DuckDBPreparedStatement>[];
5
+ lastPruneTime: number;
6
+ add(prepared: DuckDBPreparedStatement): void;
7
+ destroySync(): void;
8
+ private prune;
9
+ }
@@ -0,0 +1,28 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.DuckDBPreparedStatementWeakRefCollection = void 0;
4
+ class DuckDBPreparedStatementWeakRefCollection {
5
+ preparedStatements = [];
6
+ lastPruneTime = 0;
7
+ add(prepared) {
8
+ const now = performance.now();
9
+ if (now - this.lastPruneTime > 1000) {
10
+ this.lastPruneTime = now;
11
+ this.prune();
12
+ }
13
+ this.preparedStatements.push(new WeakRef(prepared));
14
+ }
15
+ destroySync() {
16
+ for (const preparedRef of this.preparedStatements) {
17
+ const prepared = preparedRef.deref();
18
+ if (prepared) {
19
+ prepared.destroySync();
20
+ }
21
+ }
22
+ this.preparedStatements = [];
23
+ }
24
+ prune() {
25
+ this.preparedStatements = this.preparedStatements.filter((ref) => !!ref.deref());
26
+ }
27
+ }
28
+ exports.DuckDBPreparedStatementWeakRefCollection = DuckDBPreparedStatementWeakRefCollection;
@@ -0,0 +1,57 @@
1
+ import duckdb from '@haybarn/node-bindings';
2
+ import { DuckDBDataChunk } from './DuckDBDataChunk';
3
+ import { DuckDBLogicalType } from './DuckDBLogicalType';
4
+ import { DuckDBType } from './DuckDBType';
5
+ import { DuckDBTypeId } from './DuckDBTypeId';
6
+ import { DuckDBValueConverter } from './DuckDBValueConverter';
7
+ import { JS } from './JS';
8
+ import { Json } from './Json';
9
+ import { ResultReturnType, StatementType } from './enums';
10
+ import { DuckDBValue } from './values';
11
+ export declare class DuckDBResult {
12
+ protected readonly result: duckdb.Result;
13
+ constructor(result: duckdb.Result);
14
+ get returnType(): ResultReturnType;
15
+ get statementType(): StatementType;
16
+ get columnCount(): number;
17
+ columnName(columnIndex: number): string;
18
+ columnNames(): string[];
19
+ deduplicatedColumnNames(): string[];
20
+ columnTypeId(columnIndex: number): DuckDBTypeId;
21
+ columnLogicalType(columnIndex: number): DuckDBLogicalType;
22
+ columnType(columnIndex: number): DuckDBType;
23
+ columnTypeJson(columnIndex: number): Json;
24
+ columnTypes(): DuckDBType[];
25
+ columnTypesJson(): Json;
26
+ columnNamesAndTypesJson(): Json;
27
+ columnNameAndTypeObjectsJson(): Json;
28
+ get isStreaming(): boolean;
29
+ get rowsChanged(): number;
30
+ fetchChunk(): Promise<DuckDBDataChunk | null>;
31
+ fetchAllChunks(): Promise<DuckDBDataChunk[]>;
32
+ getColumns(): Promise<DuckDBValue[][]>;
33
+ convertColumns<T>(converter: DuckDBValueConverter<T>): Promise<(T | null)[][]>;
34
+ getColumnsJS(): Promise<JS[][]>;
35
+ getColumnsJson(): Promise<Json[][]>;
36
+ getColumnsObject(): Promise<Record<string, DuckDBValue[]>>;
37
+ convertColumnsObject<T>(converter: DuckDBValueConverter<T>): Promise<Record<string, (T | null)[]>>;
38
+ getColumnsObjectJS(): Promise<Record<string, JS[]>>;
39
+ getColumnsObjectJson(): Promise<Record<string, Json[]>>;
40
+ getRows(): Promise<DuckDBValue[][]>;
41
+ convertRows<T>(converter: DuckDBValueConverter<T>): Promise<(T | null)[][]>;
42
+ getRowsJS(): Promise<JS[][]>;
43
+ getRowsJson(): Promise<Json[][]>;
44
+ getRowObjects(): Promise<Record<string, DuckDBValue>[]>;
45
+ convertRowObjects<T>(converter: DuckDBValueConverter<T>): Promise<Record<string, T | null>[]>;
46
+ getRowObjectsJS(): Promise<Record<string, JS>[]>;
47
+ getRowObjectsJson(): Promise<Record<string, Json>[]>;
48
+ [Symbol.asyncIterator](): AsyncIterableIterator<DuckDBDataChunk>;
49
+ yieldRows(): AsyncIterableIterator<DuckDBValue[][]>;
50
+ yieldRowObjects(): AsyncIterableIterator<Record<string, DuckDBValue>[]>;
51
+ yieldConvertedRows<T>(converter: DuckDBValueConverter<T>): AsyncIterableIterator<(T | null)[][]>;
52
+ yieldConvertedRowObjects<T>(converter: DuckDBValueConverter<T>): AsyncIterableIterator<Record<string, T | null>[]>;
53
+ yieldRowsJs(): AsyncIterableIterator<JS[][]>;
54
+ yieldRowsJson(): AsyncIterableIterator<Json[][]>;
55
+ yieldRowObjectJs(): AsyncIterableIterator<Record<string, JS>[]>;
56
+ yieldRowObjectJson(): AsyncIterableIterator<Record<string, Json>[]>;
57
+ }
@@ -0,0 +1,229 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.DuckDBResult = void 0;
7
+ const node_bindings_1 = __importDefault(require("@haybarn/node-bindings"));
8
+ const DuckDBDataChunk_1 = require("./DuckDBDataChunk");
9
+ const DuckDBLogicalType_1 = require("./DuckDBLogicalType");
10
+ const JSDuckDBValueConverter_1 = require("./JSDuckDBValueConverter");
11
+ const JsonDuckDBValueConverter_1 = require("./JsonDuckDBValueConverter");
12
+ const convertColumnsFromChunks_1 = require("./convertColumnsFromChunks");
13
+ const convertColumnsObjectFromChunks_1 = require("./convertColumnsObjectFromChunks");
14
+ const convertRowObjectsFromChunks_1 = require("./convertRowObjectsFromChunks");
15
+ const convertRowsFromChunks_1 = require("./convertRowsFromChunks");
16
+ const getColumnsFromChunks_1 = require("./getColumnsFromChunks");
17
+ const getColumnsObjectFromChunks_1 = require("./getColumnsObjectFromChunks");
18
+ const getRowObjectsFromChunks_1 = require("./getRowObjectsFromChunks");
19
+ const getRowsFromChunks_1 = require("./getRowsFromChunks");
20
+ class DuckDBResult {
21
+ result;
22
+ constructor(result) {
23
+ this.result = result;
24
+ }
25
+ get returnType() {
26
+ return node_bindings_1.default.result_return_type(this.result);
27
+ }
28
+ get statementType() {
29
+ return node_bindings_1.default.result_statement_type(this.result);
30
+ }
31
+ get columnCount() {
32
+ return node_bindings_1.default.column_count(this.result);
33
+ }
34
+ columnName(columnIndex) {
35
+ return node_bindings_1.default.column_name(this.result, columnIndex);
36
+ }
37
+ columnNames() {
38
+ const columnNames = [];
39
+ const columnCount = this.columnCount;
40
+ for (let columnIndex = 0; columnIndex < columnCount; columnIndex++) {
41
+ columnNames.push(this.columnName(columnIndex));
42
+ }
43
+ return columnNames;
44
+ }
45
+ deduplicatedColumnNames() {
46
+ const outputColumnNames = [];
47
+ const columnCount = this.columnCount;
48
+ const columnNameCount = {};
49
+ for (let columnIndex = 0; columnIndex < columnCount; columnIndex++) {
50
+ const inputColumnName = this.columnName(columnIndex);
51
+ const nameCount = (columnNameCount[inputColumnName] || 0) + 1;
52
+ columnNameCount[inputColumnName] = nameCount;
53
+ if (nameCount > 1) {
54
+ outputColumnNames.push(`${inputColumnName}:${nameCount - 1}`);
55
+ }
56
+ else {
57
+ outputColumnNames.push(inputColumnName);
58
+ }
59
+ }
60
+ return outputColumnNames;
61
+ }
62
+ columnTypeId(columnIndex) {
63
+ return node_bindings_1.default.column_type(this.result, columnIndex);
64
+ }
65
+ columnLogicalType(columnIndex) {
66
+ return DuckDBLogicalType_1.DuckDBLogicalType.create(node_bindings_1.default.column_logical_type(this.result, columnIndex));
67
+ }
68
+ columnType(columnIndex) {
69
+ return DuckDBLogicalType_1.DuckDBLogicalType.create(node_bindings_1.default.column_logical_type(this.result, columnIndex)).asType();
70
+ }
71
+ columnTypeJson(columnIndex) {
72
+ return this.columnType(columnIndex).toJson();
73
+ }
74
+ columnTypes() {
75
+ const columnTypes = [];
76
+ const columnCount = this.columnCount;
77
+ for (let columnIndex = 0; columnIndex < columnCount; columnIndex++) {
78
+ columnTypes.push(this.columnType(columnIndex));
79
+ }
80
+ return columnTypes;
81
+ }
82
+ columnTypesJson() {
83
+ const columnTypesJson = [];
84
+ const columnCount = this.columnCount;
85
+ for (let columnIndex = 0; columnIndex < columnCount; columnIndex++) {
86
+ columnTypesJson.push(this.columnTypeJson(columnIndex));
87
+ }
88
+ return columnTypesJson;
89
+ }
90
+ columnNamesAndTypesJson() {
91
+ return {
92
+ columnNames: this.columnNames(),
93
+ columnTypes: this.columnTypesJson(),
94
+ };
95
+ }
96
+ columnNameAndTypeObjectsJson() {
97
+ const columnNameAndTypeObjects = [];
98
+ const columnCount = this.columnCount;
99
+ for (let columnIndex = 0; columnIndex < columnCount; columnIndex++) {
100
+ columnNameAndTypeObjects.push({
101
+ columnName: this.columnName(columnIndex),
102
+ columnType: this.columnTypeJson(columnIndex),
103
+ });
104
+ }
105
+ return columnNameAndTypeObjects;
106
+ }
107
+ get isStreaming() {
108
+ return node_bindings_1.default.result_is_streaming(this.result);
109
+ }
110
+ get rowsChanged() {
111
+ return node_bindings_1.default.rows_changed(this.result);
112
+ }
113
+ async fetchChunk() {
114
+ const chunk = await node_bindings_1.default.fetch_chunk(this.result);
115
+ return chunk ? new DuckDBDataChunk_1.DuckDBDataChunk(chunk) : null;
116
+ }
117
+ async fetchAllChunks() {
118
+ const chunks = [];
119
+ while (true) {
120
+ const chunk = await this.fetchChunk();
121
+ if (!chunk || chunk.rowCount === 0) {
122
+ return chunks;
123
+ }
124
+ chunks.push(chunk);
125
+ }
126
+ }
127
+ async getColumns() {
128
+ const chunks = await this.fetchAllChunks();
129
+ return (0, getColumnsFromChunks_1.getColumnsFromChunks)(chunks);
130
+ }
131
+ async convertColumns(converter) {
132
+ const chunks = await this.fetchAllChunks();
133
+ return (0, convertColumnsFromChunks_1.convertColumnsFromChunks)(chunks, converter);
134
+ }
135
+ async getColumnsJS() {
136
+ return this.convertColumns(JSDuckDBValueConverter_1.JSDuckDBValueConverter);
137
+ }
138
+ async getColumnsJson() {
139
+ return this.convertColumns(JsonDuckDBValueConverter_1.JsonDuckDBValueConverter);
140
+ }
141
+ async getColumnsObject() {
142
+ const chunks = await this.fetchAllChunks();
143
+ return (0, getColumnsObjectFromChunks_1.getColumnsObjectFromChunks)(chunks, this.deduplicatedColumnNames());
144
+ }
145
+ async convertColumnsObject(converter) {
146
+ const chunks = await this.fetchAllChunks();
147
+ return (0, convertColumnsObjectFromChunks_1.convertColumnsObjectFromChunks)(chunks, this.deduplicatedColumnNames(), converter);
148
+ }
149
+ async getColumnsObjectJS() {
150
+ return this.convertColumnsObject(JSDuckDBValueConverter_1.JSDuckDBValueConverter);
151
+ }
152
+ async getColumnsObjectJson() {
153
+ return this.convertColumnsObject(JsonDuckDBValueConverter_1.JsonDuckDBValueConverter);
154
+ }
155
+ async getRows() {
156
+ const chunks = await this.fetchAllChunks();
157
+ return (0, getRowsFromChunks_1.getRowsFromChunks)(chunks);
158
+ }
159
+ async convertRows(converter) {
160
+ const chunks = await this.fetchAllChunks();
161
+ return (0, convertRowsFromChunks_1.convertRowsFromChunks)(chunks, converter);
162
+ }
163
+ async getRowsJS() {
164
+ return this.convertRows(JSDuckDBValueConverter_1.JSDuckDBValueConverter);
165
+ }
166
+ async getRowsJson() {
167
+ return this.convertRows(JsonDuckDBValueConverter_1.JsonDuckDBValueConverter);
168
+ }
169
+ async getRowObjects() {
170
+ const chunks = await this.fetchAllChunks();
171
+ return (0, getRowObjectsFromChunks_1.getRowObjectsFromChunks)(chunks, this.deduplicatedColumnNames());
172
+ }
173
+ async convertRowObjects(converter) {
174
+ const chunks = await this.fetchAllChunks();
175
+ return (0, convertRowObjectsFromChunks_1.convertRowObjectsFromChunks)(chunks, this.deduplicatedColumnNames(), converter);
176
+ }
177
+ async getRowObjectsJS() {
178
+ return this.convertRowObjects(JSDuckDBValueConverter_1.JSDuckDBValueConverter);
179
+ }
180
+ async getRowObjectsJson() {
181
+ return this.convertRowObjects(JsonDuckDBValueConverter_1.JsonDuckDBValueConverter);
182
+ }
183
+ async *[Symbol.asyncIterator]() {
184
+ while (true) {
185
+ const chunk = await this.fetchChunk();
186
+ if (chunk && chunk.rowCount > 0) {
187
+ yield chunk;
188
+ }
189
+ else {
190
+ break;
191
+ }
192
+ }
193
+ }
194
+ async *yieldRows() {
195
+ for await (const chunk of this) {
196
+ yield (0, getRowsFromChunks_1.getRowsFromChunks)([chunk]);
197
+ }
198
+ }
199
+ async *yieldRowObjects() {
200
+ const deduplicatedColumnNames = this.deduplicatedColumnNames();
201
+ for await (const chunk of this) {
202
+ yield (0, getRowObjectsFromChunks_1.getRowObjectsFromChunks)([chunk], deduplicatedColumnNames);
203
+ }
204
+ }
205
+ async *yieldConvertedRows(converter) {
206
+ for await (const chunk of this) {
207
+ yield (0, convertRowsFromChunks_1.convertRowsFromChunks)([chunk], converter);
208
+ }
209
+ }
210
+ async *yieldConvertedRowObjects(converter) {
211
+ const deduplicatedColumnNames = this.deduplicatedColumnNames();
212
+ for await (const chunk of this) {
213
+ yield (0, convertRowObjectsFromChunks_1.convertRowObjectsFromChunks)([chunk], deduplicatedColumnNames, converter);
214
+ }
215
+ }
216
+ yieldRowsJs() {
217
+ return this.yieldConvertedRows(JSDuckDBValueConverter_1.JSDuckDBValueConverter);
218
+ }
219
+ yieldRowsJson() {
220
+ return this.yieldConvertedRows(JsonDuckDBValueConverter_1.JsonDuckDBValueConverter);
221
+ }
222
+ yieldRowObjectJs() {
223
+ return this.yieldConvertedRowObjects(JSDuckDBValueConverter_1.JSDuckDBValueConverter);
224
+ }
225
+ yieldRowObjectJson() {
226
+ return this.yieldConvertedRowObjects(JsonDuckDBValueConverter_1.JsonDuckDBValueConverter);
227
+ }
228
+ }
229
+ exports.DuckDBResult = DuckDBResult;
@@ -0,0 +1,68 @@
1
+ import { DuckDBLogicalType } from './DuckDBLogicalType';
2
+ import { DuckDBResult } from './DuckDBResult';
3
+ import { DuckDBType } from './DuckDBType';
4
+ import { DuckDBTypeId } from './DuckDBTypeId';
5
+ import { DuckDBValueConverter } from './DuckDBValueConverter';
6
+ import { ResultReturnType, StatementType } from './enums';
7
+ import { JS } from './JS';
8
+ import { Json } from './Json';
9
+ import { DuckDBValue } from './values';
10
+ export declare class DuckDBResultReader {
11
+ private readonly result;
12
+ private readonly chunks;
13
+ private readonly chunkSizeRuns;
14
+ private currentRowCount_;
15
+ private done_;
16
+ constructor(result: DuckDBResult);
17
+ get returnType(): ResultReturnType;
18
+ get statementType(): StatementType;
19
+ get columnCount(): number;
20
+ columnName(columnIndex: number): string;
21
+ columnNames(): string[];
22
+ deduplicatedColumnNames(): string[];
23
+ columnTypeId(columnIndex: number): DuckDBTypeId;
24
+ columnLogicalType(columnIndex: number): DuckDBLogicalType;
25
+ columnType(columnIndex: number): DuckDBType;
26
+ columnTypeJson(columnIndex: number): Json;
27
+ columnTypes(): DuckDBType[];
28
+ columnTypesJson(): Json;
29
+ columnNamesAndTypesJson(): Json;
30
+ columnNameAndTypeObjectsJson(): Json;
31
+ get rowsChanged(): number;
32
+ /** Total number of rows read so far. Call `readAll` or `readUntil` to read rows. */
33
+ get currentRowCount(): number;
34
+ /** Whether reading is done, that is, there are no more rows to read. */
35
+ get done(): boolean;
36
+ /**
37
+ * Returns the value for the given column and row. Both are zero-indexed.
38
+ *
39
+ * Will return an error if `rowIndex` is greater than `currentRowCount`.
40
+ */
41
+ value(columnIndex: number, rowIndex: number): DuckDBValue;
42
+ /** Read all rows. */
43
+ readAll(): Promise<void>;
44
+ /**
45
+ * Read rows until at least the given target row count has been met.
46
+ *
47
+ * Note that the resulting row count could be greater than the target, since rows are read in chunks, typically of 2048 rows each.
48
+ */
49
+ readUntil(targetRowCount: number): Promise<void>;
50
+ private fetchChunks;
51
+ private updateChunkSizeRuns;
52
+ getColumns(): DuckDBValue[][];
53
+ convertColumns<T>(converter: DuckDBValueConverter<T>): (T | null)[][];
54
+ getColumnsJS(): JS[][];
55
+ getColumnsJson(): Json[][];
56
+ getColumnsObject(): Record<string, DuckDBValue[]>;
57
+ convertColumnsObject<T>(converter: DuckDBValueConverter<T>): Record<string, (T | null)[]>;
58
+ getColumnsObjectJS(): Record<string, JS[]>;
59
+ getColumnsObjectJson(): Record<string, Json[]>;
60
+ getRows(): DuckDBValue[][];
61
+ convertRows<T>(converter: DuckDBValueConverter<T>): (T | null)[][];
62
+ getRowsJS(): JS[][];
63
+ getRowsJson(): Json[][];
64
+ getRowObjects(): Record<string, DuckDBValue>[];
65
+ convertRowObjects<T>(converter: DuckDBValueConverter<T>): Record<string, T | null>[];
66
+ getRowObjectsJS(): Record<string, JS>[];
67
+ getRowObjectsJson(): Record<string, Json>[];
68
+ }