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