@nshiab/simple-data-analysis-core 0.0.12

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 (773) hide show
  1. package/LICENSE +20 -0
  2. package/README.md +43 -0
  3. package/esm/class/Simple.d.ts +66 -0
  4. package/esm/class/Simple.d.ts.map +1 -0
  5. package/esm/class/Simple.js +94 -0
  6. package/esm/class/SimpleDB.d.ts +487 -0
  7. package/esm/class/SimpleDB.d.ts.map +1 -0
  8. package/esm/class/SimpleDB.js +807 -0
  9. package/esm/class/SimpleTable.d.ts +4408 -0
  10. package/esm/class/SimpleTable.d.ts.map +1 -0
  11. package/esm/class/SimpleTable.js +5401 -0
  12. package/esm/helpers/accumulateQuery.d.ts +4 -0
  13. package/esm/helpers/accumulateQuery.d.ts.map +1 -0
  14. package/esm/helpers/accumulateQuery.js +15 -0
  15. package/esm/helpers/camelCase.d.ts +30 -0
  16. package/esm/helpers/camelCase.d.ts.map +1 -0
  17. package/esm/helpers/camelCase.js +45 -0
  18. package/esm/helpers/capitalize.d.ts +28 -0
  19. package/esm/helpers/capitalize.d.ts.map +1 -0
  20. package/esm/helpers/capitalize.js +33 -0
  21. package/esm/helpers/checkVssIndexes.d.ts +2 -0
  22. package/esm/helpers/checkVssIndexes.d.ts.map +1 -0
  23. package/esm/helpers/checkVssIndexes.js +16 -0
  24. package/esm/helpers/cleanCache.d.ts +3 -0
  25. package/esm/helpers/cleanCache.d.ts.map +1 -0
  26. package/esm/helpers/cleanCache.js +17 -0
  27. package/esm/helpers/cleanPath.d.ts +2 -0
  28. package/esm/helpers/cleanPath.d.ts.map +1 -0
  29. package/esm/helpers/cleanPath.js +3 -0
  30. package/esm/helpers/cleanSQL.d.ts +2 -0
  31. package/esm/helpers/cleanSQL.d.ts.map +1 -0
  32. package/esm/helpers/cleanSQL.js +24 -0
  33. package/esm/helpers/concatenateRowQuery.d.ts +2 -0
  34. package/esm/helpers/concatenateRowQuery.d.ts.map +1 -0
  35. package/esm/helpers/concatenateRowQuery.js +9 -0
  36. package/esm/helpers/convertForJS.d.ts +6 -0
  37. package/esm/helpers/convertForJS.d.ts.map +1 -0
  38. package/esm/helpers/convertForJS.js +39 -0
  39. package/esm/helpers/createDirectory.d.ts +2 -0
  40. package/esm/helpers/createDirectory.d.ts.map +1 -0
  41. package/esm/helpers/createDirectory.js +10 -0
  42. package/esm/helpers/csvFormat.d.ts +3 -0
  43. package/esm/helpers/csvFormat.d.ts.map +1 -0
  44. package/esm/helpers/csvFormat.js +165 -0
  45. package/esm/helpers/dataToArrays.d.ts +51 -0
  46. package/esm/helpers/dataToArrays.d.ts.map +1 -0
  47. package/esm/helpers/dataToArrays.js +55 -0
  48. package/esm/helpers/extractTypes.d.ts +6 -0
  49. package/esm/helpers/extractTypes.d.ts.map +1 -0
  50. package/esm/helpers/extractTypes.js +11 -0
  51. package/esm/helpers/findGeoColumn.d.ts +3 -0
  52. package/esm/helpers/findGeoColumn.d.ts.map +1 -0
  53. package/esm/helpers/findGeoColumn.js +18 -0
  54. package/esm/helpers/formatDate.d.ts +34 -0
  55. package/esm/helpers/formatDate.d.ts.map +1 -0
  56. package/esm/helpers/formatDate.js +69 -0
  57. package/esm/helpers/formatNumber.d.ts +46 -0
  58. package/esm/helpers/formatNumber.d.ts.map +1 -0
  59. package/esm/helpers/formatNumber.js +122 -0
  60. package/esm/helpers/getCombinations.d.ts +3 -0
  61. package/esm/helpers/getCombinations.d.ts.map +1 -0
  62. package/esm/helpers/getCombinations.js +24 -0
  63. package/esm/helpers/getExtension.d.ts +2 -0
  64. package/esm/helpers/getExtension.d.ts.map +1 -0
  65. package/esm/helpers/getExtension.js +9 -0
  66. package/esm/helpers/getIdenticalColumns.d.ts +2 -0
  67. package/esm/helpers/getIdenticalColumns.d.ts.map +1 -0
  68. package/esm/helpers/getIdenticalColumns.js +3 -0
  69. package/esm/helpers/getName.d.ts +2 -0
  70. package/esm/helpers/getName.d.ts.map +1 -0
  71. package/esm/helpers/getName.js +14 -0
  72. package/esm/helpers/getProjection.d.ts +3 -0
  73. package/esm/helpers/getProjection.d.ts.map +1 -0
  74. package/esm/helpers/getProjection.js +22 -0
  75. package/esm/helpers/getProjectionParquet.d.ts +3 -0
  76. package/esm/helpers/getProjectionParquet.d.ts.map +1 -0
  77. package/esm/helpers/getProjectionParquet.js +24 -0
  78. package/esm/helpers/index.d.ts +20 -0
  79. package/esm/helpers/index.d.ts.map +1 -0
  80. package/esm/helpers/index.js +19 -0
  81. package/esm/helpers/keepNumericalColumns.d.ts +4 -0
  82. package/esm/helpers/keepNumericalColumns.d.ts.map +1 -0
  83. package/esm/helpers/keepNumericalColumns.js +13 -0
  84. package/esm/helpers/logData.d.ts +6 -0
  85. package/esm/helpers/logData.d.ts.map +1 -0
  86. package/esm/helpers/logData.js +48 -0
  87. package/esm/helpers/mergeOptions.d.ts +28 -0
  88. package/esm/helpers/mergeOptions.d.ts.map +1 -0
  89. package/esm/helpers/mergeOptions.js +12 -0
  90. package/esm/helpers/nestQuery.d.ts +2 -0
  91. package/esm/helpers/nestQuery.d.ts.map +1 -0
  92. package/esm/helpers/nestQuery.js +13 -0
  93. package/esm/helpers/parseDuckDBType.d.ts +2 -0
  94. package/esm/helpers/parseDuckDBType.d.ts.map +1 -0
  95. package/esm/helpers/parseDuckDBType.js +38 -0
  96. package/esm/helpers/parseTypes.d.ts +2 -0
  97. package/esm/helpers/parseTypes.d.ts.map +1 -0
  98. package/esm/helpers/parseTypes.js +35 -0
  99. package/esm/helpers/parseValue.d.ts +2 -0
  100. package/esm/helpers/parseValue.d.ts.map +1 -0
  101. package/esm/helpers/parseValue.js +20 -0
  102. package/esm/helpers/prettyDuration.d.ts +55 -0
  103. package/esm/helpers/prettyDuration.d.ts.map +1 -0
  104. package/esm/helpers/prettyDuration.js +145 -0
  105. package/esm/helpers/printTable.d.ts +47 -0
  106. package/esm/helpers/printTable.d.ts.map +1 -0
  107. package/esm/helpers/printTable.js +217 -0
  108. package/esm/helpers/queryDB.d.ts +19 -0
  109. package/esm/helpers/queryDB.d.ts.map +1 -0
  110. package/esm/helpers/queryDB.js +62 -0
  111. package/esm/helpers/rewind.d.ts +3 -0
  112. package/esm/helpers/rewind.d.ts.map +1 -0
  113. package/esm/helpers/rewind.js +1293 -0
  114. package/esm/helpers/runQuery.d.ts +14 -0
  115. package/esm/helpers/runQuery.d.ts.map +1 -0
  116. package/esm/helpers/runQuery.js +26 -0
  117. package/esm/helpers/setDbProps.d.ts +3 -0
  118. package/esm/helpers/setDbProps.d.ts.map +1 -0
  119. package/esm/helpers/setDbProps.js +25 -0
  120. package/esm/helpers/shouldFlipBeforeExport.d.ts +2 -0
  121. package/esm/helpers/shouldFlipBeforeExport.d.ts.map +1 -0
  122. package/esm/helpers/shouldFlipBeforeExport.js +3 -0
  123. package/esm/helpers/stringToArray.d.ts +2 -0
  124. package/esm/helpers/stringToArray.d.ts.map +1 -0
  125. package/esm/helpers/stringToArray.js +11 -0
  126. package/esm/helpers/stringifyDates.d.ts +5 -0
  127. package/esm/helpers/stringifyDates.d.ts.map +1 -0
  128. package/esm/helpers/stringifyDates.js +14 -0
  129. package/esm/helpers/stringifyDatesInvert.d.ts +5 -0
  130. package/esm/helpers/stringifyDatesInvert.d.ts.map +1 -0
  131. package/esm/helpers/stringifyDatesInvert.js +14 -0
  132. package/esm/helpers/unifyColumns.d.ts +9 -0
  133. package/esm/helpers/unifyColumns.d.ts.map +1 -0
  134. package/esm/helpers/unifyColumns.js +21 -0
  135. package/esm/helpers/unnestQuery.d.ts +2 -0
  136. package/esm/helpers/unnestQuery.d.ts.map +1 -0
  137. package/esm/helpers/unnestQuery.js +8 -0
  138. package/esm/helpers/wrapString.d.ts +35 -0
  139. package/esm/helpers/wrapString.d.ts.map +1 -0
  140. package/esm/helpers/wrapString.js +83 -0
  141. package/esm/helpers/writeDataAsArrays.d.ts +3 -0
  142. package/esm/helpers/writeDataAsArrays.d.ts.map +1 -0
  143. package/esm/helpers/writeDataAsArrays.js +13 -0
  144. package/esm/helpers/writeProjectionsAndIndexes.d.ts +3 -0
  145. package/esm/helpers/writeProjectionsAndIndexes.d.ts.map +1 -0
  146. package/esm/helpers/writeProjectionsAndIndexes.js +29 -0
  147. package/esm/index.d.ts +31 -0
  148. package/esm/index.d.ts.map +1 -0
  149. package/esm/index.js +30 -0
  150. package/esm/methods/aggregateGeoQuery.d.ts +5 -0
  151. package/esm/methods/aggregateGeoQuery.d.ts.map +1 -0
  152. package/esm/methods/aggregateGeoQuery.js +24 -0
  153. package/esm/methods/binsQuery.d.ts +5 -0
  154. package/esm/methods/binsQuery.d.ts.map +1 -0
  155. package/esm/methods/binsQuery.js +40 -0
  156. package/esm/methods/bm25.d.ts +17 -0
  157. package/esm/methods/bm25.d.ts.map +1 -0
  158. package/esm/methods/bm25.js +48 -0
  159. package/esm/methods/cache.d.ts +6 -0
  160. package/esm/methods/cache.d.ts.map +1 -0
  161. package/esm/methods/cache.js +133 -0
  162. package/esm/methods/capitalizeQuery.d.ts +2 -0
  163. package/esm/methods/capitalizeQuery.d.ts.map +1 -0
  164. package/esm/methods/capitalizeQuery.js +8 -0
  165. package/esm/methods/cloneColumn.d.ts +4 -0
  166. package/esm/methods/cloneColumn.d.ts.map +1 -0
  167. package/esm/methods/cloneColumn.js +13 -0
  168. package/esm/methods/cloneQuery.d.ts +4 -0
  169. package/esm/methods/cloneQuery.d.ts.map +1 -0
  170. package/esm/methods/cloneQuery.js +6 -0
  171. package/esm/methods/concatenateQuery.d.ts +4 -0
  172. package/esm/methods/concatenateQuery.d.ts.map +1 -0
  173. package/esm/methods/concatenateQuery.js +13 -0
  174. package/esm/methods/convertQuery.d.ts +7 -0
  175. package/esm/methods/convertQuery.d.ts.map +1 -0
  176. package/esm/methods/convertQuery.js +78 -0
  177. package/esm/methods/correlations.d.ts +9 -0
  178. package/esm/methods/correlations.d.ts.map +1 -0
  179. package/esm/methods/correlations.js +40 -0
  180. package/esm/methods/correlationsQuery.d.ts +5 -0
  181. package/esm/methods/correlationsQuery.d.ts.map +1 -0
  182. package/esm/methods/correlationsQuery.js +26 -0
  183. package/esm/methods/createFtsIndex.d.ts +11 -0
  184. package/esm/methods/createFtsIndex.d.ts.map +1 -0
  185. package/esm/methods/createFtsIndex.js +28 -0
  186. package/esm/methods/createVssIndex.d.ts +9 -0
  187. package/esm/methods/createVssIndex.d.ts.map +1 -0
  188. package/esm/methods/createVssIndex.js +38 -0
  189. package/esm/methods/crossJoinQuery.d.ts +4 -0
  190. package/esm/methods/crossJoinQuery.d.ts.map +1 -0
  191. package/esm/methods/crossJoinQuery.js +3 -0
  192. package/esm/methods/distanceQuery.d.ts +6 -0
  193. package/esm/methods/distanceQuery.d.ts.map +1 -0
  194. package/esm/methods/distanceQuery.js +42 -0
  195. package/esm/methods/fill.d.ts +7 -0
  196. package/esm/methods/fill.d.ts.map +1 -0
  197. package/esm/methods/fill.js +60 -0
  198. package/esm/methods/fuzzyClean.d.ts +7 -0
  199. package/esm/methods/fuzzyClean.d.ts.map +1 -0
  200. package/esm/methods/fuzzyClean.js +194 -0
  201. package/esm/methods/fuzzyJoin.d.ts +8 -0
  202. package/esm/methods/fuzzyJoin.d.ts.map +1 -0
  203. package/esm/methods/fuzzyJoin.js +57 -0
  204. package/esm/methods/fuzzyJoinQuery.d.ts +2 -0
  205. package/esm/methods/fuzzyJoinQuery.d.ts.map +1 -0
  206. package/esm/methods/fuzzyJoinQuery.js +19 -0
  207. package/esm/methods/getBottom.d.ts +8 -0
  208. package/esm/methods/getBottom.d.ts.map +1 -0
  209. package/esm/methods/getBottom.js +22 -0
  210. package/esm/methods/getColumns.d.ts +3 -0
  211. package/esm/methods/getColumns.d.ts.map +1 -0
  212. package/esm/methods/getColumns.js +15 -0
  213. package/esm/methods/getDescription.d.ts +9 -0
  214. package/esm/methods/getDescription.d.ts.map +1 -0
  215. package/esm/methods/getDescription.js +20 -0
  216. package/esm/methods/getFirstRow.d.ts +7 -0
  217. package/esm/methods/getFirstRow.d.ts.map +1 -0
  218. package/esm/methods/getFirstRow.js +15 -0
  219. package/esm/methods/getGeoData.d.ts +17 -0
  220. package/esm/methods/getGeoData.d.ts.map +1 -0
  221. package/esm/methods/getGeoData.js +41 -0
  222. package/esm/methods/getLastRow.d.ts +7 -0
  223. package/esm/methods/getLastRow.d.ts.map +1 -0
  224. package/esm/methods/getLastRow.js +19 -0
  225. package/esm/methods/getMax.d.ts +3 -0
  226. package/esm/methods/getMax.d.ts.map +1 -0
  227. package/esm/methods/getMax.js +18 -0
  228. package/esm/methods/getMean.d.ts +5 -0
  229. package/esm/methods/getMean.d.ts.map +1 -0
  230. package/esm/methods/getMean.js +17 -0
  231. package/esm/methods/getMedian.d.ts +5 -0
  232. package/esm/methods/getMedian.d.ts.map +1 -0
  233. package/esm/methods/getMedian.js +17 -0
  234. package/esm/methods/getMin.d.ts +3 -0
  235. package/esm/methods/getMin.d.ts.map +1 -0
  236. package/esm/methods/getMin.js +18 -0
  237. package/esm/methods/getNbCharacters.d.ts +3 -0
  238. package/esm/methods/getNbCharacters.d.ts.map +1 -0
  239. package/esm/methods/getNbCharacters.js +15 -0
  240. package/esm/methods/getNbRows.d.ts +3 -0
  241. package/esm/methods/getNbRows.d.ts.map +1 -0
  242. package/esm/methods/getNbRows.js +15 -0
  243. package/esm/methods/getQuantile.d.ts +5 -0
  244. package/esm/methods/getQuantile.d.ts.map +1 -0
  245. package/esm/methods/getQuantile.js +17 -0
  246. package/esm/methods/getSkew.d.ts +5 -0
  247. package/esm/methods/getSkew.d.ts.map +1 -0
  248. package/esm/methods/getSkew.js +17 -0
  249. package/esm/methods/getStdDev.d.ts +5 -0
  250. package/esm/methods/getStdDev.d.ts.map +1 -0
  251. package/esm/methods/getStdDev.js +17 -0
  252. package/esm/methods/getSum.d.ts +3 -0
  253. package/esm/methods/getSum.d.ts.map +1 -0
  254. package/esm/methods/getSum.js +15 -0
  255. package/esm/methods/getTableNames.d.ts +3 -0
  256. package/esm/methods/getTableNames.d.ts.map +1 -0
  257. package/esm/methods/getTableNames.js +15 -0
  258. package/esm/methods/getTop.d.ts +7 -0
  259. package/esm/methods/getTop.d.ts.map +1 -0
  260. package/esm/methods/getTop.js +14 -0
  261. package/esm/methods/getTypes.d.ts +5 -0
  262. package/esm/methods/getTypes.d.ts.map +1 -0
  263. package/esm/methods/getTypes.js +13 -0
  264. package/esm/methods/getUniques.d.ts +3 -0
  265. package/esm/methods/getUniques.d.ts.map +1 -0
  266. package/esm/methods/getUniques.js +15 -0
  267. package/esm/methods/getValues.d.ts +3 -0
  268. package/esm/methods/getValues.d.ts.map +1 -0
  269. package/esm/methods/getValues.js +15 -0
  270. package/esm/methods/getVar.d.ts +5 -0
  271. package/esm/methods/getVar.d.ts.map +1 -0
  272. package/esm/methods/getVar.js +17 -0
  273. package/esm/methods/insertRowsQuery.d.ts +4 -0
  274. package/esm/methods/insertRowsQuery.d.ts.map +1 -0
  275. package/esm/methods/insertRowsQuery.js +11 -0
  276. package/esm/methods/join.d.ts +7 -0
  277. package/esm/methods/join.d.ts.map +1 -0
  278. package/esm/methods/join.js +63 -0
  279. package/esm/methods/joinGeo.d.ts +10 -0
  280. package/esm/methods/joinGeo.d.ts.map +1 -0
  281. package/esm/methods/joinGeo.js +76 -0
  282. package/esm/methods/joinGeoQuery.d.ts +2 -0
  283. package/esm/methods/joinGeoQuery.d.ts.map +1 -0
  284. package/esm/methods/joinGeoQuery.js +55 -0
  285. package/esm/methods/joinQuery.d.ts +2 -0
  286. package/esm/methods/joinQuery.d.ts.map +1 -0
  287. package/esm/methods/joinQuery.js +21 -0
  288. package/esm/methods/keepQuery.d.ts +4 -0
  289. package/esm/methods/keepQuery.d.ts.map +1 -0
  290. package/esm/methods/keepQuery.js +15 -0
  291. package/esm/methods/linearRegressionQuery.d.ts +5 -0
  292. package/esm/methods/linearRegressionQuery.d.ts.map +1 -0
  293. package/esm/methods/linearRegressionQuery.js +37 -0
  294. package/esm/methods/linearRegressions.d.ts +9 -0
  295. package/esm/methods/linearRegressions.d.ts.map +1 -0
  296. package/esm/methods/linearRegressions.js +43 -0
  297. package/esm/methods/loadArray.d.ts +5 -0
  298. package/esm/methods/loadArray.d.ts.map +1 -0
  299. package/esm/methods/loadArray.js +78 -0
  300. package/esm/methods/loadDataQuery.d.ts +23 -0
  301. package/esm/methods/loadDataQuery.d.ts.map +1 -0
  302. package/esm/methods/loadDataQuery.js +77 -0
  303. package/esm/methods/lowerQuery.d.ts +2 -0
  304. package/esm/methods/lowerQuery.d.ts.map +1 -0
  305. package/esm/methods/lowerQuery.js +7 -0
  306. package/esm/methods/normalizeQuery.d.ts +5 -0
  307. package/esm/methods/normalizeQuery.d.ts.map +1 -0
  308. package/esm/methods/normalizeQuery.js +22 -0
  309. package/esm/methods/normalizeString.d.ts +5 -0
  310. package/esm/methods/normalizeString.d.ts.map +1 -0
  311. package/esm/methods/normalizeString.js +26 -0
  312. package/esm/methods/outliersIQRQuery.d.ts +4 -0
  313. package/esm/methods/outliersIQRQuery.d.ts.map +1 -0
  314. package/esm/methods/outliersIQRQuery.js +31 -0
  315. package/esm/methods/proportionsHorizontalQuery.d.ts +5 -0
  316. package/esm/methods/proportionsHorizontalQuery.d.ts.map +1 -0
  317. package/esm/methods/proportionsHorizontalQuery.js +15 -0
  318. package/esm/methods/proportionsVerticalQuery.d.ts +5 -0
  319. package/esm/methods/proportionsVerticalQuery.d.ts.map +1 -0
  320. package/esm/methods/proportionsVerticalQuery.js +19 -0
  321. package/esm/methods/quantilesQuery.d.ts +4 -0
  322. package/esm/methods/quantilesQuery.d.ts.map +1 -0
  323. package/esm/methods/quantilesQuery.js +12 -0
  324. package/esm/methods/ranksQuery.d.ts +6 -0
  325. package/esm/methods/ranksQuery.d.ts.map +1 -0
  326. package/esm/methods/ranksQuery.js +12 -0
  327. package/esm/methods/removeDuplicatesQuery.d.ts +4 -0
  328. package/esm/methods/removeDuplicatesQuery.d.ts.map +1 -0
  329. package/esm/methods/removeDuplicatesQuery.js +12 -0
  330. package/esm/methods/removeMissing.d.ts +7 -0
  331. package/esm/methods/removeMissing.d.ts.map +1 -0
  332. package/esm/methods/removeMissing.js +21 -0
  333. package/esm/methods/removeMissingQuery.d.ts +7 -0
  334. package/esm/methods/removeMissingQuery.d.ts.map +1 -0
  335. package/esm/methods/removeMissingQuery.js +43 -0
  336. package/esm/methods/removeQuery.d.ts +4 -0
  337. package/esm/methods/removeQuery.d.ts.map +1 -0
  338. package/esm/methods/removeQuery.js +15 -0
  339. package/esm/methods/renameColumnQuery.d.ts +2 -0
  340. package/esm/methods/renameColumnQuery.d.ts.map +1 -0
  341. package/esm/methods/renameColumnQuery.js +7 -0
  342. package/esm/methods/replaceNullsQuery.d.ts +2 -0
  343. package/esm/methods/replaceNullsQuery.d.ts.map +1 -0
  344. package/esm/methods/replaceNullsQuery.js +10 -0
  345. package/esm/methods/replaceQuery.d.ts +5 -0
  346. package/esm/methods/replaceQuery.d.ts.map +1 -0
  347. package/esm/methods/replaceQuery.js +24 -0
  348. package/esm/methods/rollingQuery.d.ts +5 -0
  349. package/esm/methods/rollingQuery.d.ts.map +1 -0
  350. package/esm/methods/rollingQuery.js +33 -0
  351. package/esm/methods/roundQuery.d.ts +5 -0
  352. package/esm/methods/roundQuery.d.ts.map +1 -0
  353. package/esm/methods/roundQuery.js +16 -0
  354. package/esm/methods/selectRowsQuery.d.ts +5 -0
  355. package/esm/methods/selectRowsQuery.d.ts.map +1 -0
  356. package/esm/methods/selectRowsQuery.js +3 -0
  357. package/esm/methods/sortQuery.d.ts +8 -0
  358. package/esm/methods/sortQuery.d.ts.map +1 -0
  359. package/esm/methods/sortQuery.js +18 -0
  360. package/esm/methods/splitSpread.d.ts +5 -0
  361. package/esm/methods/splitSpread.d.ts.map +1 -0
  362. package/esm/methods/splitSpread.js +61 -0
  363. package/esm/methods/summarize.d.ts +13 -0
  364. package/esm/methods/summarize.d.ts.map +1 -0
  365. package/esm/methods/summarize.js +60 -0
  366. package/esm/methods/summarizeQuery.d.ts +7 -0
  367. package/esm/methods/summarizeQuery.d.ts.map +1 -0
  368. package/esm/methods/summarizeQuery.js +112 -0
  369. package/esm/methods/trimQuery.d.ts +5 -0
  370. package/esm/methods/trimQuery.d.ts.map +1 -0
  371. package/esm/methods/trimQuery.js +29 -0
  372. package/esm/methods/truncateQuery.d.ts +2 -0
  373. package/esm/methods/truncateQuery.d.ts.map +1 -0
  374. package/esm/methods/truncateQuery.js +3 -0
  375. package/esm/methods/upperQuery.d.ts +2 -0
  376. package/esm/methods/upperQuery.d.ts.map +1 -0
  377. package/esm/methods/upperQuery.js +7 -0
  378. package/esm/methods/writeDataQuery.d.ts +5 -0
  379. package/esm/methods/writeDataQuery.d.ts.map +1 -0
  380. package/esm/methods/writeDataQuery.js +44 -0
  381. package/esm/methods/writeGeoDataQuery.d.ts +4 -0
  382. package/esm/methods/writeGeoDataQuery.d.ts.map +1 -0
  383. package/esm/methods/writeGeoDataQuery.js +16 -0
  384. package/esm/methods/zScoreQuery.d.ts +5 -0
  385. package/esm/methods/zScoreQuery.d.ts.map +1 -0
  386. package/esm/methods/zScoreQuery.js +23 -0
  387. package/esm/package.json +3 -0
  388. package/package.json +27 -0
  389. package/script/class/Simple.d.ts +66 -0
  390. package/script/class/Simple.d.ts.map +1 -0
  391. package/script/class/Simple.js +97 -0
  392. package/script/class/SimpleDB.d.ts +487 -0
  393. package/script/class/SimpleDB.d.ts.map +1 -0
  394. package/script/class/SimpleDB.js +813 -0
  395. package/script/class/SimpleTable.d.ts +4408 -0
  396. package/script/class/SimpleTable.d.ts.map +1 -0
  397. package/script/class/SimpleTable.js +5407 -0
  398. package/script/helpers/accumulateQuery.d.ts +4 -0
  399. package/script/helpers/accumulateQuery.d.ts.map +1 -0
  400. package/script/helpers/accumulateQuery.js +21 -0
  401. package/script/helpers/camelCase.d.ts +30 -0
  402. package/script/helpers/camelCase.d.ts.map +1 -0
  403. package/script/helpers/camelCase.js +51 -0
  404. package/script/helpers/capitalize.d.ts +28 -0
  405. package/script/helpers/capitalize.d.ts.map +1 -0
  406. package/script/helpers/capitalize.js +36 -0
  407. package/script/helpers/checkVssIndexes.d.ts +2 -0
  408. package/script/helpers/checkVssIndexes.d.ts.map +1 -0
  409. package/script/helpers/checkVssIndexes.js +19 -0
  410. package/script/helpers/cleanCache.d.ts +3 -0
  411. package/script/helpers/cleanCache.d.ts.map +1 -0
  412. package/script/helpers/cleanCache.js +20 -0
  413. package/script/helpers/cleanPath.d.ts +2 -0
  414. package/script/helpers/cleanPath.d.ts.map +1 -0
  415. package/script/helpers/cleanPath.js +6 -0
  416. package/script/helpers/cleanSQL.d.ts +2 -0
  417. package/script/helpers/cleanSQL.d.ts.map +1 -0
  418. package/script/helpers/cleanSQL.js +27 -0
  419. package/script/helpers/concatenateRowQuery.d.ts +2 -0
  420. package/script/helpers/concatenateRowQuery.d.ts.map +1 -0
  421. package/script/helpers/concatenateRowQuery.js +12 -0
  422. package/script/helpers/convertForJS.d.ts +6 -0
  423. package/script/helpers/convertForJS.d.ts.map +1 -0
  424. package/script/helpers/convertForJS.js +42 -0
  425. package/script/helpers/createDirectory.d.ts +2 -0
  426. package/script/helpers/createDirectory.d.ts.map +1 -0
  427. package/script/helpers/createDirectory.js +13 -0
  428. package/script/helpers/csvFormat.d.ts +3 -0
  429. package/script/helpers/csvFormat.d.ts.map +1 -0
  430. package/script/helpers/csvFormat.js +168 -0
  431. package/script/helpers/dataToArrays.d.ts +51 -0
  432. package/script/helpers/dataToArrays.d.ts.map +1 -0
  433. package/script/helpers/dataToArrays.js +58 -0
  434. package/script/helpers/extractTypes.d.ts +6 -0
  435. package/script/helpers/extractTypes.d.ts.map +1 -0
  436. package/script/helpers/extractTypes.js +14 -0
  437. package/script/helpers/findGeoColumn.d.ts +3 -0
  438. package/script/helpers/findGeoColumn.d.ts.map +1 -0
  439. package/script/helpers/findGeoColumn.js +21 -0
  440. package/script/helpers/formatDate.d.ts +34 -0
  441. package/script/helpers/formatDate.d.ts.map +1 -0
  442. package/script/helpers/formatDate.js +72 -0
  443. package/script/helpers/formatNumber.d.ts +46 -0
  444. package/script/helpers/formatNumber.d.ts.map +1 -0
  445. package/script/helpers/formatNumber.js +125 -0
  446. package/script/helpers/getCombinations.d.ts +3 -0
  447. package/script/helpers/getCombinations.d.ts.map +1 -0
  448. package/script/helpers/getCombinations.js +26 -0
  449. package/script/helpers/getExtension.d.ts +2 -0
  450. package/script/helpers/getExtension.d.ts.map +1 -0
  451. package/script/helpers/getExtension.js +12 -0
  452. package/script/helpers/getIdenticalColumns.d.ts +2 -0
  453. package/script/helpers/getIdenticalColumns.d.ts.map +1 -0
  454. package/script/helpers/getIdenticalColumns.js +6 -0
  455. package/script/helpers/getName.d.ts +2 -0
  456. package/script/helpers/getName.d.ts.map +1 -0
  457. package/script/helpers/getName.js +17 -0
  458. package/script/helpers/getProjection.d.ts +3 -0
  459. package/script/helpers/getProjection.d.ts.map +1 -0
  460. package/script/helpers/getProjection.js +28 -0
  461. package/script/helpers/getProjectionParquet.d.ts +3 -0
  462. package/script/helpers/getProjectionParquet.d.ts.map +1 -0
  463. package/script/helpers/getProjectionParquet.js +30 -0
  464. package/script/helpers/index.d.ts +20 -0
  465. package/script/helpers/index.d.ts.map +1 -0
  466. package/script/helpers/index.js +30 -0
  467. package/script/helpers/keepNumericalColumns.d.ts +4 -0
  468. package/script/helpers/keepNumericalColumns.d.ts.map +1 -0
  469. package/script/helpers/keepNumericalColumns.js +16 -0
  470. package/script/helpers/logData.d.ts +6 -0
  471. package/script/helpers/logData.d.ts.map +1 -0
  472. package/script/helpers/logData.js +54 -0
  473. package/script/helpers/mergeOptions.d.ts +28 -0
  474. package/script/helpers/mergeOptions.d.ts.map +1 -0
  475. package/script/helpers/mergeOptions.js +15 -0
  476. package/script/helpers/nestQuery.d.ts +2 -0
  477. package/script/helpers/nestQuery.d.ts.map +1 -0
  478. package/script/helpers/nestQuery.js +19 -0
  479. package/script/helpers/parseDuckDBType.d.ts +2 -0
  480. package/script/helpers/parseDuckDBType.d.ts.map +1 -0
  481. package/script/helpers/parseDuckDBType.js +41 -0
  482. package/script/helpers/parseTypes.d.ts +2 -0
  483. package/script/helpers/parseTypes.d.ts.map +1 -0
  484. package/script/helpers/parseTypes.js +38 -0
  485. package/script/helpers/parseValue.d.ts +2 -0
  486. package/script/helpers/parseValue.d.ts.map +1 -0
  487. package/script/helpers/parseValue.js +23 -0
  488. package/script/helpers/prettyDuration.d.ts +55 -0
  489. package/script/helpers/prettyDuration.d.ts.map +1 -0
  490. package/script/helpers/prettyDuration.js +148 -0
  491. package/script/helpers/printTable.d.ts +47 -0
  492. package/script/helpers/printTable.d.ts.map +1 -0
  493. package/script/helpers/printTable.js +223 -0
  494. package/script/helpers/queryDB.d.ts +19 -0
  495. package/script/helpers/queryDB.d.ts.map +1 -0
  496. package/script/helpers/queryDB.js +68 -0
  497. package/script/helpers/rewind.d.ts +3 -0
  498. package/script/helpers/rewind.d.ts.map +1 -0
  499. package/script/helpers/rewind.js +1295 -0
  500. package/script/helpers/runQuery.d.ts +14 -0
  501. package/script/helpers/runQuery.d.ts.map +1 -0
  502. package/script/helpers/runQuery.js +32 -0
  503. package/script/helpers/setDbProps.d.ts +3 -0
  504. package/script/helpers/setDbProps.d.ts.map +1 -0
  505. package/script/helpers/setDbProps.js +28 -0
  506. package/script/helpers/shouldFlipBeforeExport.d.ts +2 -0
  507. package/script/helpers/shouldFlipBeforeExport.d.ts.map +1 -0
  508. package/script/helpers/shouldFlipBeforeExport.js +6 -0
  509. package/script/helpers/stringToArray.d.ts +2 -0
  510. package/script/helpers/stringToArray.d.ts.map +1 -0
  511. package/script/helpers/stringToArray.js +14 -0
  512. package/script/helpers/stringifyDates.d.ts +5 -0
  513. package/script/helpers/stringifyDates.d.ts.map +1 -0
  514. package/script/helpers/stringifyDates.js +17 -0
  515. package/script/helpers/stringifyDatesInvert.d.ts +5 -0
  516. package/script/helpers/stringifyDatesInvert.d.ts.map +1 -0
  517. package/script/helpers/stringifyDatesInvert.js +17 -0
  518. package/script/helpers/unifyColumns.d.ts +9 -0
  519. package/script/helpers/unifyColumns.d.ts.map +1 -0
  520. package/script/helpers/unifyColumns.js +24 -0
  521. package/script/helpers/unnestQuery.d.ts +2 -0
  522. package/script/helpers/unnestQuery.d.ts.map +1 -0
  523. package/script/helpers/unnestQuery.js +11 -0
  524. package/script/helpers/wrapString.d.ts +35 -0
  525. package/script/helpers/wrapString.d.ts.map +1 -0
  526. package/script/helpers/wrapString.js +86 -0
  527. package/script/helpers/writeDataAsArrays.d.ts +3 -0
  528. package/script/helpers/writeDataAsArrays.d.ts.map +1 -0
  529. package/script/helpers/writeDataAsArrays.js +19 -0
  530. package/script/helpers/writeProjectionsAndIndexes.d.ts +3 -0
  531. package/script/helpers/writeProjectionsAndIndexes.d.ts.map +1 -0
  532. package/script/helpers/writeProjectionsAndIndexes.js +32 -0
  533. package/script/index.d.ts +31 -0
  534. package/script/index.d.ts.map +1 -0
  535. package/script/index.js +38 -0
  536. package/script/methods/aggregateGeoQuery.d.ts +5 -0
  537. package/script/methods/aggregateGeoQuery.d.ts.map +1 -0
  538. package/script/methods/aggregateGeoQuery.js +30 -0
  539. package/script/methods/binsQuery.d.ts +5 -0
  540. package/script/methods/binsQuery.d.ts.map +1 -0
  541. package/script/methods/binsQuery.js +43 -0
  542. package/script/methods/bm25.d.ts +17 -0
  543. package/script/methods/bm25.d.ts.map +1 -0
  544. package/script/methods/bm25.js +54 -0
  545. package/script/methods/cache.d.ts +6 -0
  546. package/script/methods/cache.d.ts.map +1 -0
  547. package/script/methods/cache.js +139 -0
  548. package/script/methods/capitalizeQuery.d.ts +2 -0
  549. package/script/methods/capitalizeQuery.d.ts.map +1 -0
  550. package/script/methods/capitalizeQuery.js +11 -0
  551. package/script/methods/cloneColumn.d.ts +4 -0
  552. package/script/methods/cloneColumn.d.ts.map +1 -0
  553. package/script/methods/cloneColumn.js +16 -0
  554. package/script/methods/cloneQuery.d.ts +4 -0
  555. package/script/methods/cloneQuery.d.ts.map +1 -0
  556. package/script/methods/cloneQuery.js +9 -0
  557. package/script/methods/concatenateQuery.d.ts +4 -0
  558. package/script/methods/concatenateQuery.d.ts.map +1 -0
  559. package/script/methods/concatenateQuery.js +16 -0
  560. package/script/methods/convertQuery.d.ts +7 -0
  561. package/script/methods/convertQuery.d.ts.map +1 -0
  562. package/script/methods/convertQuery.js +84 -0
  563. package/script/methods/correlations.d.ts +9 -0
  564. package/script/methods/correlations.d.ts.map +1 -0
  565. package/script/methods/correlations.js +46 -0
  566. package/script/methods/correlationsQuery.d.ts +5 -0
  567. package/script/methods/correlationsQuery.d.ts.map +1 -0
  568. package/script/methods/correlationsQuery.js +32 -0
  569. package/script/methods/createFtsIndex.d.ts +11 -0
  570. package/script/methods/createFtsIndex.d.ts.map +1 -0
  571. package/script/methods/createFtsIndex.js +34 -0
  572. package/script/methods/createVssIndex.d.ts +9 -0
  573. package/script/methods/createVssIndex.d.ts.map +1 -0
  574. package/script/methods/createVssIndex.js +44 -0
  575. package/script/methods/crossJoinQuery.d.ts +4 -0
  576. package/script/methods/crossJoinQuery.d.ts.map +1 -0
  577. package/script/methods/crossJoinQuery.js +6 -0
  578. package/script/methods/distanceQuery.d.ts +6 -0
  579. package/script/methods/distanceQuery.d.ts.map +1 -0
  580. package/script/methods/distanceQuery.js +45 -0
  581. package/script/methods/fill.d.ts +7 -0
  582. package/script/methods/fill.d.ts.map +1 -0
  583. package/script/methods/fill.js +66 -0
  584. package/script/methods/fuzzyClean.d.ts +7 -0
  585. package/script/methods/fuzzyClean.d.ts.map +1 -0
  586. package/script/methods/fuzzyClean.js +200 -0
  587. package/script/methods/fuzzyJoin.d.ts +8 -0
  588. package/script/methods/fuzzyJoin.d.ts.map +1 -0
  589. package/script/methods/fuzzyJoin.js +63 -0
  590. package/script/methods/fuzzyJoinQuery.d.ts +2 -0
  591. package/script/methods/fuzzyJoinQuery.d.ts.map +1 -0
  592. package/script/methods/fuzzyJoinQuery.js +22 -0
  593. package/script/methods/getBottom.d.ts +8 -0
  594. package/script/methods/getBottom.d.ts.map +1 -0
  595. package/script/methods/getBottom.js +28 -0
  596. package/script/methods/getColumns.d.ts +3 -0
  597. package/script/methods/getColumns.d.ts.map +1 -0
  598. package/script/methods/getColumns.js +21 -0
  599. package/script/methods/getDescription.d.ts +9 -0
  600. package/script/methods/getDescription.d.ts.map +1 -0
  601. package/script/methods/getDescription.js +23 -0
  602. package/script/methods/getFirstRow.d.ts +7 -0
  603. package/script/methods/getFirstRow.d.ts.map +1 -0
  604. package/script/methods/getFirstRow.js +21 -0
  605. package/script/methods/getGeoData.d.ts +17 -0
  606. package/script/methods/getGeoData.d.ts.map +1 -0
  607. package/script/methods/getGeoData.js +47 -0
  608. package/script/methods/getLastRow.d.ts +7 -0
  609. package/script/methods/getLastRow.d.ts.map +1 -0
  610. package/script/methods/getLastRow.js +25 -0
  611. package/script/methods/getMax.d.ts +3 -0
  612. package/script/methods/getMax.d.ts.map +1 -0
  613. package/script/methods/getMax.js +24 -0
  614. package/script/methods/getMean.d.ts +5 -0
  615. package/script/methods/getMean.d.ts.map +1 -0
  616. package/script/methods/getMean.js +23 -0
  617. package/script/methods/getMedian.d.ts +5 -0
  618. package/script/methods/getMedian.d.ts.map +1 -0
  619. package/script/methods/getMedian.js +23 -0
  620. package/script/methods/getMin.d.ts +3 -0
  621. package/script/methods/getMin.d.ts.map +1 -0
  622. package/script/methods/getMin.js +24 -0
  623. package/script/methods/getNbCharacters.d.ts +3 -0
  624. package/script/methods/getNbCharacters.d.ts.map +1 -0
  625. package/script/methods/getNbCharacters.js +21 -0
  626. package/script/methods/getNbRows.d.ts +3 -0
  627. package/script/methods/getNbRows.d.ts.map +1 -0
  628. package/script/methods/getNbRows.js +21 -0
  629. package/script/methods/getQuantile.d.ts +5 -0
  630. package/script/methods/getQuantile.d.ts.map +1 -0
  631. package/script/methods/getQuantile.js +23 -0
  632. package/script/methods/getSkew.d.ts +5 -0
  633. package/script/methods/getSkew.d.ts.map +1 -0
  634. package/script/methods/getSkew.js +23 -0
  635. package/script/methods/getStdDev.d.ts +5 -0
  636. package/script/methods/getStdDev.d.ts.map +1 -0
  637. package/script/methods/getStdDev.js +23 -0
  638. package/script/methods/getSum.d.ts +3 -0
  639. package/script/methods/getSum.d.ts.map +1 -0
  640. package/script/methods/getSum.js +21 -0
  641. package/script/methods/getTableNames.d.ts +3 -0
  642. package/script/methods/getTableNames.d.ts.map +1 -0
  643. package/script/methods/getTableNames.js +21 -0
  644. package/script/methods/getTop.d.ts +7 -0
  645. package/script/methods/getTop.d.ts.map +1 -0
  646. package/script/methods/getTop.js +20 -0
  647. package/script/methods/getTypes.d.ts +5 -0
  648. package/script/methods/getTypes.d.ts.map +1 -0
  649. package/script/methods/getTypes.js +19 -0
  650. package/script/methods/getUniques.d.ts +3 -0
  651. package/script/methods/getUniques.d.ts.map +1 -0
  652. package/script/methods/getUniques.js +21 -0
  653. package/script/methods/getValues.d.ts +3 -0
  654. package/script/methods/getValues.d.ts.map +1 -0
  655. package/script/methods/getValues.js +21 -0
  656. package/script/methods/getVar.d.ts +5 -0
  657. package/script/methods/getVar.d.ts.map +1 -0
  658. package/script/methods/getVar.js +23 -0
  659. package/script/methods/insertRowsQuery.d.ts +4 -0
  660. package/script/methods/insertRowsQuery.d.ts.map +1 -0
  661. package/script/methods/insertRowsQuery.js +17 -0
  662. package/script/methods/join.d.ts +7 -0
  663. package/script/methods/join.d.ts.map +1 -0
  664. package/script/methods/join.js +69 -0
  665. package/script/methods/joinGeo.d.ts +10 -0
  666. package/script/methods/joinGeo.d.ts.map +1 -0
  667. package/script/methods/joinGeo.js +82 -0
  668. package/script/methods/joinGeoQuery.d.ts +2 -0
  669. package/script/methods/joinGeoQuery.d.ts.map +1 -0
  670. package/script/methods/joinGeoQuery.js +58 -0
  671. package/script/methods/joinQuery.d.ts +2 -0
  672. package/script/methods/joinQuery.d.ts.map +1 -0
  673. package/script/methods/joinQuery.js +24 -0
  674. package/script/methods/keepQuery.d.ts +4 -0
  675. package/script/methods/keepQuery.d.ts.map +1 -0
  676. package/script/methods/keepQuery.js +21 -0
  677. package/script/methods/linearRegressionQuery.d.ts +5 -0
  678. package/script/methods/linearRegressionQuery.d.ts.map +1 -0
  679. package/script/methods/linearRegressionQuery.js +43 -0
  680. package/script/methods/linearRegressions.d.ts +9 -0
  681. package/script/methods/linearRegressions.d.ts.map +1 -0
  682. package/script/methods/linearRegressions.js +49 -0
  683. package/script/methods/loadArray.d.ts +5 -0
  684. package/script/methods/loadArray.d.ts.map +1 -0
  685. package/script/methods/loadArray.js +84 -0
  686. package/script/methods/loadDataQuery.d.ts +23 -0
  687. package/script/methods/loadDataQuery.d.ts.map +1 -0
  688. package/script/methods/loadDataQuery.js +83 -0
  689. package/script/methods/lowerQuery.d.ts +2 -0
  690. package/script/methods/lowerQuery.d.ts.map +1 -0
  691. package/script/methods/lowerQuery.js +10 -0
  692. package/script/methods/normalizeQuery.d.ts +5 -0
  693. package/script/methods/normalizeQuery.d.ts.map +1 -0
  694. package/script/methods/normalizeQuery.js +28 -0
  695. package/script/methods/normalizeString.d.ts +5 -0
  696. package/script/methods/normalizeString.d.ts.map +1 -0
  697. package/script/methods/normalizeString.js +32 -0
  698. package/script/methods/outliersIQRQuery.d.ts +4 -0
  699. package/script/methods/outliersIQRQuery.d.ts.map +1 -0
  700. package/script/methods/outliersIQRQuery.js +37 -0
  701. package/script/methods/proportionsHorizontalQuery.d.ts +5 -0
  702. package/script/methods/proportionsHorizontalQuery.d.ts.map +1 -0
  703. package/script/methods/proportionsHorizontalQuery.js +18 -0
  704. package/script/methods/proportionsVerticalQuery.d.ts +5 -0
  705. package/script/methods/proportionsVerticalQuery.d.ts.map +1 -0
  706. package/script/methods/proportionsVerticalQuery.js +25 -0
  707. package/script/methods/quantilesQuery.d.ts +4 -0
  708. package/script/methods/quantilesQuery.d.ts.map +1 -0
  709. package/script/methods/quantilesQuery.js +18 -0
  710. package/script/methods/ranksQuery.d.ts +6 -0
  711. package/script/methods/ranksQuery.d.ts.map +1 -0
  712. package/script/methods/ranksQuery.js +18 -0
  713. package/script/methods/removeDuplicatesQuery.d.ts +4 -0
  714. package/script/methods/removeDuplicatesQuery.d.ts.map +1 -0
  715. package/script/methods/removeDuplicatesQuery.js +18 -0
  716. package/script/methods/removeMissing.d.ts +7 -0
  717. package/script/methods/removeMissing.d.ts.map +1 -0
  718. package/script/methods/removeMissing.js +27 -0
  719. package/script/methods/removeMissingQuery.d.ts +7 -0
  720. package/script/methods/removeMissingQuery.d.ts.map +1 -0
  721. package/script/methods/removeMissingQuery.js +46 -0
  722. package/script/methods/removeQuery.d.ts +4 -0
  723. package/script/methods/removeQuery.d.ts.map +1 -0
  724. package/script/methods/removeQuery.js +21 -0
  725. package/script/methods/renameColumnQuery.d.ts +2 -0
  726. package/script/methods/renameColumnQuery.d.ts.map +1 -0
  727. package/script/methods/renameColumnQuery.js +10 -0
  728. package/script/methods/replaceNullsQuery.d.ts +2 -0
  729. package/script/methods/replaceNullsQuery.d.ts.map +1 -0
  730. package/script/methods/replaceNullsQuery.js +16 -0
  731. package/script/methods/replaceQuery.d.ts +5 -0
  732. package/script/methods/replaceQuery.d.ts.map +1 -0
  733. package/script/methods/replaceQuery.js +27 -0
  734. package/script/methods/rollingQuery.d.ts +5 -0
  735. package/script/methods/rollingQuery.d.ts.map +1 -0
  736. package/script/methods/rollingQuery.js +39 -0
  737. package/script/methods/roundQuery.d.ts +5 -0
  738. package/script/methods/roundQuery.d.ts.map +1 -0
  739. package/script/methods/roundQuery.js +19 -0
  740. package/script/methods/selectRowsQuery.d.ts +5 -0
  741. package/script/methods/selectRowsQuery.d.ts.map +1 -0
  742. package/script/methods/selectRowsQuery.js +6 -0
  743. package/script/methods/sortQuery.d.ts +8 -0
  744. package/script/methods/sortQuery.d.ts.map +1 -0
  745. package/script/methods/sortQuery.js +21 -0
  746. package/script/methods/splitSpread.d.ts +5 -0
  747. package/script/methods/splitSpread.d.ts.map +1 -0
  748. package/script/methods/splitSpread.js +67 -0
  749. package/script/methods/summarize.d.ts +13 -0
  750. package/script/methods/summarize.d.ts.map +1 -0
  751. package/script/methods/summarize.js +66 -0
  752. package/script/methods/summarizeQuery.d.ts +7 -0
  753. package/script/methods/summarizeQuery.d.ts.map +1 -0
  754. package/script/methods/summarizeQuery.js +115 -0
  755. package/script/methods/trimQuery.d.ts +5 -0
  756. package/script/methods/trimQuery.d.ts.map +1 -0
  757. package/script/methods/trimQuery.js +32 -0
  758. package/script/methods/truncateQuery.d.ts +2 -0
  759. package/script/methods/truncateQuery.d.ts.map +1 -0
  760. package/script/methods/truncateQuery.js +6 -0
  761. package/script/methods/upperQuery.d.ts +2 -0
  762. package/script/methods/upperQuery.d.ts.map +1 -0
  763. package/script/methods/upperQuery.js +10 -0
  764. package/script/methods/writeDataQuery.d.ts +5 -0
  765. package/script/methods/writeDataQuery.d.ts.map +1 -0
  766. package/script/methods/writeDataQuery.js +50 -0
  767. package/script/methods/writeGeoDataQuery.d.ts +4 -0
  768. package/script/methods/writeGeoDataQuery.d.ts.map +1 -0
  769. package/script/methods/writeGeoDataQuery.js +22 -0
  770. package/script/methods/zScoreQuery.d.ts +5 -0
  771. package/script/methods/zScoreQuery.d.ts.map +1 -0
  772. package/script/methods/zScoreQuery.js +29 -0
  773. package/script/package.json +3 -0
