@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,51 @@
1
+ import duckdb from '@haybarn/node-bindings';
2
+ import { DuckDBDataChunk } from './DuckDBDataChunk';
3
+ import { DuckDBArrayType, DuckDBEnumType, DuckDBListType, DuckDBMapType, DuckDBStructType, DuckDBType, DuckDBUnionType } from './DuckDBType';
4
+ import { DuckDBArrayValue, DuckDBBitValue, DuckDBDateValue, DuckDBDecimalValue, DuckDBIntervalValue, DuckDBListValue, DuckDBMapValue, DuckDBStructValue, DuckDBTimestampMillisecondsValue, DuckDBTimestampNanosecondsValue, DuckDBTimestampSecondsValue, DuckDBTimestampTZValue, DuckDBTimestampValue, DuckDBTimeTZValue, DuckDBTimeValue, DuckDBUnionValue, DuckDBUUIDValue, DuckDBValue } from './values';
5
+ export declare class DuckDBAppender {
6
+ private readonly appender;
7
+ constructor(appender: duckdb.Appender);
8
+ closeSync(): void;
9
+ flushSync(): void;
10
+ get columnCount(): number;
11
+ columnType(columnIndex: number): DuckDBType;
12
+ endRow(): void;
13
+ appendDefault(): void;
14
+ appendBoolean(value: boolean): void;
15
+ appendTinyInt(value: number): void;
16
+ appendSmallInt(value: number): void;
17
+ appendInteger(value: number): void;
18
+ appendBigInt(value: bigint): void;
19
+ appendHugeInt(value: bigint): void;
20
+ appendUTinyInt(value: number): void;
21
+ appendUSmallInt(value: number): void;
22
+ appendUInteger(value: number): void;
23
+ appendUBigInt(value: bigint): void;
24
+ appendUHugeInt(value: bigint): void;
25
+ appendDecimal(value: DuckDBDecimalValue): void;
26
+ appendFloat(value: number): void;
27
+ appendDouble(value: number): void;
28
+ appendDate(value: DuckDBDateValue): void;
29
+ appendTime(value: DuckDBTimeValue): void;
30
+ appendTimeTZ(value: DuckDBTimeTZValue): void;
31
+ appendTimestamp(value: DuckDBTimestampValue): void;
32
+ appendTimestampTZ(value: DuckDBTimestampTZValue): void;
33
+ appendTimestampSeconds(value: DuckDBTimestampSecondsValue): void;
34
+ appendTimestampMilliseconds(value: DuckDBTimestampMillisecondsValue): void;
35
+ appendTimestampNanoseconds(value: DuckDBTimestampNanosecondsValue): void;
36
+ appendInterval(value: DuckDBIntervalValue): void;
37
+ appendVarchar(value: string): void;
38
+ appendBlob(value: Uint8Array): void;
39
+ appendEnum(value: string, type: DuckDBEnumType): void;
40
+ appendList(value: DuckDBListValue | readonly DuckDBValue[], type?: DuckDBListType): void;
41
+ appendStruct(value: DuckDBStructValue | Readonly<Record<string, DuckDBValue>>, type?: DuckDBStructType): void;
42
+ appendMap(value: DuckDBMapValue, type?: DuckDBMapType): void;
43
+ appendArray(value: DuckDBArrayValue | readonly DuckDBValue[], type?: DuckDBArrayType): void;
44
+ appendUnion(value: DuckDBUnionValue, type?: DuckDBUnionType): void;
45
+ appendUUID(value: DuckDBUUIDValue): void;
46
+ appendBit(value: DuckDBBitValue): void;
47
+ appendBigNum(value: bigint): void;
48
+ appendNull(): void;
49
+ appendValue(value: DuckDBValue, type?: DuckDBType): void;
50
+ appendDataChunk(dataChunk: DuckDBDataChunk): void;
51
+ }
@@ -0,0 +1,149 @@
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.DuckDBAppender = 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 DuckDBType_1 = require("./DuckDBType");
11
+ const typeForValue_1 = require("./typeForValue");
12
+ const values_1 = require("./values");
13
+ class DuckDBAppender {
14
+ appender;
15
+ constructor(appender) {
16
+ this.appender = appender;
17
+ }
18
+ closeSync() {
19
+ node_bindings_1.default.appender_close_sync(this.appender);
20
+ }
21
+ flushSync() {
22
+ node_bindings_1.default.appender_flush_sync(this.appender);
23
+ }
24
+ get columnCount() {
25
+ return node_bindings_1.default.appender_column_count(this.appender);
26
+ }
27
+ columnType(columnIndex) {
28
+ return DuckDBLogicalType_1.DuckDBLogicalType.create(node_bindings_1.default.appender_column_type(this.appender, columnIndex)).asType();
29
+ }
30
+ endRow() {
31
+ node_bindings_1.default.appender_end_row(this.appender);
32
+ }
33
+ appendDefault() {
34
+ node_bindings_1.default.append_default(this.appender);
35
+ }
36
+ appendBoolean(value) {
37
+ node_bindings_1.default.append_bool(this.appender, value);
38
+ }
39
+ appendTinyInt(value) {
40
+ node_bindings_1.default.append_int8(this.appender, value);
41
+ }
42
+ appendSmallInt(value) {
43
+ node_bindings_1.default.append_int16(this.appender, value);
44
+ }
45
+ appendInteger(value) {
46
+ node_bindings_1.default.append_int32(this.appender, value);
47
+ }
48
+ appendBigInt(value) {
49
+ node_bindings_1.default.append_int64(this.appender, value);
50
+ }
51
+ appendHugeInt(value) {
52
+ node_bindings_1.default.append_hugeint(this.appender, value);
53
+ }
54
+ appendUTinyInt(value) {
55
+ node_bindings_1.default.append_uint8(this.appender, value);
56
+ }
57
+ appendUSmallInt(value) {
58
+ node_bindings_1.default.append_uint16(this.appender, value);
59
+ }
60
+ appendUInteger(value) {
61
+ node_bindings_1.default.append_uint32(this.appender, value);
62
+ }
63
+ appendUBigInt(value) {
64
+ node_bindings_1.default.append_uint64(this.appender, value);
65
+ }
66
+ appendUHugeInt(value) {
67
+ node_bindings_1.default.append_uhugeint(this.appender, value);
68
+ }
69
+ appendDecimal(value) {
70
+ // The width and scale of the DECIMAL type here aren't actually used.
71
+ this.appendValue(value, (0, DuckDBType_1.DECIMAL)(value.width, value.scale));
72
+ }
73
+ appendFloat(value) {
74
+ node_bindings_1.default.append_float(this.appender, value);
75
+ }
76
+ appendDouble(value) {
77
+ node_bindings_1.default.append_double(this.appender, value);
78
+ }
79
+ appendDate(value) {
80
+ node_bindings_1.default.append_date(this.appender, value);
81
+ }
82
+ appendTime(value) {
83
+ node_bindings_1.default.append_time(this.appender, value);
84
+ }
85
+ appendTimeTZ(value) {
86
+ this.appendValue(value, DuckDBType_1.TIMETZ);
87
+ }
88
+ appendTimestamp(value) {
89
+ node_bindings_1.default.append_timestamp(this.appender, value);
90
+ }
91
+ appendTimestampTZ(value) {
92
+ this.appendValue(value, DuckDBType_1.TIMESTAMPTZ);
93
+ }
94
+ appendTimestampSeconds(value) {
95
+ this.appendValue(value, DuckDBType_1.TIMESTAMP_S);
96
+ }
97
+ appendTimestampMilliseconds(value) {
98
+ this.appendValue(value, DuckDBType_1.TIMESTAMP_MS);
99
+ }
100
+ appendTimestampNanoseconds(value) {
101
+ this.appendValue(value, DuckDBType_1.TIMESTAMP_NS);
102
+ }
103
+ appendInterval(value) {
104
+ node_bindings_1.default.append_interval(this.appender, value);
105
+ }
106
+ appendVarchar(value) {
107
+ node_bindings_1.default.append_varchar(this.appender, value);
108
+ }
109
+ appendBlob(value) {
110
+ node_bindings_1.default.append_blob(this.appender, value);
111
+ }
112
+ appendEnum(value, type) {
113
+ this.appendValue(value, type);
114
+ }
115
+ appendList(value, type) {
116
+ this.appendValue(value instanceof values_1.DuckDBListValue ? value : (0, values_1.listValue)(value), type);
117
+ }
118
+ appendStruct(value, type) {
119
+ this.appendValue(value instanceof values_1.DuckDBStructValue ? value : (0, values_1.structValue)(value), type);
120
+ }
121
+ appendMap(value, type) {
122
+ this.appendValue(value, type);
123
+ }
124
+ appendArray(value, type) {
125
+ this.appendValue(value instanceof values_1.DuckDBArrayValue ? value : (0, values_1.arrayValue)(value), type);
126
+ }
127
+ appendUnion(value, type) {
128
+ this.appendValue(value, type);
129
+ }
130
+ appendUUID(value) {
131
+ this.appendValue(value, DuckDBType_1.UUID);
132
+ }
133
+ appendBit(value) {
134
+ this.appendValue(value, DuckDBType_1.BIT);
135
+ }
136
+ appendBigNum(value) {
137
+ this.appendValue(value, DuckDBType_1.BIGNUM);
138
+ }
139
+ appendNull() {
140
+ node_bindings_1.default.append_null(this.appender);
141
+ }
142
+ appendValue(value, type) {
143
+ node_bindings_1.default.append_value(this.appender, (0, createValue_1.createValue)(type ? type : (0, typeForValue_1.typeForValue)(value), value));
144
+ }
145
+ appendDataChunk(dataChunk) {
146
+ node_bindings_1.default.append_data_chunk(this.appender, dataChunk.chunk);
147
+ }
148
+ }
149
+ exports.DuckDBAppender = DuckDBAppender;
@@ -0,0 +1,12 @@
1
+ import duckdb from '@haybarn/node-bindings';
2
+ import { DuckDBClientContext } from './DuckDBClientContext';
3
+ export declare class DuckDBBindInfo {
4
+ private readonly bind_info;
5
+ constructor(bind_info: duckdb.BindInfo);
6
+ get clientContext(): DuckDBClientContext;
7
+ getClientContext(): DuckDBClientContext;
8
+ get extraInfo(): object | undefined;
9
+ getExtraInfo(): object | undefined;
10
+ setBindData(bindData: object): void;
11
+ setError(error: string): void;
12
+ }
@@ -0,0 +1,33 @@
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.DuckDBBindInfo = void 0;
7
+ const node_bindings_1 = __importDefault(require("@haybarn/node-bindings"));
8
+ const DuckDBClientContext_1 = require("./DuckDBClientContext");
9
+ class DuckDBBindInfo {
10
+ bind_info;
11
+ constructor(bind_info) {
12
+ this.bind_info = bind_info;
13
+ }
14
+ get clientContext() {
15
+ return this.getClientContext();
16
+ }
17
+ getClientContext() {
18
+ return new DuckDBClientContext_1.DuckDBClientContext(node_bindings_1.default.scalar_function_get_client_context(this.bind_info));
19
+ }
20
+ get extraInfo() {
21
+ return this.getExtraInfo();
22
+ }
23
+ getExtraInfo() {
24
+ return node_bindings_1.default.scalar_function_bind_get_extra_info(this.bind_info);
25
+ }
26
+ setBindData(bindData) {
27
+ node_bindings_1.default.scalar_function_set_bind_data(this.bind_info, bindData);
28
+ }
29
+ setError(error) {
30
+ node_bindings_1.default.scalar_function_bind_set_error(this.bind_info, error);
31
+ }
32
+ }
33
+ exports.DuckDBBindInfo = DuckDBBindInfo;
@@ -0,0 +1,6 @@
1
+ import duckdb from '@haybarn/node-bindings';
2
+ export declare class DuckDBClientContext {
3
+ private readonly client_context;
4
+ constructor(client_context: duckdb.ClientContext);
5
+ get connectionId(): number;
6
+ }
@@ -0,0 +1,17 @@
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.DuckDBClientContext = void 0;
7
+ const node_bindings_1 = __importDefault(require("@haybarn/node-bindings"));
8
+ class DuckDBClientContext {
9
+ client_context;
10
+ constructor(client_context) {
11
+ this.client_context = client_context;
12
+ }
13
+ get connectionId() {
14
+ return node_bindings_1.default.client_context_get_connection_id(this.client_context);
15
+ }
16
+ }
17
+ exports.DuckDBClientContext = DuckDBClientContext;
@@ -0,0 +1,49 @@
1
+ import duckdb from '@haybarn/node-bindings';
2
+ import { DuckDBAppender } from './DuckDBAppender';
3
+ import { DuckDBClientContext } from './DuckDBClientContext';
4
+ import { DuckDBExtractedStatements } from './DuckDBExtractedStatements';
5
+ import { DuckDBInstance } from './DuckDBInstance';
6
+ import { DuckDBMaterializedResult } from './DuckDBMaterializedResult';
7
+ import { DuckDBPendingResult } from './DuckDBPendingResult';
8
+ import { DuckDBPreparedStatement } from './DuckDBPreparedStatement';
9
+ import { DuckDBResult } from './DuckDBResult';
10
+ import { DuckDBResultReader } from './DuckDBResultReader';
11
+ import { DuckDBScalarFunction } from './DuckDBScalarFunction';
12
+ import { DuckDBType } from './DuckDBType';
13
+ import { DuckDBValue } from './values';
14
+ export declare class DuckDBConnection {
15
+ private readonly connection;
16
+ private readonly preparedStatements;
17
+ constructor(connection: duckdb.Connection);
18
+ static create(instance?: DuckDBInstance): Promise<DuckDBConnection>;
19
+ /** Same as disconnectSync. */
20
+ closeSync(): void;
21
+ disconnectSync(): void;
22
+ get clientContext(): DuckDBClientContext;
23
+ getClientContext(): DuckDBClientContext;
24
+ interrupt(): void;
25
+ get progress(): duckdb.QueryProgress;
26
+ run(sql: string, values?: DuckDBValue[] | Record<string, DuckDBValue>, types?: DuckDBType[] | Record<string, DuckDBType | undefined>): Promise<DuckDBMaterializedResult>;
27
+ runAndRead(sql: string, values?: DuckDBValue[] | Record<string, DuckDBValue>, types?: DuckDBType[] | Record<string, DuckDBType | undefined>): Promise<DuckDBResultReader>;
28
+ runAndReadAll(sql: string, values?: DuckDBValue[] | Record<string, DuckDBValue>, types?: DuckDBType[] | Record<string, DuckDBType | undefined>): Promise<DuckDBResultReader>;
29
+ runAndReadUntil(sql: string, targetRowCount: number, values?: DuckDBValue[] | Record<string, DuckDBValue>, types?: DuckDBType[] | Record<string, DuckDBType | undefined>): Promise<DuckDBResultReader>;
30
+ stream(sql: string, values?: DuckDBValue[] | Record<string, DuckDBValue>, types?: DuckDBType[] | Record<string, DuckDBType | undefined>): Promise<DuckDBResult>;
31
+ streamAndRead(sql: string, values?: DuckDBValue[] | Record<string, DuckDBValue>, types?: DuckDBType[] | Record<string, DuckDBType | undefined>): Promise<DuckDBResultReader>;
32
+ streamAndReadAll(sql: string, values?: DuckDBValue[] | Record<string, DuckDBValue>, types?: DuckDBType[] | Record<string, DuckDBType | undefined>): Promise<DuckDBResultReader>;
33
+ streamAndReadUntil(sql: string, targetRowCount: number, values?: DuckDBValue[] | Record<string, DuckDBValue>, types?: DuckDBType[] | Record<string, DuckDBType | undefined>): Promise<DuckDBResultReader>;
34
+ start(sql: string, values?: DuckDBValue[] | Record<string, DuckDBValue>, types?: DuckDBType[] | Record<string, DuckDBType | undefined>): Promise<DuckDBPendingResult>;
35
+ startThenRead(sql: string, values?: DuckDBValue[] | Record<string, DuckDBValue>, types?: DuckDBType[] | Record<string, DuckDBType | undefined>): Promise<DuckDBResultReader>;
36
+ startThenReadAll(sql: string, values?: DuckDBValue[] | Record<string, DuckDBValue>, types?: DuckDBType[] | Record<string, DuckDBType | undefined>): Promise<DuckDBResultReader>;
37
+ startThenReadUntil(sql: string, targetRowCount: number, values?: DuckDBValue[] | Record<string, DuckDBValue>, types?: DuckDBType[] | Record<string, DuckDBType | undefined>): Promise<DuckDBResultReader>;
38
+ startStream(sql: string, values?: DuckDBValue[] | Record<string, DuckDBValue>, types?: DuckDBType[] | Record<string, DuckDBType | undefined>): Promise<DuckDBPendingResult>;
39
+ startStreamThenRead(sql: string, values?: DuckDBValue[] | Record<string, DuckDBValue>, types?: DuckDBType[] | Record<string, DuckDBType | undefined>): Promise<DuckDBResultReader>;
40
+ startStreamThenReadAll(sql: string, values?: DuckDBValue[] | Record<string, DuckDBValue>, types?: DuckDBType[] | Record<string, DuckDBType | undefined>): Promise<DuckDBResultReader>;
41
+ startStreamThenReadUntil(sql: string, targetRowCount: number, values?: DuckDBValue[] | Record<string, DuckDBValue>, types?: DuckDBType[] | Record<string, DuckDBType | undefined>): Promise<DuckDBResultReader>;
42
+ prepare(sql: string): Promise<DuckDBPreparedStatement>;
43
+ private createPrepared;
44
+ extractStatements(sql: string): Promise<DuckDBExtractedStatements>;
45
+ private runUntilLast;
46
+ getTableNames(query: string, qualified: boolean): readonly string[];
47
+ createAppender(table: string, schema?: string | null, catalog?: string | null): Promise<DuckDBAppender>;
48
+ registerScalarFunction(scalarFunction: DuckDBScalarFunction): void;
49
+ }
@@ -0,0 +1,208 @@
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.DuckDBConnection = void 0;
7
+ const node_bindings_1 = __importDefault(require("@haybarn/node-bindings"));
8
+ const DuckDBAppender_1 = require("./DuckDBAppender");
9
+ const DuckDBClientContext_1 = require("./DuckDBClientContext");
10
+ const DuckDBExtractedStatements_1 = require("./DuckDBExtractedStatements");
11
+ const DuckDBInstance_1 = require("./DuckDBInstance");
12
+ const DuckDBMaterializedResult_1 = require("./DuckDBMaterializedResult");
13
+ const DuckDBPreparedStatement_1 = require("./DuckDBPreparedStatement");
14
+ const DuckDBPreparedStatementWeakRefCollection_1 = require("./DuckDBPreparedStatementWeakRefCollection");
15
+ const DuckDBResultReader_1 = require("./DuckDBResultReader");
16
+ class DuckDBConnection {
17
+ connection;
18
+ preparedStatements;
19
+ constructor(connection) {
20
+ this.connection = connection;
21
+ this.preparedStatements = new DuckDBPreparedStatementWeakRefCollection_1.DuckDBPreparedStatementWeakRefCollection();
22
+ }
23
+ static async create(instance) {
24
+ if (instance) {
25
+ return instance.connect();
26
+ }
27
+ return (await DuckDBInstance_1.DuckDBInstance.fromCache()).connect();
28
+ }
29
+ /** Same as disconnectSync. */
30
+ closeSync() {
31
+ this.disconnectSync();
32
+ }
33
+ disconnectSync() {
34
+ this.preparedStatements.destroySync();
35
+ node_bindings_1.default.disconnect_sync(this.connection);
36
+ }
37
+ get clientContext() {
38
+ return this.getClientContext();
39
+ }
40
+ getClientContext() {
41
+ return new DuckDBClientContext_1.DuckDBClientContext(node_bindings_1.default.connection_get_client_context(this.connection));
42
+ }
43
+ interrupt() {
44
+ node_bindings_1.default.interrupt(this.connection);
45
+ }
46
+ get progress() {
47
+ return node_bindings_1.default.query_progress(this.connection);
48
+ }
49
+ async run(sql, values, types) {
50
+ if (values) {
51
+ const prepared = await this.runUntilLast(sql);
52
+ try {
53
+ prepared.bind(values, types);
54
+ const result = await prepared.run();
55
+ return result;
56
+ }
57
+ finally {
58
+ prepared.destroySync();
59
+ }
60
+ }
61
+ else {
62
+ return new DuckDBMaterializedResult_1.DuckDBMaterializedResult(await node_bindings_1.default.query(this.connection, sql));
63
+ }
64
+ }
65
+ async runAndRead(sql, values, types) {
66
+ return new DuckDBResultReader_1.DuckDBResultReader(await this.run(sql, values, types));
67
+ }
68
+ async runAndReadAll(sql, values, types) {
69
+ const reader = await this.runAndRead(sql, values, types);
70
+ await reader.readAll();
71
+ return reader;
72
+ }
73
+ async runAndReadUntil(sql, targetRowCount, values, types) {
74
+ const reader = await this.runAndRead(sql, values, types);
75
+ await reader.readUntil(targetRowCount);
76
+ return reader;
77
+ }
78
+ async stream(sql, values, types) {
79
+ const prepared = await this.runUntilLast(sql);
80
+ try {
81
+ if (values) {
82
+ prepared.bind(values, types);
83
+ }
84
+ const result = await prepared.stream();
85
+ return result;
86
+ }
87
+ finally {
88
+ prepared.destroySync();
89
+ }
90
+ }
91
+ async streamAndRead(sql, values, types) {
92
+ return new DuckDBResultReader_1.DuckDBResultReader(await this.stream(sql, values, types));
93
+ }
94
+ async streamAndReadAll(sql, values, types) {
95
+ const reader = await this.streamAndRead(sql, values, types);
96
+ await reader.readAll();
97
+ return reader;
98
+ }
99
+ async streamAndReadUntil(sql, targetRowCount, values, types) {
100
+ const reader = await this.streamAndRead(sql, values, types);
101
+ await reader.readUntil(targetRowCount);
102
+ return reader;
103
+ }
104
+ async start(sql, values, types) {
105
+ const prepared = await this.runUntilLast(sql);
106
+ try {
107
+ if (values) {
108
+ prepared.bind(values, types);
109
+ }
110
+ return prepared.start();
111
+ }
112
+ finally {
113
+ prepared.destroySync();
114
+ }
115
+ }
116
+ async startThenRead(sql, values, types) {
117
+ const pending = await this.start(sql, values, types);
118
+ await pending.runAllTasks();
119
+ return new DuckDBResultReader_1.DuckDBResultReader(await pending.getResult());
120
+ }
121
+ async startThenReadAll(sql, values, types) {
122
+ const reader = await this.startThenRead(sql, values, types);
123
+ await reader.readAll();
124
+ return reader;
125
+ }
126
+ async startThenReadUntil(sql, targetRowCount, values, types) {
127
+ const reader = await this.startThenRead(sql, values, types);
128
+ await reader.readUntil(targetRowCount);
129
+ return reader;
130
+ }
131
+ async startStream(sql, values, types) {
132
+ const prepared = await this.runUntilLast(sql);
133
+ try {
134
+ if (values) {
135
+ prepared.bind(values, types);
136
+ }
137
+ return prepared.startStream();
138
+ }
139
+ finally {
140
+ prepared.destroySync();
141
+ }
142
+ }
143
+ async startStreamThenRead(sql, values, types) {
144
+ const pending = await this.startStream(sql, values, types);
145
+ await pending.runAllTasks();
146
+ return new DuckDBResultReader_1.DuckDBResultReader(await pending.getResult());
147
+ }
148
+ async startStreamThenReadAll(sql, values, types) {
149
+ const reader = await this.startStreamThenRead(sql, values, types);
150
+ await reader.readAll();
151
+ return reader;
152
+ }
153
+ async startStreamThenReadUntil(sql, targetRowCount, values, types) {
154
+ const reader = await this.startStreamThenRead(sql, values, types);
155
+ await reader.readUntil(targetRowCount);
156
+ return reader;
157
+ }
158
+ async prepare(sql) {
159
+ const prepared = await this.createPrepared(sql);
160
+ this.preparedStatements.add(prepared);
161
+ return prepared;
162
+ }
163
+ async createPrepared(sql) {
164
+ return new DuckDBPreparedStatement_1.DuckDBPreparedStatement(await node_bindings_1.default.prepare(this.connection, sql));
165
+ }
166
+ async extractStatements(sql) {
167
+ const { extracted_statements, statement_count } = await node_bindings_1.default.extract_statements(this.connection, sql);
168
+ if (statement_count === 0) {
169
+ throw new Error(`Failed to extract statements: ${node_bindings_1.default.extract_statements_error(extracted_statements)}`);
170
+ }
171
+ return new DuckDBExtractedStatements_1.DuckDBExtractedStatements(this.connection, extracted_statements, statement_count, this.preparedStatements);
172
+ }
173
+ async runUntilLast(sql) {
174
+ const extractedStatements = await this.extractStatements(sql);
175
+ const statementCount = extractedStatements.count;
176
+ if (statementCount > 1) {
177
+ for (let i = 0; i < statementCount - 1; i++) {
178
+ const prepared = await extractedStatements.prepare(i);
179
+ try {
180
+ await prepared.run();
181
+ }
182
+ finally {
183
+ prepared.destroySync();
184
+ }
185
+ }
186
+ }
187
+ return extractedStatements.prepare(statementCount - 1);
188
+ }
189
+ getTableNames(query, qualified) {
190
+ const names = [];
191
+ const list_value = node_bindings_1.default.get_table_names(this.connection, query, qualified);
192
+ const count = node_bindings_1.default.get_list_size(list_value);
193
+ for (let i = 0; i < count; i++) {
194
+ const varchar_value = node_bindings_1.default.get_list_child(list_value, i);
195
+ const name = node_bindings_1.default.get_varchar(varchar_value);
196
+ names.push(name);
197
+ }
198
+ names.sort();
199
+ return names;
200
+ }
201
+ async createAppender(table, schema, catalog) {
202
+ return new DuckDBAppender_1.DuckDBAppender(node_bindings_1.default.appender_create_ext(this.connection, catalog ?? null, schema ?? null, table));
203
+ }
204
+ registerScalarFunction(scalarFunction) {
205
+ node_bindings_1.default.register_scalar_function(this.connection, scalarFunction.scalar_function);
206
+ }
207
+ }
208
+ exports.DuckDBConnection = DuckDBConnection;
@@ -0,0 +1,41 @@
1
+ import duckdb from '@haybarn/node-bindings';
2
+ import { DuckDBType } from './DuckDBType';
3
+ import { DuckDBValueConverter } from './DuckDBValueConverter';
4
+ import { DuckDBVector } from './DuckDBVector';
5
+ import { DuckDBValue } from './values';
6
+ export declare class DuckDBDataChunk {
7
+ readonly chunk: duckdb.DataChunk;
8
+ private readonly vectors;
9
+ constructor(chunk: duckdb.DataChunk);
10
+ static create(types: readonly DuckDBType[], rowCount?: number): DuckDBDataChunk;
11
+ reset(): void;
12
+ get columnCount(): number;
13
+ get rowCount(): number;
14
+ set rowCount(count: number);
15
+ getColumnVector(columnIndex: number): DuckDBVector;
16
+ visitColumnValues(columnIndex: number, visitValue: (value: DuckDBValue, rowIndex: number, columnIndex: number, type: DuckDBType) => void): void;
17
+ appendColumnValues(columnIndex: number, values: DuckDBValue[]): void;
18
+ getColumnValues(columnIndex: number): DuckDBValue[];
19
+ convertColumnValues<T>(columnIndex: number, converter: DuckDBValueConverter<T>): (T | null)[];
20
+ setColumnValues(columnIndex: number, values: readonly DuckDBValue[]): void;
21
+ visitColumns(visitColumn: (column: DuckDBValue[], columnIndex: number, type: DuckDBType) => void): void;
22
+ appendToColumns(columns: (DuckDBValue[] | undefined)[]): void;
23
+ getColumns(): DuckDBValue[][];
24
+ convertColumns<T>(converter: DuckDBValueConverter<T>): (T | null)[][];
25
+ setColumns(columns: readonly (readonly DuckDBValue[])[]): void;
26
+ appendToColumnsObject(columnNames: readonly string[], columnsObject: Record<string, DuckDBValue[] | undefined>): void;
27
+ getColumnsObject(columnNames: readonly string[]): Record<string, DuckDBValue[]>;
28
+ visitColumnMajor(visitValue: (value: DuckDBValue, rowIndex: number, columnIndex: number, type: DuckDBType) => void): void;
29
+ visitRowValues(rowIndex: number, visitValue: (value: DuckDBValue, rowIndex: number, columnIndex: number, type: DuckDBType) => void): void;
30
+ appendRowValues(rowIndex: number, values: DuckDBValue[]): void;
31
+ getRowValues(rowIndex: number): DuckDBValue[];
32
+ convertRowValues<T>(rowIndex: number, converter: DuckDBValueConverter<T>): (T | null)[];
33
+ visitRows(visitRow: (row: DuckDBValue[], rowIndex: number) => void): void;
34
+ appendToRows(rows: DuckDBValue[][]): void;
35
+ getRows(): DuckDBValue[][];
36
+ convertRows<T>(converter: DuckDBValueConverter<T>): (T | null)[][];
37
+ setRows(rows: readonly (readonly DuckDBValue[])[]): void;
38
+ appendToRowObjects(columnNames: readonly string[], rowObjects: Record<string, DuckDBValue>[]): void;
39
+ getRowObjects(columnNames: readonly string[]): Record<string, DuckDBValue>[];
40
+ visitRowMajor(visitValue: (value: DuckDBValue, rowIndex: number, columnIndex: number, type: DuckDBType) => void): void;
41
+ }