@@ -0,0 +1,807 @@
1
+ import { DuckDBInstance } from "@duckdb/node-api";
2
+ import runQuery from "../helpers/runQuery.js";
3
+ import SimpleTable from "./SimpleTable.js";
4
+ import cleanCache from "../helpers/cleanCache.js";
5
+ import createDirectory from "../helpers/createDirectory.js";
6
+ import prettyDuration from "../helpers/prettyDuration.js";
7
+ import Simple from "./Simple.js";
8
+ import queryDB from "../helpers/queryDB.js";
9
+ import mergeOptions from "../helpers/mergeOptions.js";
10
+ import getTableNames from "../methods/getTableNames.js";
11
+ import cleanPath from "../helpers/cleanPath.js";
12
+ import getExtension from "../helpers/getExtension.js";
13
+ import { existsSync, rmSync } from "node:fs";
14
+ import checkVssIndexes from "../helpers/checkVssIndexes.js";
15
+ import setDbProps from "../helpers/setDbProps.js";
16
+ import writeProjectionsAndIndexes from "../helpers/writeProjectionsAndIndexes.js";
17
+ import getName from "../helpers/getName.js";
18
+ import { renameSync } from "node:fs";
19
+ /**
20
+ * Manages a DuckDB database instance, providing a simplified interface for database operations.
21
+ *
22
+ * @example
23
+ * ```ts
24
+ * // Create an in-memory database instance
25
+ * const sdb = new SimpleDB();
26
+ * // Create a new table named "employees"
27
+ * const employees = sdb.newTable("employees");
28
+ * // Load data from a CSV file into the "employees" table
29
+ * await employees.loadData("./employees.csv");
30
+ * // Log the first few rows of the "employees" table to the console
31
+ * await employees.logTable();
32
+ * // Close the database connection and clean up resources
33
+ * await sdb.done();
34
+ * ```
35
+ *
36
+ * @example
37
+ * ```ts
38
+ * // Create a persistent database instance, saving data to a file
39
+ * // To load an existing database, use the `loadDB` method instead
40
+ * const sdb = new SimpleDB({ file: "./my_database.db" });
41
+ * // Perform database operations...
42
+ * // Close the database connection, which saves changes to the specified file
43
+ * await sdb.done();
44
+ * ```
45
+ *
46
+ * @example
47
+ * ```ts
48
+ * // Create a database instance with custom options
49
+ * const sdb = new SimpleDB({
50
+ * debug: true, // Enable debugging output
51
+ * nbRowsToLog: 20 // Set the number of rows to log by default
52
+ * });
53
+ * ```
54
+ */
55
+ export default class SimpleDB extends Simple {
56
+ /**
57
+ * Creates a new SimpleDB instance.
58
+ *
59
+ * @param options - Configuration options for the SimpleDB instance.
60
+ * @param options.file - The path to the database file. If not provided, an in-memory database is used.
61
+ * @param options.overwrite - A flag indicating whether to overwrite the database file if it already exists.
62
+ * @param options.logDuration - A flag indicating whether to log the total execution duration.
63
+ * @param options.nbRowsToLog - The number of rows to display when logging a table.
64
+ * @param options.nbCharactersToLog - The maximum number of characters to display for text-based cells.
65
+ * @param options.types - A flag indicating whether to include data types when logging a table.
66
+ * @param options.cacheVerbose - A flag indicating whether to log verbose cache-related messages.
67
+ * @param options.debug - A flag indicating whether to log debugging information.
68
+ * @param options.duckDbCache - A flag indicating whether to use DuckDB's external file cache.
69
+ * @param options.progressBar - A flag indicating whether to display a progress bar for long-running operations.
70
+ * @category Constructor
71
+ */
72
+ constructor(options = {}) {
73
+ super(options);
74
+ /**
75
+ * An array of paths to the data sources used in the cache.
76
+ *
77
+ * @defaultValue `[]`
78
+ * @category Properties
79
+ */
80
+ Object.defineProperty(this, "cacheSourcesUsed", {
81
+ enumerable: true,
82
+ configurable: true,
83
+ writable: true,
84
+ value: void 0
85
+ });
86
+ /**
87
+ * A timestamp marking the start of a duration measurement.
88
+ *
89
+ * @defaultValue `undefined`
90
+ * @category Properties
91
+ */
92
+ Object.defineProperty(this, "durationStart", {
93
+ enumerable: true,
94
+ configurable: true,
95
+ writable: true,
96
+ value: void 0
97
+ });
98
+ /**
99
+ * A counter for incrementing default table names.
100
+ *
101
+ * @defaultValue `1`
102
+ * @category Properties
103
+ */
104
+ Object.defineProperty(this, "tableIncrement", {
105
+ enumerable: true,
106
+ configurable: true,
107
+ writable: true,
108
+ value: void 0
109
+ });
110
+ /**
111
+ * A flag indicating whether to log the total execution duration.
112
+ *
113
+ * @defaultValue `false`
114
+ * @category Properties
115
+ */
116
+ Object.defineProperty(this, "logDuration", {
117
+ enumerable: true,
118
+ configurable: true,
119
+ writable: true,
120
+ value: void 0
121
+ });
122
+ /**
123
+ * An array of table instances associated with this database.
124
+ *
125
+ * @defaultValue `[]`
126
+ * @category Properties
127
+ */
128
+ Object.defineProperty(this, "tables", {
129
+ enumerable: true,
130
+ configurable: true,
131
+ writable: true,
132
+ value: void 0
133
+ });
134
+ /**
135
+ * A flag indicating whether to log verbose cache-related messages.
136
+ *
137
+ * @defaultValue `false`
138
+ * @category Properties
139
+ */
140
+ Object.defineProperty(this, "cacheVerbose", {
141
+ enumerable: true,
142
+ configurable: true,
143
+ writable: true,
144
+ value: void 0
145
+ });
146
+ /**
147
+ * The total time saved by using the cache, in milliseconds.
148
+ *
149
+ * @defaultValue `0`
150
+ * @category Properties
151
+ */
152
+ Object.defineProperty(this, "cacheTimeSaved", {
153
+ enumerable: true,
154
+ configurable: true,
155
+ writable: true,
156
+ value: void 0
157
+ });
158
+ /**
159
+ * The total time spent writing to the cache, in milliseconds.
160
+ *
161
+ * @defaultValue `0`
162
+ * @category Properties
163
+ */
164
+ Object.defineProperty(this, "cacheTimeWriting", {
165
+ enumerable: true,
166
+ configurable: true,
167
+ writable: true,
168
+ value: void 0
169
+ });
170
+ /**
171
+ * A flag indicating whether to display a progress bar for long-running operations.
172
+ *
173
+ * @defaultValue `false`
174
+ * @category Properties
175
+ */
176
+ Object.defineProperty(this, "progressBar", {
177
+ enumerable: true,
178
+ configurable: true,
179
+ writable: true,
180
+ value: void 0
181
+ });
182
+ /**
183
+ * A flag indicating whether to use DuckDB's external file cache.
184
+ *
185
+ * @defaultValue `false`
186
+ * @category Properties
187
+ */
188
+ Object.defineProperty(this, "duckDbCache", {
189
+ enumerable: true,
190
+ configurable: true,
191
+ writable: true,
192
+ value: void 0
193
+ });
194
+ /**
195
+ * The path to the database file. If not provided, an in-memory database is used.
196
+ *
197
+ * @defaultValue `:memory:`
198
+ * @category Properties
199
+ */
200
+ Object.defineProperty(this, "file", {
201
+ enumerable: true,
202
+ configurable: true,
203
+ writable: true,
204
+ value: void 0
205
+ });
206
+ /**
207
+ * A flag indicating whether to overwrite the database file if it already exists.
208
+ *
209
+ * @defaultValue `false`
210
+ * @category Properties
211
+ */
212
+ Object.defineProperty(this, "overwrite", {
213
+ enumerable: true,
214
+ configurable: true,
215
+ writable: true,
216
+ value: void 0
217
+ });
218
+ /**
219
+ * The class used to create table instances. Defaults to `SimpleTable`.
220
+ * Override this property when subclassing to ensure all table-creating
221
+ * methods (e.g., `newTable()`, `cloneTable()`) return instances of your
222
+ * custom table class.
223
+ *
224
+ * @defaultValue `SimpleTable`
225
+ * @category Properties
226
+ *
227
+ * @example
228
+ * ```ts
229
+ * class MyTable extends SimpleTable {
230
+ * customMethod() { return "hello"; }
231
+ * }
232
+ *
233
+ * class MyDB extends SimpleDB {
234
+ * constructor(options?: SimpleDBOptions) {
235
+ * super(options);
236
+ * this.tableClass = MyTable;
237
+ * }
238
+ * }
239
+ *
240
+ * const db = new MyDB();
241
+ * const table = db.newTable("myTable");
242
+ * console.log(table.customMethod()); // "hello"
243
+ * ```
244
+ */
245
+ Object.defineProperty(this, "tableClass", {
246
+ enumerable: true,
247
+ configurable: true,
248
+ writable: true,
249
+ value: SimpleTable
250
+ });
251
+ this.file = options.file ?? ":memory:";
252
+ this.overwrite = options.overwrite ?? false;
253
+ this.logDuration = options.logDuration ?? false;
254
+ this.tableIncrement = 1;
255
+ this.tables = [];
256
+ this.cacheSourcesUsed = [];
257
+ this.cacheVerbose = options.cacheVerbose ?? false;
258
+ this.cacheTimeSaved = 0;
259
+ this.cacheTimeWriting = 0;
260
+ this.progressBar = options.progressBar ?? false;
261
+ this.duckDbCache = options.duckDbCache === undefined
262
+ ? false
263
+ : options.duckDbCache;
264
+ this.runQuery = runQuery;
265
+ if (this.cacheVerbose || this.logDuration) {
266
+ this.durationStart = Date.now();
267
+ }
268
+ }
269
+ /**
270
+ * Initializes the DuckDB database instance and connection.
271
+ *
272
+ * @returns A promise that resolves to the SimpleDB instance after initialization.
273
+ * @internal
274
+ * @category Lifecycle
275
+ */
276
+ async start() {
277
+ if (this.db === undefined || this.connection === undefined) {
278
+ if (this.file !== ":memory:") {
279
+ if (getExtension(this.file) !== "db") {
280
+ throw new Error(`The file extension must be .db. The current file is ${this.file}.`);
281
+ }
282
+ if (existsSync(this.file) && this.overwrite === false) {
283
+ throw new Error(`The file ${this.file} already exists. Set the overwrite option to true to overwrite it. Otherwise, use the loadDB() method to load an existing database with more options.`);
284
+ }
285
+ else if (existsSync(this.file) && this.overwrite === true) {
286
+ rmSync(this.file);
287
+ }
288
+ }
289
+ this.db = await DuckDBInstance.create(this.file);
290
+ this.connection = await this.db.connect();
291
+ // By default, DuckDB does not compress in-memory databases, so we enable it here.
292
+ if (this.file === ":memory:") {
293
+ await this.customQuery("ATTACH OR REPLACE ':memory:' AS memory (COMPRESS);");
294
+ }
295
+ if (this.duckDbCache === true) {
296
+ await this.customQuery("SET enable_external_file_cache=true;");
297
+ }
298
+ else if (this.duckDbCache === false) {
299
+ await this.customQuery("SET enable_external_file_cache=false;");
300
+ }
301
+ if (this.progressBar) {
302
+ await this.customQuery(`SET enable_progress_bar = TRUE; SET progress_bar_time = 0;`);
303
+ }
304
+ }
305
+ return this;
306
+ }
307
+ /**
308
+ * Adds a SimpleTable instance to the internal list of tables.
309
+ *
310
+ * @param table - The SimpleTable instance to add.
311
+ * @internal
312
+ * @category Table Management
313
+ */
314
+ pushTable(table) {
315
+ const TableClass = this.tableClass;
316
+ if (!(table instanceof TableClass)) {
317
+ throw new Error(`The table must be an instance of ${TableClass.name}.`);
318
+ }
319
+ if (this.tables.map((t) => t.name).includes(table.name)) {
320
+ throw new Error(`Table ${table.name} already exists.`);
321
+ }
322
+ this.tables.push(table);
323
+ }
324
+ /**
325
+ * Creates a new SimpleTable instance within the database.
326
+ *
327
+ * @param name - The name of the new table. If not provided, a default name is generated (e.g., "table1").
328
+ * @param projections - An object mapping column names to their geospatial projections.
329
+ * @returns A new table instance.
330
+ * @category Table Management
331
+ *
332
+ * @example
333
+ * ```ts
334
+ * // Create a table with a default name (e.g., "table1", "table2", etc.)
335
+ * const dataTable = sdb.newTable();
336
+ * ```
337
+ *
338
+ * @example
339
+ * ```ts
340
+ * // Create a table with a specific name
341
+ * const employees = sdb.newTable("employees");
342
+ * ```
343
+ */
344
+ newTable(name, projections) {
345
+ const proj = projections ?? {};
346
+ const TableClass = this.tableClass;
347
+ // SHOULD MATCH cloneTable
348
+ let table;
349
+ if (typeof name === "string") {
350
+ table = new TableClass(name, proj, this, {
351
+ debug: this.debug,
352
+ nbRowsToLog: this.nbRowsToLog,
353
+ nbCharactersToLog: this.nbCharactersToLog,
354
+ types: this.types,
355
+ });
356
+ table.defaultTableName = false;
357
+ }
358
+ else {
359
+ table = new TableClass(`table${this.tableIncrement}`, proj, this, {
360
+ debug: this.debug,
361
+ nbRowsToLog: this.nbRowsToLog,
362
+ nbCharactersToLog: this.nbCharactersToLog,
363
+ types: this.types,
364
+ });
365
+ table.defaultTableName = true;
366
+ this.tableIncrement += 1;
367
+ }
368
+ this.pushTable(table);
369
+ return table;
370
+ }
371
+ /**
372
+ * Retrieves an existing SimpleTable instance from the database.
373
+ *
374
+ * @param name - The name of the table to retrieve.
375
+ * @returns A promise that resolves to the SimpleTable instance if found.
376
+ * @category Table Management
377
+ *
378
+ * @example
379
+ * ```ts
380
+ * // Retrieve the "employees" table
381
+ * const employees = await sdb.getTable("employees");
382
+ * ```
383
+ */
384
+ async getTable(name) {
385
+ const table = this.tables.find((t) => t.name === name);
386
+ if (table) {
387
+ return await table;
388
+ }
389
+ else {
390
+ throw new Error(`Table ${name} not found.`);
391
+ }
392
+ }
393
+ /**
394
+ * Removes one or more tables from the database.
395
+ *
396
+ * @param tables - A single table or an array of tables to remove, specified by name or as SimpleTable instances.
397
+ * @returns A promise that resolves when the tables have been removed.
398
+ * @category Table Management
399
+ *
400
+ * @example
401
+ * ```ts
402
+ * // Remove a single table by name
403
+ * await sdb.removeTables("employees");
404
+ * ```
405
+ *
406
+ * @example
407
+ * ```ts
408
+ * // Remove multiple tables by name
409
+ * await sdb.removeTables(["customers", "products"]);
410
+ * ```
411
+ *
412
+ * @example
413
+ * ```ts
414
+ * // Remove a single table using a SimpleTable instance
415
+ * const employeesTable = sdb.newTable("employees");
416
+ * // ... load data ...
417
+ * await sdb.removeTables(employeesTable);
418
+ * ```
419
+ */
420
+ async removeTables(tables) {
421
+ const tablesToBeRemoved = Array.isArray(tables) ? tables : [tables];
422
+ await queryDB(this, tablesToBeRemoved.map((d) => `DROP TABLE "${d instanceof SimpleTable ? d.name : d}";`).join("\n"), mergeOptions(this, {
423
+ table: null,
424
+ method: "removeTable()",
425
+ parameters: {},
426
+ }));
427
+ const tablesNamesToBeRemoved = tablesToBeRemoved.map((t) => t instanceof SimpleTable ? t.name : t);
428
+ this.tables = this.tables.filter((t) => !tablesNamesToBeRemoved.includes(t.name));
429
+ }
430
+ /**
431
+ * Selects one or more tables to keep in the database, removing all others.
432
+ *
433
+ * @param tables - A single table or an array of tables to select, specified by name or as SimpleTable instances.
434
+ * @returns A promise that resolves when the tables have been selected.
435
+ * @category Table Management
436
+ *
437
+ * @example
438
+ * ```ts
439
+ * // Select a single table by name, removing all other tables
440
+ * await sdb.selectTables("employees");
441
+ * ```
442
+ *
443
+ * @example
444
+ * ```ts
445
+ * // Select multiple tables by name, removing all other tables
446
+ * await sdb.selectTables(["customers", "products"]);
447
+ * ```
448
+ *
449
+ * @example
450
+ * ```ts
451
+ * // Select a single table using a SimpleTable instance
452
+ * const employeesTable = sdb.newTable("employees");
453
+ * // ... load data ...
454
+ * await sdb.selectTables(employeesTable);
455
+ * ```
456
+ */
457
+ async selectTables(tables) {
458
+ const tablesToBeSelected = (Array.isArray(tables) ? tables : [tables]).map((t) => t instanceof SimpleTable ? t.name : t);
459
+ for (const table of tablesToBeSelected) {
460
+ if (!(await this.hasTable(table))) {
461
+ throw new Error(`Table ${table} not found.`);
462
+ }
463
+ }
464
+ const tablesToBeRemoved = this.tables.filter((t) => !tablesToBeSelected.includes(t.name));
465
+ await queryDB(this, tablesToBeRemoved.map((d) => `DROP TABLE "${d instanceof SimpleTable ? d.name : d}";`).join("\n"), mergeOptions(this, {
466
+ table: null,
467
+ method: "removeTable()",
468
+ parameters: {},
469
+ }));
470
+ const tablesNamesToBeRemoved = tablesToBeRemoved.map((t) => t instanceof SimpleTable ? t.name : t);
471
+ this.tables = this.tables.filter((t) => !tablesNamesToBeRemoved.includes(t.name));
472
+ }
473
+ /**
474
+ * Returns an array of all table names in the database, sorted alphabetically.
475
+ *
476
+ * @returns A promise that resolves to an array of table names.
477
+ * @category Table Management
478
+ *
479
+ * @example
480
+ * ```ts
481
+ * // Get all table names
482
+ * const tableNames = await sdb.getTableNames();
483
+ * console.log(tableNames); // Output: ["employees", "customers"]
484
+ * ```
485
+ */
486
+ async getTableNames() {
487
+ return await getTableNames(this);
488
+ }
489
+ /**
490
+ * Logs the names of all tables in the database to the console, sorted alphabetically.
491
+ *
492
+ * @returns A promise that resolves when the table names have been logged.
493
+ * @category Table Management
494
+ *
495
+ * @example
496
+ * ```ts
497
+ * // Log all table names to the console
498
+ * await sdb.logTableNames();
499
+ * // Example output: SimpleDB - Tables: ["employees","customers"]
500
+ * ```
501
+ */
502
+ async logTableNames() {
503
+ const tables = await this.getTableNames();
504
+ if (tables.length > 0) {
505
+ console.log(`\nSimpleDB - Tables: ${JSON.stringify(tables)}`);
506
+ }
507
+ else {
508
+ console.log(`\nSimpleDB - No tables found.`);
509
+ }
510
+ }
511
+ /**
512
+ * Returns an array of all SimpleTable instances in the database.
513
+ *
514
+ * @returns A promise that resolves to an array of SimpleTable instances.
515
+ * @category Table Management
516
+ *
517
+ * @example
518
+ * ```ts
519
+ * // Get all SimpleTable instances
520
+ * const tables = await sdb.getTables();
521
+ * ```
522
+ */
523
+ async getTables() {
524
+ return await this.tables;
525
+ }
526
+ /**
527
+ * Checks if a table exists in the database.
528
+ *
529
+ * @param table - The name of the table or a SimpleTable instance.
530
+ * @returns A promise that resolves to `true` if the table exists, `false` otherwise.
531
+ * @category Table Management
532
+ *
533
+ * @example
534
+ * ```ts
535
+ * // Check if a table named "employees" exists
536
+ * const exists = await sdb.hasTable("employees");
537
+ * console.log(exists); // Output: true or false
538
+ * ```
539
+ *
540
+ * @example
541
+ * ```ts
542
+ * // Check if a SimpleTable instance exists in the database
543
+ * const myTable = sdb.newTable("my_data");
544
+ * const existsInstance = await sdb.hasTable(myTable);
545
+ * console.log(existsInstance); // Output: true or false
546
+ * ```
547
+ */
548
+ async hasTable(table) {
549
+ const tableName = typeof table === "string" ? table : table.name;
550
+ const result = (await this.getTableNames()).includes(tableName);
551
+ return result;
552
+ }
553
+ /**
554
+ * Returns a list of installed DuckDB extensions.
555
+ *
556
+ * @returns A promise that resolves to an array of objects, each representing an installed extension.
557
+ * @category DuckDB
558
+ *
559
+ * @example
560
+ * ```ts
561
+ * // Get a list of all installed extensions
562
+ * const extensions = await sdb.getExtensions();
563
+ * console.log(extensions); // Output: [{ extension_name: "spatial", loaded: true, ... }]
564
+ * ```
565
+ */
566
+ async getExtensions() {
567
+ return (await queryDB(this, `FROM duckdb_extensions();`, mergeOptions(this, {
568
+ returnDataFrom: "query",
569
+ table: null,
570
+ method: "getExtensions()",
571
+ parameters: {},
572
+ })));
573
+ }
574
+ /**
575
+ * Executes a custom SQL query directly against the DuckDB instance.
576
+ *
577
+ * If you want to force the returned data to match the types of the columns, you can use the `types` option.
578
+ *
579
+ * @param query - The SQL query string to execute.
580
+ * @param options - Configuration options for the query.
581
+ * @param options.returnDataFrom - Specifies whether to return data from the query. Can be `"query"` to return data or `"none"` (default) to not return data.
582
+ * @param options.table - The name of the table associated with the query, primarily used for debugging and logging.
583
+ * @param options.types - An optional object specifying data types for the query parameters.
584
+ * @returns A promise that resolves to the query result as an array of objects if `returnDataFrom` is `"query"`, otherwise `null`.
585
+ * @category DuckDB
586
+ *
587
+ * @example
588
+ * ```ts
589
+ * // Execute a query without returning data
590
+ * await sdb.customQuery("CREATE TABLE young_employees AS SELECT * FROM employees WHERE age > 30");
591
+ * ```
592
+ *
593
+ * @example
594
+ * ```ts
595
+ * // Execute a query and return the results
596
+ * const youngEmployees = await sdb.customQuery(
597
+ * "SELECT * FROM employees WHERE age < 30",
598
+ * { returnDataFrom: "query" }
599
+ * );
600
+ * console.log(youngEmployees);
601
+ * ```
602
+ */
603
+ async customQuery(query, options = {}) {
604
+ return await queryDB(this, query, mergeOptions(this, {
605
+ returnDataFrom: options.returnDataFrom,
606
+ table: options.table ?? null,
607
+ method: "customQuery()",
608
+ parameters: { query, options },
609
+ types: options.types,
610
+ }));
611
+ }
612
+ /**
613
+ * Loads a database from a specified file into the current SimpleDB instance.
614
+ * Supported file types are `.db` (DuckDB) and `.sqlite` (SQLite).
615
+ *
616
+ * @param file - The absolute path to the database file (e.g., "./my_database.db").
617
+ * @param options - Configuration options for loading the database.
618
+ * @param options.name - The name to assign to the loaded database within the DuckDB instance. Defaults to the file name without extension.
619
+ * @param options.detach - If `true` (default), the database is detached after loading its contents into memory. If `false`, the database remains attached.
620
+ * @returns A promise that resolves when the database has been loaded.
621
+ * @category File Operations
622
+ *
623
+ * @example
624
+ * ```ts
625
+ * // Load a DuckDB database file
626
+ * await sdb.loadDB("./my_database.db");
627
+ * ```
628
+ *
629
+ * @example
630
+ * ```ts
631
+ * // Load a SQLite database file and keep it attached
632
+ * await sdb.loadDB("./my_database.sqlite", { detach: false });
633
+ * ```
634
+ *
635
+ * @example
636
+ * ```ts
637
+ * // Load a database with a custom name
638
+ * await sdb.loadDB("./archive.db", { name: "archive_db" });
639
+ * ```
640
+ */
641
+ async loadDB(file, options = {}) {
642
+ const name = options.name ?? "my_database";
643
+ const detach = options.detach ?? true;
644
+ if (!existsSync(file)) {
645
+ throw new Error(`The file ${file} does not exist.`);
646
+ }
647
+ const extension = getExtension(file);
648
+ const allIndexesFile = `${file.replace(`.${extension}`, "")}_indexes.json`;
649
+ const vssIndex = checkVssIndexes(allIndexesFile);
650
+ if (vssIndex) {
651
+ await this.customQuery(`INSTALL vss; LOAD vss;`);
652
+ }
653
+ if (extension === "db") {
654
+ if (detach) {
655
+ await queryDB(this, `ATTACH '${cleanPath(file)}' AS ${name};
656
+ COPY FROM DATABASE ${name} TO memory;
657
+ DETACH ${name};`, mergeOptions(this, {
658
+ returnDataFrom: "none",
659
+ table: null,
660
+ method: "loadDB()",
661
+ parameters: {},
662
+ }));
663
+ }
664
+ else {
665
+ await queryDB(this, `ATTACH '${cleanPath(file)}' AS ${name};
666
+ USE ${name};`, mergeOptions(this, {
667
+ returnDataFrom: "none",
668
+ table: null,
669
+ method: "loadDB()",
670
+ parameters: {},
671
+ }));
672
+ }
673
+ }
674
+ else if (extension === "sqlite") {
675
+ if (detach) {
676
+ await queryDB(this, `INSTALL sqlite; LOAD sqlite;
677
+ ATTACH '${cleanPath(file)}' AS ${name} (TYPE SQLITE);
678
+ COPY FROM DATABASE ${name} TO memory;
679
+ DETACH ${name};`, mergeOptions(this, {
680
+ returnDataFrom: "none",
681
+ table: null,
682
+ method: "loadDB()",
683
+ parameters: {},
684
+ }));
685
+ }
686
+ else {
687
+ await queryDB(this, `INSTALL sqlite; LOAD sqlite;
688
+ ATTACH '${cleanPath(file)}' AS ${name} (TYPE SQLITE);
689
+ USE ${name};`, mergeOptions(this, {
690
+ returnDataFrom: "none",
691
+ table: null,
692
+ method: "loadDB()",
693
+ parameters: {},
694
+ }));
695
+ }
696
+ }
697
+ else {
698
+ throw new Error(`The extension ${extension} is not supported. Please use .db or .sqlite instead.`);
699
+ }
700
+ await setDbProps(this, file, extension, allIndexesFile);
701
+ }
702
+ /**
703
+ * Writes the current state of the database to a specified file.
704
+ * Supported output file types are `.db` (DuckDB) and `.sqlite` (SQLite).
705
+ *
706
+ * @param file - The absolute path to the output file (e.g., "./my_exported_database.db").
707
+ * @param options - Configuration options for writing the database.
708
+ * @param options.noMetaData - If `true`, metadata files (projections, indexes) are not created alongside the database file. Defaults to `false`.
709
+ * @returns A promise that resolves when the database has been written to the file.
710
+ * @category File Operations
711
+ *
712
+ * @example
713
+ * ```ts
714
+ * // Write the current database to a DuckDB file
715
+ * await sdb.writeDB("./my_exported_database.db");
716
+ * ```
717
+ *
718
+ * @example
719
+ * ```ts
720
+ * // Write the current database to a SQLite file without metadata
721
+ * await sdb.writeDB("./my_exported_database.sqlite", { noMetaData: true });
722
+ * ```
723
+ */
724
+ async writeDB(file, options = {}) {
725
+ const noMetaData = options.noMetaData ?? false;
726
+ if (existsSync(file)) {
727
+ rmSync(file);
728
+ }
729
+ createDirectory(file);
730
+ const extension = getExtension(file);
731
+ if (!noMetaData) {
732
+ writeProjectionsAndIndexes(this, extension, file);
733
+ }
734
+ const name = getName(file);
735
+ if (extension === "db") {
736
+ await queryDB(this, `ATTACH '${cleanPath(file)}' AS ${name};
737
+ COPY FROM DATABASE ${getName(this.file)} TO ${name};
738
+ DETACH ${name};`, mergeOptions(this, {
739
+ returnDataFrom: "none",
740
+ table: null,
741
+ method: "writeDB()",
742
+ parameters: {},
743
+ }));
744
+ }
745
+ else if (extension === "sqlite") {
746
+ await queryDB(this, `INSTALL sqlite; LOAD sqlite;
747
+ ATTACH '${cleanPath(file)}' AS ${name} (TYPE SQLITE);
748
+ COPY FROM DATABASE ${getName(this.file)} TO ${name};
749
+ DETACH ${name};`, mergeOptions(this, {
750
+ returnDataFrom: "none",
751
+ table: null,
752
+ method: "writeDB()",
753
+ parameters: {},
754
+ }));
755
+ }
756
+ else {
757
+ throw new Error(`The extension ${extension} is not supported. Please use .db or .sqlite instead.`);
758
+ }
759
+ }
760
+ /**
761
+ * Frees up memory by closing the database connection and instance, and cleans up the cache.
762
+ * If the database is file-based, it also compacts the database file to optimize storage.
763
+ *
764
+ * @returns A promise that resolves to the SimpleDB instance after cleanup.
765
+ * @category Lifecycle
766
+ *
767
+ * @example
768
+ * ```ts
769
+ * // Close the database and clean up resources
770
+ * await sdb.done();
771
+ * ```
772
+ */
773
+ async done() {
774
+ if (this.file !== ":memory:") {
775
+ await this.customQuery("CHECKPOINT;");
776
+ // To make sure the files will have the proper names.
777
+ writeProjectionsAndIndexes(this, getExtension(this.file), this.file);
778
+ await this.writeDB(this.file.replace(".db", "_compacted.db"), {
779
+ noMetaData: true,
780
+ });
781
+ rmSync(this.file);
782
+ renameSync(this.file.replace(".db", "_compacted.db"), this.file);
783
+ }
784
+ if (this.db instanceof DuckDBInstance) {
785
+ this.connection.closeSync();
786
+ this.db.closeSync();
787
+ }
788
+ cleanCache(this);
789
+ if (typeof this.durationStart === "number") {
790
+ let string = prettyDuration(this.durationStart, {
791
+ prefix: "\n\nSimpleDB - Done in ",
792
+ });
793
+ if (this.cacheTimeSaved > 0) {
794
+ string += ` / ${prettyDuration(0, {
795
+ end: this.cacheTimeSaved,
796
+ })} saved by using the cache`;
797
+ }
798
+ if (this.cacheTimeWriting > 0) {
799
+ string += ` / ${prettyDuration(0, {
800
+ end: this.cacheTimeWriting,
801
+ })} spent writing the cache`;
802
+ }
803
+ console.log(`${string}\n`);
804
+ }
805
+ return await this;
806
+ }
807
+ }