@nshiab/simple-data-analysis-core 2.0.9 → 2.1.1

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 (459) hide show
  1. package/esm/class/SDAError.d.ts +6 -6
  2. package/esm/class/SDAError.js +6 -6
  3. package/esm/class/Simple.d.ts +9 -9
  4. package/esm/class/Simple.js +9 -9
  5. package/esm/class/SimpleDB.d.ts +80 -76
  6. package/esm/class/SimpleDB.d.ts.map +1 -1
  7. package/esm/class/SimpleDB.js +80 -76
  8. package/esm/class/SimpleTable.d.ts +2806 -1139
  9. package/esm/class/SimpleTable.d.ts.map +1 -1
  10. package/esm/class/SimpleTable.js +2792 -1149
  11. package/esm/helpers/buildApproximateMutualReachabilityMst.d.ts +45 -0
  12. package/esm/helpers/buildApproximateMutualReachabilityMst.d.ts.map +1 -0
  13. package/esm/helpers/buildApproximateMutualReachabilityMst.js +212 -0
  14. package/esm/helpers/buildChronologicalGraphComponentsSql.d.ts +14 -0
  15. package/esm/helpers/buildChronologicalGraphComponentsSql.d.ts.map +1 -0
  16. package/esm/helpers/buildChronologicalGraphComponentsSql.js +167 -0
  17. package/esm/helpers/buildExactMutualReachabilityMst.d.ts +28 -0
  18. package/esm/helpers/buildExactMutualReachabilityMst.d.ts.map +1 -0
  19. package/esm/helpers/buildExactMutualReachabilityMst.js +97 -0
  20. package/esm/helpers/buildGraphTemporalCostStateSql.d.ts +12 -0
  21. package/esm/helpers/buildGraphTemporalCostStateSql.d.ts.map +1 -0
  22. package/esm/helpers/buildGraphTemporalCostStateSql.js +86 -0
  23. package/esm/helpers/buildGraphTemporalReachabilitySql.d.ts +13 -0
  24. package/esm/helpers/buildGraphTemporalReachabilitySql.d.ts.map +1 -0
  25. package/esm/helpers/buildGraphTemporalReachabilitySql.js +70 -0
  26. package/esm/helpers/buildSparseMutualReachabilityMst.d.ts +10 -0
  27. package/esm/helpers/buildSparseMutualReachabilityMst.d.ts.map +1 -0
  28. package/esm/helpers/buildSparseMutualReachabilityMst.js +47 -0
  29. package/esm/helpers/buildUmapGraph.d.ts +2 -5
  30. package/esm/helpers/buildUmapGraph.d.ts.map +1 -1
  31. package/esm/helpers/buildUmapGraph.js +6 -100
  32. package/esm/helpers/buildVectorNeighbors.d.ts +45 -0
  33. package/esm/helpers/buildVectorNeighbors.d.ts.map +1 -0
  34. package/esm/helpers/buildVectorNeighbors.js +170 -0
  35. package/esm/helpers/buildWeakGraphComponentsSql.d.ts +3 -0
  36. package/esm/helpers/buildWeakGraphComponentsSql.d.ts.map +1 -0
  37. package/esm/helpers/buildWeakGraphComponentsSql.js +32 -0
  38. package/esm/helpers/camelCase.d.ts +7 -5
  39. package/esm/helpers/camelCase.d.ts.map +1 -1
  40. package/esm/helpers/camelCase.js +7 -5
  41. package/esm/helpers/capitalize.d.ts +6 -4
  42. package/esm/helpers/capitalize.d.ts.map +1 -1
  43. package/esm/helpers/capitalize.js +6 -4
  44. package/esm/helpers/clusterHdbscan.d.ts +18 -0
  45. package/esm/helpers/clusterHdbscan.d.ts.map +1 -0
  46. package/esm/helpers/clusterHdbscan.js +342 -0
  47. package/esm/helpers/computeCovariance.d.ts +16 -0
  48. package/esm/helpers/computeCovariance.d.ts.map +1 -0
  49. package/esm/helpers/computeCovariance.js +99 -0
  50. package/esm/helpers/computeMahalanobisDistances.d.ts +14 -0
  51. package/esm/helpers/computeMahalanobisDistances.d.ts.map +1 -0
  52. package/esm/helpers/computeMahalanobisDistances.js +87 -0
  53. package/esm/helpers/createDirectory.d.ts +4 -3
  54. package/esm/helpers/createDirectory.d.ts.map +1 -1
  55. package/esm/helpers/createDirectory.js +4 -3
  56. package/esm/helpers/dataToArrays.d.ts +6 -4
  57. package/esm/helpers/dataToArrays.d.ts.map +1 -1
  58. package/esm/helpers/dataToArrays.js +6 -4
  59. package/esm/helpers/extractTypes.d.ts +1 -1
  60. package/esm/helpers/extractTypes.js +4 -9
  61. package/esm/helpers/factorCovariance.d.ts +17 -0
  62. package/esm/helpers/factorCovariance.d.ts.map +1 -0
  63. package/esm/helpers/factorCovariance.js +189 -0
  64. package/esm/helpers/findGeoColumn.d.ts +6 -4
  65. package/esm/helpers/findGeoColumn.d.ts.map +1 -1
  66. package/esm/helpers/findGeoColumn.js +6 -4
  67. package/esm/helpers/findGeoColumnFromSchema.d.ts +8 -5
  68. package/esm/helpers/findGeoColumnFromSchema.d.ts.map +1 -1
  69. package/esm/helpers/findGeoColumnFromSchema.js +8 -5
  70. package/esm/helpers/formatDate.d.ts +12 -6
  71. package/esm/helpers/formatDate.d.ts.map +1 -1
  72. package/esm/helpers/formatDate.js +12 -6
  73. package/esm/helpers/formatMissingTables.d.ts +8 -5
  74. package/esm/helpers/formatMissingTables.d.ts.map +1 -1
  75. package/esm/helpers/formatMissingTables.js +8 -5
  76. package/esm/helpers/formatNumber.d.ts +19 -10
  77. package/esm/helpers/formatNumber.d.ts.map +1 -1
  78. package/esm/helpers/formatNumber.js +32 -17
  79. package/esm/helpers/getGraphEdgeIdColumn.d.ts +9 -0
  80. package/esm/helpers/getGraphEdgeIdColumn.d.ts.map +1 -0
  81. package/esm/helpers/getGraphEdgeIdColumn.js +25 -0
  82. package/esm/helpers/getGraphEndpointColumns.d.ts +11 -0
  83. package/esm/helpers/getGraphEndpointColumns.d.ts.map +1 -0
  84. package/esm/helpers/getGraphEndpointColumns.js +160 -0
  85. package/esm/helpers/getGraphWeightColumn.d.ts +10 -0
  86. package/esm/helpers/getGraphWeightColumn.d.ts.map +1 -0
  87. package/esm/helpers/getGraphWeightColumn.js +40 -0
  88. package/esm/helpers/graphRouteResultSchema.d.ts +4 -0
  89. package/esm/helpers/graphRouteResultSchema.d.ts.map +1 -0
  90. package/esm/helpers/graphRouteResultSchema.js +12 -0
  91. package/esm/helpers/graphRouteResultSelect.d.ts +4 -0
  92. package/esm/helpers/graphRouteResultSelect.d.ts.map +1 -0
  93. package/esm/helpers/graphRouteResultSelect.js +22 -0
  94. package/esm/helpers/hasGeometryColumn.d.ts +4 -3
  95. package/esm/helpers/hasGeometryColumn.d.ts.map +1 -1
  96. package/esm/helpers/hasGeometryColumn.js +4 -3
  97. package/esm/helpers/inspectGraphConnectivity.d.ts +10 -0
  98. package/esm/helpers/inspectGraphConnectivity.d.ts.map +1 -0
  99. package/esm/helpers/inspectGraphConnectivity.js +55 -0
  100. package/esm/helpers/mergeOptions.d.ts +24 -13
  101. package/esm/helpers/mergeOptions.d.ts.map +1 -1
  102. package/esm/helpers/mergeOptions.js +24 -13
  103. package/esm/helpers/parseValue.d.ts +6 -4
  104. package/esm/helpers/parseValue.d.ts.map +1 -1
  105. package/esm/helpers/parseValue.js +6 -4
  106. package/esm/helpers/prepareGraphRouteSql.d.ts +31 -0
  107. package/esm/helpers/prepareGraphRouteSql.d.ts.map +1 -0
  108. package/esm/helpers/prepareGraphRouteSql.js +86 -0
  109. package/esm/helpers/prepareGraphStarts.d.ts +9 -0
  110. package/esm/helpers/prepareGraphStarts.d.ts.map +1 -0
  111. package/esm/helpers/prepareGraphStarts.js +68 -0
  112. package/esm/helpers/prepareGraphTemporalSql.d.ts +28 -0
  113. package/esm/helpers/prepareGraphTemporalSql.d.ts.map +1 -0
  114. package/esm/helpers/prepareGraphTemporalSql.js +154 -0
  115. package/esm/helpers/prepareGraphTraversal.d.ts +19 -0
  116. package/esm/helpers/prepareGraphTraversal.d.ts.map +1 -0
  117. package/esm/helpers/prepareGraphTraversal.js +79 -0
  118. package/esm/helpers/prepareNumericFeatures.d.ts +41 -0
  119. package/esm/helpers/prepareNumericFeatures.d.ts.map +1 -0
  120. package/esm/helpers/prepareNumericFeatures.js +210 -0
  121. package/esm/helpers/prettyDuration.d.ts +14 -8
  122. package/esm/helpers/prettyDuration.d.ts.map +1 -1
  123. package/esm/helpers/prettyDuration.js +14 -8
  124. package/esm/helpers/printTable.d.ts +18 -13
  125. package/esm/helpers/printTable.d.ts.map +1 -1
  126. package/esm/helpers/printTable.js +18 -13
  127. package/esm/helpers/publishPreparedColumns.d.ts +37 -0
  128. package/esm/helpers/publishPreparedColumns.d.ts.map +1 -0
  129. package/esm/helpers/publishPreparedColumns.js +113 -0
  130. package/esm/helpers/queryDB.d.ts +24 -13
  131. package/esm/helpers/queryDB.d.ts.map +1 -1
  132. package/esm/helpers/queryDB.js +24 -13
  133. package/esm/helpers/queueAsyncBarrier.d.ts +12 -7
  134. package/esm/helpers/queueAsyncBarrier.d.ts.map +1 -1
  135. package/esm/helpers/queueAsyncBarrier.js +12 -7
  136. package/esm/helpers/queueGraphResult.d.ts +18 -0
  137. package/esm/helpers/queueGraphResult.d.ts.map +1 -0
  138. package/esm/helpers/queueGraphResult.js +39 -0
  139. package/esm/helpers/quoteIdentifier.d.ts +4 -3
  140. package/esm/helpers/quoteIdentifier.d.ts.map +1 -1
  141. package/esm/helpers/quoteIdentifier.js +4 -3
  142. package/esm/helpers/quoteQualifiedIdentifier.d.ts +6 -4
  143. package/esm/helpers/quoteQualifiedIdentifier.d.ts.map +1 -1
  144. package/esm/helpers/quoteQualifiedIdentifier.js +6 -4
  145. package/esm/helpers/runQuery.d.ts.map +1 -1
  146. package/esm/helpers/runQuery.js +17 -3
  147. package/esm/helpers/selectFuzzyReplacements.d.ts +11 -0
  148. package/esm/helpers/selectFuzzyReplacements.d.ts.map +1 -0
  149. package/esm/helpers/selectFuzzyReplacements.js +124 -0
  150. package/esm/helpers/stabilizeCosineVectors.d.ts +14 -0
  151. package/esm/helpers/stabilizeCosineVectors.d.ts.map +1 -0
  152. package/esm/helpers/stabilizeCosineVectors.js +34 -0
  153. package/esm/helpers/stringToArray.d.ts +4 -3
  154. package/esm/helpers/stringToArray.d.ts.map +1 -1
  155. package/esm/helpers/stringToArray.js +4 -3
  156. package/esm/helpers/updateColumnsWithJS.d.ts +12 -6
  157. package/esm/helpers/updateColumnsWithJS.d.ts.map +1 -1
  158. package/esm/helpers/updateColumnsWithJS.js +12 -6
  159. package/esm/helpers/validateGraphRouteResultSchema.d.ts +4 -0
  160. package/esm/helpers/validateGraphRouteResultSchema.d.ts.map +1 -0
  161. package/esm/helpers/validateGraphRouteResultSchema.js +13 -0
  162. package/esm/helpers/validateGraphTemporalEvents.d.ts +7 -0
  163. package/esm/helpers/validateGraphTemporalEvents.d.ts.map +1 -0
  164. package/esm/helpers/validateGraphTemporalEvents.js +47 -0
  165. package/esm/helpers/validateNumericalAnalysis.d.ts +10 -6
  166. package/esm/helpers/validateNumericalAnalysis.d.ts.map +1 -1
  167. package/esm/helpers/validateNumericalAnalysis.js +10 -6
  168. package/esm/helpers/validateVectorRowIds.d.ts +4 -0
  169. package/esm/helpers/validateVectorRowIds.d.ts.map +1 -0
  170. package/esm/helpers/validateVectorRowIds.js +16 -0
  171. package/esm/helpers/vectorDistanceExpression.d.ts +6 -0
  172. package/esm/helpers/vectorDistanceExpression.d.ts.map +1 -0
  173. package/esm/helpers/vectorDistanceExpression.js +11 -0
  174. package/esm/helpers/wrapString.d.ts +10 -7
  175. package/esm/helpers/wrapString.d.ts.map +1 -1
  176. package/esm/helpers/wrapString.js +10 -7
  177. package/esm/methods/addId.d.ts +5 -0
  178. package/esm/methods/addId.d.ts.map +1 -0
  179. package/esm/methods/addId.js +38 -0
  180. package/esm/methods/commonNeighbors.d.ts +10 -0
  181. package/esm/methods/commonNeighbors.d.ts.map +1 -0
  182. package/esm/methods/commonNeighbors.js +101 -0
  183. package/esm/methods/connectedComponents.d.ts +9 -0
  184. package/esm/methods/connectedComponents.d.ts.map +1 -0
  185. package/esm/methods/connectedComponents.js +147 -0
  186. package/esm/methods/degree.d.ts +9 -0
  187. package/esm/methods/degree.d.ts.map +1 -0
  188. package/esm/methods/degree.js +135 -0
  189. package/esm/methods/distances.d.ts +12 -0
  190. package/esm/methods/distances.d.ts.map +1 -0
  191. package/esm/methods/distances.js +164 -0
  192. package/esm/methods/findCycles.d.ts +12 -0
  193. package/esm/methods/findCycles.d.ts.map +1 -0
  194. package/esm/methods/findCycles.js +330 -0
  195. package/esm/methods/fuzzyClean.d.ts.map +1 -1
  196. package/esm/methods/fuzzyClean.js +17 -136
  197. package/esm/methods/fuzzyJoin.js +70 -16
  198. package/esm/methods/getTypes.d.ts +1 -1
  199. package/esm/methods/hdbscan.d.ts +5 -0
  200. package/esm/methods/hdbscan.d.ts.map +1 -0
  201. package/esm/methods/hdbscan.js +208 -0
  202. package/esm/methods/mahalanobis.d.ts +5 -0
  203. package/esm/methods/mahalanobis.d.ts.map +1 -0
  204. package/esm/methods/mahalanobis.js +92 -0
  205. package/esm/methods/neighbors.d.ts +9 -0
  206. package/esm/methods/neighbors.d.ts.map +1 -0
  207. package/esm/methods/neighbors.js +81 -0
  208. package/esm/methods/normalizeVector.d.ts +5 -0
  209. package/esm/methods/normalizeVector.d.ts.map +1 -0
  210. package/esm/methods/normalizeVector.js +132 -0
  211. package/esm/methods/paths.d.ts +12 -0
  212. package/esm/methods/paths.d.ts.map +1 -0
  213. package/esm/methods/paths.js +287 -0
  214. package/esm/methods/reachable.d.ts +11 -0
  215. package/esm/methods/reachable.d.ts.map +1 -0
  216. package/esm/methods/reachable.js +131 -0
  217. package/esm/methods/rowToVector.d.ts +5 -0
  218. package/esm/methods/rowToVector.d.ts.map +1 -0
  219. package/esm/methods/rowToVector.js +77 -0
  220. package/esm/methods/shortestPath.d.ts +12 -0
  221. package/esm/methods/shortestPath.d.ts.map +1 -0
  222. package/esm/methods/shortestPath.js +337 -0
  223. package/esm/methods/topologicalSort.d.ts +7 -0
  224. package/esm/methods/topologicalSort.d.ts.map +1 -0
  225. package/esm/methods/topologicalSort.js +164 -0
  226. package/esm/methods/trim.d.ts +1 -1
  227. package/esm/methods/trim.d.ts.map +1 -1
  228. package/esm/methods/trim.js +17 -8
  229. package/llm.md +2146 -173
  230. package/llms.txt +1 -1
  231. package/package.json +1 -1
  232. package/script/class/SDAError.d.ts +6 -6
  233. package/script/class/SDAError.js +6 -6
  234. package/script/class/Simple.d.ts +9 -9
  235. package/script/class/Simple.js +9 -9
  236. package/script/class/SimpleDB.d.ts +80 -76
  237. package/script/class/SimpleDB.d.ts.map +1 -1
  238. package/script/class/SimpleDB.js +80 -76
  239. package/script/class/SimpleTable.d.ts +2806 -1139
  240. package/script/class/SimpleTable.d.ts.map +1 -1
  241. package/script/class/SimpleTable.js +2792 -1149
  242. package/script/helpers/buildApproximateMutualReachabilityMst.d.ts +45 -0
  243. package/script/helpers/buildApproximateMutualReachabilityMst.d.ts.map +1 -0
  244. package/script/helpers/buildApproximateMutualReachabilityMst.js +219 -0
  245. package/script/helpers/buildChronologicalGraphComponentsSql.d.ts +14 -0
  246. package/script/helpers/buildChronologicalGraphComponentsSql.d.ts.map +1 -0
  247. package/script/helpers/buildChronologicalGraphComponentsSql.js +174 -0
  248. package/script/helpers/buildExactMutualReachabilityMst.d.ts +28 -0
  249. package/script/helpers/buildExactMutualReachabilityMst.d.ts.map +1 -0
  250. package/script/helpers/buildExactMutualReachabilityMst.js +103 -0
  251. package/script/helpers/buildGraphTemporalCostStateSql.d.ts +12 -0
  252. package/script/helpers/buildGraphTemporalCostStateSql.d.ts.map +1 -0
  253. package/script/helpers/buildGraphTemporalCostStateSql.js +92 -0
  254. package/script/helpers/buildGraphTemporalReachabilitySql.d.ts +13 -0
  255. package/script/helpers/buildGraphTemporalReachabilitySql.d.ts.map +1 -0
  256. package/script/helpers/buildGraphTemporalReachabilitySql.js +76 -0
  257. package/script/helpers/buildSparseMutualReachabilityMst.d.ts +10 -0
  258. package/script/helpers/buildSparseMutualReachabilityMst.d.ts.map +1 -0
  259. package/script/helpers/buildSparseMutualReachabilityMst.js +50 -0
  260. package/script/helpers/buildUmapGraph.d.ts +2 -5
  261. package/script/helpers/buildUmapGraph.d.ts.map +1 -1
  262. package/script/helpers/buildUmapGraph.js +6 -100
  263. package/script/helpers/buildVectorNeighbors.d.ts +45 -0
  264. package/script/helpers/buildVectorNeighbors.d.ts.map +1 -0
  265. package/script/helpers/buildVectorNeighbors.js +176 -0
  266. package/script/helpers/buildWeakGraphComponentsSql.d.ts +3 -0
  267. package/script/helpers/buildWeakGraphComponentsSql.d.ts.map +1 -0
  268. package/script/helpers/buildWeakGraphComponentsSql.js +38 -0
  269. package/script/helpers/camelCase.d.ts +7 -5
  270. package/script/helpers/camelCase.d.ts.map +1 -1
  271. package/script/helpers/camelCase.js +7 -5
  272. package/script/helpers/capitalize.d.ts +6 -4
  273. package/script/helpers/capitalize.d.ts.map +1 -1
  274. package/script/helpers/capitalize.js +6 -4
  275. package/script/helpers/clusterHdbscan.d.ts +18 -0
  276. package/script/helpers/clusterHdbscan.d.ts.map +1 -0
  277. package/script/helpers/clusterHdbscan.js +346 -0
  278. package/script/helpers/computeCovariance.d.ts +16 -0
  279. package/script/helpers/computeCovariance.d.ts.map +1 -0
  280. package/script/helpers/computeCovariance.js +105 -0
  281. package/script/helpers/computeMahalanobisDistances.d.ts +14 -0
  282. package/script/helpers/computeMahalanobisDistances.d.ts.map +1 -0
  283. package/script/helpers/computeMahalanobisDistances.js +93 -0
  284. package/script/helpers/createDirectory.d.ts +4 -3
  285. package/script/helpers/createDirectory.d.ts.map +1 -1
  286. package/script/helpers/createDirectory.js +4 -3
  287. package/script/helpers/dataToArrays.d.ts +6 -4
  288. package/script/helpers/dataToArrays.d.ts.map +1 -1
  289. package/script/helpers/dataToArrays.js +6 -4
  290. package/script/helpers/extractTypes.d.ts +1 -1
  291. package/script/helpers/extractTypes.js +4 -9
  292. package/script/helpers/factorCovariance.d.ts +17 -0
  293. package/script/helpers/factorCovariance.d.ts.map +1 -0
  294. package/script/helpers/factorCovariance.js +194 -0
  295. package/script/helpers/findGeoColumn.d.ts +6 -4
  296. package/script/helpers/findGeoColumn.d.ts.map +1 -1
  297. package/script/helpers/findGeoColumn.js +6 -4
  298. package/script/helpers/findGeoColumnFromSchema.d.ts +8 -5
  299. package/script/helpers/findGeoColumnFromSchema.d.ts.map +1 -1
  300. package/script/helpers/findGeoColumnFromSchema.js +8 -5
  301. package/script/helpers/formatDate.d.ts +12 -6
  302. package/script/helpers/formatDate.d.ts.map +1 -1
  303. package/script/helpers/formatDate.js +12 -6
  304. package/script/helpers/formatMissingTables.d.ts +8 -5
  305. package/script/helpers/formatMissingTables.d.ts.map +1 -1
  306. package/script/helpers/formatMissingTables.js +8 -5
  307. package/script/helpers/formatNumber.d.ts +19 -10
  308. package/script/helpers/formatNumber.d.ts.map +1 -1
  309. package/script/helpers/formatNumber.js +32 -17
  310. package/script/helpers/getGraphEdgeIdColumn.d.ts +9 -0
  311. package/script/helpers/getGraphEdgeIdColumn.d.ts.map +1 -0
  312. package/script/helpers/getGraphEdgeIdColumn.js +31 -0
  313. package/script/helpers/getGraphEndpointColumns.d.ts +11 -0
  314. package/script/helpers/getGraphEndpointColumns.d.ts.map +1 -0
  315. package/script/helpers/getGraphEndpointColumns.js +166 -0
  316. package/script/helpers/getGraphWeightColumn.d.ts +10 -0
  317. package/script/helpers/getGraphWeightColumn.d.ts.map +1 -0
  318. package/script/helpers/getGraphWeightColumn.js +46 -0
  319. package/script/helpers/graphRouteResultSchema.d.ts +4 -0
  320. package/script/helpers/graphRouteResultSchema.d.ts.map +1 -0
  321. package/script/helpers/graphRouteResultSchema.js +18 -0
  322. package/script/helpers/graphRouteResultSelect.d.ts +4 -0
  323. package/script/helpers/graphRouteResultSelect.d.ts.map +1 -0
  324. package/script/helpers/graphRouteResultSelect.js +28 -0
  325. package/script/helpers/hasGeometryColumn.d.ts +4 -3
  326. package/script/helpers/hasGeometryColumn.d.ts.map +1 -1
  327. package/script/helpers/hasGeometryColumn.js +4 -3
  328. package/script/helpers/inspectGraphConnectivity.d.ts +10 -0
  329. package/script/helpers/inspectGraphConnectivity.d.ts.map +1 -0
  330. package/script/helpers/inspectGraphConnectivity.js +58 -0
  331. package/script/helpers/mergeOptions.d.ts +24 -13
  332. package/script/helpers/mergeOptions.d.ts.map +1 -1
  333. package/script/helpers/mergeOptions.js +24 -13
  334. package/script/helpers/parseValue.d.ts +6 -4
  335. package/script/helpers/parseValue.d.ts.map +1 -1
  336. package/script/helpers/parseValue.js +6 -4
  337. package/script/helpers/prepareGraphRouteSql.d.ts +31 -0
  338. package/script/helpers/prepareGraphRouteSql.d.ts.map +1 -0
  339. package/script/helpers/prepareGraphRouteSql.js +127 -0
  340. package/script/helpers/prepareGraphStarts.d.ts +9 -0
  341. package/script/helpers/prepareGraphStarts.d.ts.map +1 -0
  342. package/script/helpers/prepareGraphStarts.js +71 -0
  343. package/script/helpers/prepareGraphTemporalSql.d.ts +28 -0
  344. package/script/helpers/prepareGraphTemporalSql.d.ts.map +1 -0
  345. package/script/helpers/prepareGraphTemporalSql.js +161 -0
  346. package/script/helpers/prepareGraphTraversal.d.ts +19 -0
  347. package/script/helpers/prepareGraphTraversal.d.ts.map +1 -0
  348. package/script/helpers/prepareGraphTraversal.js +87 -0
  349. package/script/helpers/prepareNumericFeatures.d.ts +41 -0
  350. package/script/helpers/prepareNumericFeatures.d.ts.map +1 -0
  351. package/script/helpers/prepareNumericFeatures.js +217 -0
  352. package/script/helpers/prettyDuration.d.ts +14 -8
  353. package/script/helpers/prettyDuration.d.ts.map +1 -1
  354. package/script/helpers/prettyDuration.js +14 -8
  355. package/script/helpers/printTable.d.ts +18 -13
  356. package/script/helpers/printTable.d.ts.map +1 -1
  357. package/script/helpers/printTable.js +18 -13
  358. package/script/helpers/publishPreparedColumns.d.ts +37 -0
  359. package/script/helpers/publishPreparedColumns.d.ts.map +1 -0
  360. package/script/helpers/publishPreparedColumns.js +119 -0
  361. package/script/helpers/queryDB.d.ts +24 -13
  362. package/script/helpers/queryDB.d.ts.map +1 -1
  363. package/script/helpers/queryDB.js +24 -13
  364. package/script/helpers/queueAsyncBarrier.d.ts +12 -7
  365. package/script/helpers/queueAsyncBarrier.d.ts.map +1 -1
  366. package/script/helpers/queueAsyncBarrier.js +12 -7
  367. package/script/helpers/queueGraphResult.d.ts +18 -0
  368. package/script/helpers/queueGraphResult.d.ts.map +1 -0
  369. package/script/helpers/queueGraphResult.js +45 -0
  370. package/script/helpers/quoteIdentifier.d.ts +4 -3
  371. package/script/helpers/quoteIdentifier.d.ts.map +1 -1
  372. package/script/helpers/quoteIdentifier.js +4 -3
  373. package/script/helpers/quoteQualifiedIdentifier.d.ts +6 -4
  374. package/script/helpers/quoteQualifiedIdentifier.d.ts.map +1 -1
  375. package/script/helpers/quoteQualifiedIdentifier.js +6 -4
  376. package/script/helpers/runQuery.d.ts.map +1 -1
  377. package/script/helpers/runQuery.js +17 -3
  378. package/script/helpers/selectFuzzyReplacements.d.ts +11 -0
  379. package/script/helpers/selectFuzzyReplacements.d.ts.map +1 -0
  380. package/script/helpers/selectFuzzyReplacements.js +127 -0
  381. package/script/helpers/stabilizeCosineVectors.d.ts +14 -0
  382. package/script/helpers/stabilizeCosineVectors.d.ts.map +1 -0
  383. package/script/helpers/stabilizeCosineVectors.js +40 -0
  384. package/script/helpers/stringToArray.d.ts +4 -3
  385. package/script/helpers/stringToArray.d.ts.map +1 -1
  386. package/script/helpers/stringToArray.js +4 -3
  387. package/script/helpers/updateColumnsWithJS.d.ts +12 -6
  388. package/script/helpers/updateColumnsWithJS.d.ts.map +1 -1
  389. package/script/helpers/updateColumnsWithJS.js +12 -6
  390. package/script/helpers/validateGraphRouteResultSchema.d.ts +4 -0
  391. package/script/helpers/validateGraphRouteResultSchema.d.ts.map +1 -0
  392. package/script/helpers/validateGraphRouteResultSchema.js +19 -0
  393. package/script/helpers/validateGraphTemporalEvents.d.ts +7 -0
  394. package/script/helpers/validateGraphTemporalEvents.d.ts.map +1 -0
  395. package/script/helpers/validateGraphTemporalEvents.js +53 -0
  396. package/script/helpers/validateNumericalAnalysis.d.ts +10 -6
  397. package/script/helpers/validateNumericalAnalysis.d.ts.map +1 -1
  398. package/script/helpers/validateNumericalAnalysis.js +10 -6
  399. package/script/helpers/validateVectorRowIds.d.ts +4 -0
  400. package/script/helpers/validateVectorRowIds.d.ts.map +1 -0
  401. package/script/helpers/validateVectorRowIds.js +19 -0
  402. package/script/helpers/vectorDistanceExpression.d.ts +6 -0
  403. package/script/helpers/vectorDistanceExpression.d.ts.map +1 -0
  404. package/script/helpers/vectorDistanceExpression.js +14 -0
  405. package/script/helpers/wrapString.d.ts +10 -7
  406. package/script/helpers/wrapString.d.ts.map +1 -1
  407. package/script/helpers/wrapString.js +10 -7
  408. package/script/methods/addId.d.ts +5 -0
  409. package/script/methods/addId.d.ts.map +1 -0
  410. package/script/methods/addId.js +44 -0
  411. package/script/methods/commonNeighbors.d.ts +10 -0
  412. package/script/methods/commonNeighbors.d.ts.map +1 -0
  413. package/script/methods/commonNeighbors.js +140 -0
  414. package/script/methods/connectedComponents.d.ts +9 -0
  415. package/script/methods/connectedComponents.d.ts.map +1 -0
  416. package/script/methods/connectedComponents.js +186 -0
  417. package/script/methods/degree.d.ts +9 -0
  418. package/script/methods/degree.d.ts.map +1 -0
  419. package/script/methods/degree.js +141 -0
  420. package/script/methods/distances.d.ts +12 -0
  421. package/script/methods/distances.d.ts.map +1 -0
  422. package/script/methods/distances.js +203 -0
  423. package/script/methods/findCycles.d.ts +12 -0
  424. package/script/methods/findCycles.d.ts.map +1 -0
  425. package/script/methods/findCycles.js +369 -0
  426. package/script/methods/fuzzyClean.d.ts.map +1 -1
  427. package/script/methods/fuzzyClean.js +17 -136
  428. package/script/methods/fuzzyJoin.js +70 -16
  429. package/script/methods/getTypes.d.ts +1 -1
  430. package/script/methods/hdbscan.d.ts +5 -0
  431. package/script/methods/hdbscan.d.ts.map +1 -0
  432. package/script/methods/hdbscan.js +214 -0
  433. package/script/methods/mahalanobis.d.ts +5 -0
  434. package/script/methods/mahalanobis.d.ts.map +1 -0
  435. package/script/methods/mahalanobis.js +98 -0
  436. package/script/methods/neighbors.d.ts +9 -0
  437. package/script/methods/neighbors.d.ts.map +1 -0
  438. package/script/methods/neighbors.js +120 -0
  439. package/script/methods/normalizeVector.d.ts +5 -0
  440. package/script/methods/normalizeVector.d.ts.map +1 -0
  441. package/script/methods/normalizeVector.js +138 -0
  442. package/script/methods/paths.d.ts +12 -0
  443. package/script/methods/paths.d.ts.map +1 -0
  444. package/script/methods/paths.js +326 -0
  445. package/script/methods/reachable.d.ts +11 -0
  446. package/script/methods/reachable.d.ts.map +1 -0
  447. package/script/methods/reachable.js +170 -0
  448. package/script/methods/rowToVector.d.ts +5 -0
  449. package/script/methods/rowToVector.d.ts.map +1 -0
  450. package/script/methods/rowToVector.js +83 -0
  451. package/script/methods/shortestPath.d.ts +12 -0
  452. package/script/methods/shortestPath.d.ts.map +1 -0
  453. package/script/methods/shortestPath.js +376 -0
  454. package/script/methods/topologicalSort.d.ts +7 -0
  455. package/script/methods/topologicalSort.d.ts.map +1 -0
  456. package/script/methods/topologicalSort.js +170 -0
  457. package/script/methods/trim.d.ts +1 -1
  458. package/script/methods/trim.d.ts.map +1 -1
  459. package/script/methods/trim.js +17 -8
@@ -0,0 +1,45 @@
1
+ import { type DuckDBConnection } from "@duckdb/node-api";
2
+ /**
3
+ * Build an explicitly approximate mutual-reachability MST. HNSW supplies a
4
+ * high-recall k-neighbor candidate graph; disconnected components are repaired
5
+ * with deterministic all-member projection sweeps. Neither step guarantees the
6
+ * complete graph's MST.
7
+ */
8
+ export default function buildApproximateMutualReachabilityMst(connection: DuckDBConnection, input: {
9
+ count: number;
10
+ dimensions: number;
11
+ minSamples: number;
12
+ }, options: {
13
+ metric: "euclidean" | "cosine";
14
+ }, names: {
15
+ rows: string;
16
+ neighbors: string;
17
+ search: string;
18
+ hnsw: string;
19
+ candidates: string;
20
+ coreDistances: string;
21
+ edges: string;
22
+ components: string;
23
+ representatives: string;
24
+ componentPairs: string;
25
+ bridgeCandidates: string;
26
+ mst: string;
27
+ }): Promise<{
28
+ candidateComponents: number;
29
+ neighborCount: number;
30
+ }>;
31
+ /** Internal connectivity-repair seam used by focused approximation tests. */
32
+ export declare function repairApproximateConnectivity(connection: DuckDBConnection, input: {
33
+ count: number;
34
+ }, options: {
35
+ metric: "euclidean" | "cosine";
36
+ }, names: {
37
+ rows: string;
38
+ coreDistances: string;
39
+ edges: string;
40
+ components: string;
41
+ representatives: string;
42
+ componentPairs: string;
43
+ bridgeCandidates: string;
44
+ }): Promise<number>;
45
+ //# sourceMappingURL=buildApproximateMutualReachabilityMst.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"buildApproximateMutualReachabilityMst.d.ts","sourceRoot":"","sources":["../../src/helpers/buildApproximateMutualReachabilityMst.ts"],"names":[],"mappings":"AAAA,OAAO,EAAU,KAAK,gBAAgB,EAAW,MAAM,kBAAkB,CAAC;AAQ1E;;;;;GAKG;AACH,wBAA8B,qCAAqC,CACjE,UAAU,EAAE,gBAAgB,EAC5B,KAAK,EAAE;IAAE,KAAK,EAAE,MAAM,CAAC;IAAC,UAAU,EAAE,MAAM,CAAC;IAAC,UAAU,EAAE,MAAM,CAAA;CAAE,EAChE,OAAO,EAAE;IAAE,MAAM,EAAE,WAAW,GAAG,QAAQ,CAAA;CAAE,EAC3C,KAAK,EAAE;IACL,IAAI,EAAE,MAAM,CAAC;IACb,SAAS,EAAE,MAAM,CAAC;IAClB,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,EAAE,MAAM,CAAC;IACb,UAAU,EAAE,MAAM,CAAC;IACnB,aAAa,EAAE,MAAM,CAAC;IACtB,KAAK,EAAE,MAAM,CAAC;IACd,UAAU,EAAE,MAAM,CAAC;IACnB,eAAe,EAAE,MAAM,CAAC;IACxB,cAAc,EAAE,MAAM,CAAC;IACvB,gBAAgB,EAAE,MAAM,CAAC;IACzB,GAAG,EAAE,MAAM,CAAC;CACb,GACA,OAAO,CAAC;IAAE,mBAAmB,EAAE,MAAM,CAAC;IAAC,aAAa,EAAE,MAAM,CAAA;CAAE,CAAC,CAsFjE;AAED,6EAA6E;AAC7E,wBAAsB,6BAA6B,CACjD,UAAU,EAAE,gBAAgB,EAC5B,KAAK,EAAE;IAAE,KAAK,EAAE,MAAM,CAAA;CAAE,EACxB,OAAO,EAAE;IAAE,MAAM,EAAE,WAAW,GAAG,QAAQ,CAAA;CAAE,EAC3C,KAAK,EAAE;IACL,IAAI,EAAE,MAAM,CAAC;IACb,aAAa,EAAE,MAAM,CAAC;IACtB,KAAK,EAAE,MAAM,CAAC;IACd,UAAU,EAAE,MAAM,CAAC;IACnB,eAAe,EAAE,MAAM,CAAC;IACxB,cAAc,EAAE,MAAM,CAAC;IACvB,gBAAgB,EAAE,MAAM,CAAC;CAC1B,GACA,OAAO,CAAC,MAAM,CAAC,CAsHjB"}
@@ -0,0 +1,219 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.default = buildApproximateMutualReachabilityMst;
7
+ exports.repairApproximateConnectivity = repairApproximateConnectivity;
8
+ const node_api_1 = require("@duckdb/node-api");
9
+ const appendColumnBatches_js_1 = __importDefault(require("./appendColumnBatches.js"));
10
+ const buildSparseMutualReachabilityMst_js_1 = __importDefault(require("./buildSparseMutualReachabilityMst.js"));
11
+ const buildVectorNeighbors_js_1 = __importDefault(require("./buildVectorNeighbors.js"));
12
+ const inspectGraphConnectivity_js_1 = __importDefault(require("./inspectGraphConnectivity.js"));
13
+ const quoteIdentifier_js_1 = __importDefault(require("./quoteIdentifier.js"));
14
+ const vectorDistanceExpression_js_1 = __importDefault(require("./vectorDistanceExpression.js"));
15
+ /**
16
+ * Build an explicitly approximate mutual-reachability MST. HNSW supplies a
17
+ * high-recall k-neighbor candidate graph; disconnected components are repaired
18
+ * with deterministic all-member projection sweeps. Neither step guarantees the
19
+ * complete graph's MST.
20
+ */
21
+ async function buildApproximateMutualReachabilityMst(connection, input, options, names) {
22
+ const q = quoteIdentifier_js_1.default;
23
+ const quoted = Object.fromEntries(Object.entries(names).map(([key, value]) => [key, q(value)]));
24
+ const neighborCount = Math.min(input.count - 1, Math.max(input.minSamples, 64));
25
+ await (0, buildVectorNeighbors_js_1.default)(connection, {
26
+ count: input.count,
27
+ dimensions: input.dimensions,
28
+ neighborCount,
29
+ }, {
30
+ metric: options.metric,
31
+ search: "hnsw",
32
+ includeSelf: false,
33
+ hnsw: {
34
+ efConstruction: 256,
35
+ efSearch: Math.max(512, neighborCount * 2),
36
+ connectivity: 32,
37
+ candidateCount: Math.min(input.count, neighborCount * 2 + 1),
38
+ singleThreaded: true,
39
+ cosineAsL2: true,
40
+ },
41
+ }, {
42
+ rows: quoted.rows,
43
+ neighbors: quoted.neighbors,
44
+ search: quoted.search,
45
+ hnsw: quoted.hnsw,
46
+ candidates: quoted.candidates,
47
+ });
48
+ await connection.run(`CREATE OR REPLACE TEMP TABLE ${quoted.coreDistances} AS
49
+ SELECT source AS vertex,distance
50
+ FROM ${quoted.neighbors} WHERE rank=${input.minSamples - 1};
51
+ CREATE OR REPLACE TEMP TABLE ${quoted.edges} AS
52
+ SELECT least(n.source,n.target)::INTEGER AS source,
53
+ greatest(n.source,n.target)::INTEGER AS target,
54
+ min(greatest(cs.distance,ct.distance,n.distance))::DOUBLE AS distance
55
+ FROM ${quoted.neighbors} n
56
+ JOIN ${quoted.coreDistances} cs ON cs.vertex=n.source
57
+ JOIN ${quoted.coreDistances} ct ON ct.vertex=n.target
58
+ GROUP BY least(n.source,n.target),greatest(n.source,n.target)`);
59
+ await connection.run(`DROP TABLE IF EXISTS ${quoted.neighbors};
60
+ DROP TABLE IF EXISTS ${quoted.candidates};
61
+ DROP TABLE IF EXISTS ${quoted.search}`);
62
+ const componentCount = await repairApproximateConnectivity(connection, { count: input.count }, options, {
63
+ rows: names.rows,
64
+ coreDistances: names.coreDistances,
65
+ edges: names.edges,
66
+ components: names.components,
67
+ representatives: names.representatives,
68
+ componentPairs: names.componentPairs,
69
+ bridgeCandidates: names.bridgeCandidates,
70
+ });
71
+ const mst = await (0, buildSparseMutualReachabilityMst_js_1.default)(connection, quoted.edges, input.count);
72
+ await connection.run(`CREATE OR REPLACE TEMP TABLE ${quoted.mst}
73
+ (source INTEGER,target INTEGER,distance DOUBLE)`);
74
+ await (0, appendColumnBatches_js_1.default)(connection, names.mst, [node_api_1.INTEGER, node_api_1.INTEGER, node_api_1.DOUBLE], mst.length, (column, start, end) => mst.slice(start, end).map((edge) => column === 0 ? edge.source : column === 1 ? edge.target : edge.distance));
75
+ return { candidateComponents: componentCount, neighborCount };
76
+ }
77
+ /** Internal connectivity-repair seam used by focused approximation tests. */
78
+ async function repairApproximateConnectivity(connection, input, options, names) {
79
+ const q = quoteIdentifier_js_1.default;
80
+ const quoted = Object.fromEntries(Object.entries(names).map(([key, value]) => [key, q(value)]));
81
+ const componentOf = await readComponents(connection, quoted.edges, input.count);
82
+ let maximumComponent = -1;
83
+ for (const component of componentOf) {
84
+ if (component > maximumComponent)
85
+ maximumComponent = component;
86
+ }
87
+ const componentCount = maximumComponent + 1;
88
+ if (componentCount > 1) {
89
+ await createComponentRows(connection, names.components, componentOf);
90
+ // Each sweep examines every point, rather than a fixed representative
91
+ // sample. Consecutive component runs in the projected order provide a
92
+ // connected backbone, while multiple directions offer alternative edges.
93
+ // We also connect each member of a run to the nearest projected endpoint
94
+ // in both adjacent runs. All weights are recomputed in the actual metric.
95
+ const dimensions = Number((await connection.runAndReadAll(`SELECT len(vec) FROM ${quoted.rows} LIMIT 1`)).getRowsJS()[0][0]);
96
+ await connection.run(`CREATE OR REPLACE TEMP TABLE ${quoted.bridgeCandidates}
97
+ (source INTEGER,target INTEGER,distance DOUBLE)`);
98
+ const rawDistance = (0, vectorDistanceExpression_js_1.default)("a.vec", "b.vec", options.metric);
99
+ const projectionCount = Math.min(dimensions, 8) + (dimensions > 1 ? 16 : 0);
100
+ for (let projection = 0; projection < projectionCount; projection++) {
101
+ // Coordinate directions handle axis-aligned and one-dimensional data;
102
+ // fixed pseudo-random directions cover rotated component boundaries.
103
+ // Coefficients do not depend on table names, execution order, or RNG state.
104
+ const coefficients = Array.from({ length: dimensions }, (_, dimension) => {
105
+ if (projection < Math.min(dimensions, 8)) {
106
+ return dimension === projection ? 1 : 0;
107
+ }
108
+ let hash = Math.imul(projection + 1, 0x9e3779b1) ^
109
+ Math.imul(dimension + 1, 0x85ebca6b);
110
+ hash = Math.imul(hash ^ (hash >>> 16), 0x7feb352d);
111
+ hash = Math.imul(hash ^ (hash >>> 15), 0x846ca68b);
112
+ return ((hash ^ (hash >>> 16)) >>> 0) / 0x100000000 * 2 - 1;
113
+ });
114
+ // Scaling each coordinate by the same global factor prevents overflow
115
+ // in the projection without changing its ordering. Unit directions are
116
+ // the appropriate search geometry for cosine.
117
+ const vector = options.metric === "cosine"
118
+ ? `list_transform(r.vec,x -> x/sqrt(array_inner_product(r.vec,r.vec)))::DOUBLE[${dimensions}]`
119
+ : `list_transform(r.vec,x -> x/scale.maximum)::DOUBLE[${dimensions}]`;
120
+ await connection.run(`CREATE OR REPLACE TEMP TABLE ${quoted.representatives} AS
121
+ WITH projected AS (
122
+ SELECT r.vertex,c.component,
123
+ array_inner_product(${vector},[${coefficients.join(",")}]::DOUBLE[${dimensions}]) AS position
124
+ FROM ${quoted.rows} r JOIN ${quoted.components} c USING(vertex)
125
+ CROSS JOIN (SELECT greatest(1,max(list_max(list_transform(vec,x -> abs(x))))) AS maximum FROM ${quoted.rows}) scale
126
+ ), ordered AS (
127
+ SELECT *,lag(component) OVER w AS previous_component,
128
+ lead(component) OVER w AS next_component,
129
+ lag(vertex) OVER w AS previous_vertex,
130
+ lead(vertex) OVER w AS next_vertex
131
+ FROM projected WINDOW w AS (ORDER BY position,vertex)
132
+ )
133
+ SELECT vertex,
134
+ last_value(CASE WHEN component != previous_component THEN previous_vertex END IGNORE NULLS)
135
+ OVER (ORDER BY position,vertex ROWS BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW) AS left_vertex,
136
+ first_value(CASE WHEN component != next_component THEN next_vertex END IGNORE NULLS)
137
+ OVER (ORDER BY position,vertex ROWS BETWEEN CURRENT ROW AND UNBOUNDED FOLLOWING) AS right_vertex
138
+ FROM ordered;
139
+ INSERT INTO ${quoted.bridgeCandidates}
140
+ SELECT least(a.vertex,b.vertex)::INTEGER,greatest(a.vertex,b.vertex)::INTEGER,
141
+ greatest(ca.distance,cb.distance,${rawDistance})::DOUBLE
142
+ FROM (SELECT vertex,unnest([left_vertex,right_vertex]) AS target FROM ${quoted.representatives}) p
143
+ JOIN ${quoted.rows} a ON a.vertex=p.vertex
144
+ JOIN ${quoted.rows} b ON b.vertex=p.target
145
+ JOIN ${quoted.coreDistances} ca ON ca.vertex=a.vertex
146
+ JOIN ${quoted.coreDistances} cb ON cb.vertex=b.vertex`);
147
+ }
148
+ const invalidBridgeDistances = Number((await connection.runAndReadAll(`SELECT count(*) FROM ${quoted.bridgeCandidates}
149
+ WHERE distance IS NULL OR NOT isfinite(distance)`)).getRowsJS()[0][0]);
150
+ if (invalidBridgeDistances > 0) {
151
+ throw new Error(`Approximate HDBSCAN connectivity repair produced ${invalidBridgeDistances} non-finite candidate distances. Rescale the input features.`);
152
+ }
153
+ await connection.run(`INSERT INTO ${quoted.edges}
154
+ SELECT source,target,min(distance) AS distance
155
+ FROM ${quoted.bridgeCandidates} GROUP BY source,target`);
156
+ }
157
+ const connectivity = await (0, inspectGraphConnectivity_js_1.default)(connection, quoted.edges, input.count);
158
+ if (connectivity.componentCount !== 1) {
159
+ throw new Error(`Approximate HDBSCAN connectivity repair left ${connectivity.componentCount} graph components.`);
160
+ }
161
+ return componentCount;
162
+ }
163
+ async function readComponents(connection, edges, count) {
164
+ const parent = new Int32Array(count);
165
+ const size = new Int32Array(count).fill(1);
166
+ for (let vertex = 0; vertex < count; vertex++)
167
+ parent[vertex] = vertex;
168
+ const find = (start) => {
169
+ let root = start;
170
+ while (parent[root] !== root)
171
+ root = parent[root];
172
+ let current = start;
173
+ while (parent[current] !== current) {
174
+ const next = parent[current];
175
+ parent[current] = root;
176
+ current = next;
177
+ }
178
+ return root;
179
+ };
180
+ const union = (left, right) => {
181
+ let a = find(left), b = find(right);
182
+ if (a === b)
183
+ return;
184
+ if (size[a] < size[b])
185
+ [a, b] = [b, a];
186
+ parent[b] = a;
187
+ size[a] += size[b];
188
+ };
189
+ const result = await connection.stream(`SELECT source,target FROM ${edges}`);
190
+ while (true) {
191
+ const chunk = await result.fetchChunk();
192
+ if (!chunk || chunk.rowCount === 0)
193
+ break;
194
+ const sources = chunk.getColumnVector(0);
195
+ const targets = chunk.getColumnVector(1);
196
+ for (let row = 0; row < chunk.rowCount; row++) {
197
+ union(Number(sources.getItem(row)), Number(targets.getItem(row)));
198
+ }
199
+ }
200
+ const minimum = new Map();
201
+ for (let vertex = 0; vertex < count; vertex++) {
202
+ const root = find(vertex);
203
+ minimum.set(root, Math.min(minimum.get(root) ?? vertex, vertex));
204
+ }
205
+ const ids = [...minimum]
206
+ .sort((a, b) => a[1] - b[1])
207
+ .map(([root], component) => [root, component]);
208
+ const componentByRoot = new Map(ids);
209
+ const componentOf = new Int32Array(count);
210
+ for (let vertex = 0; vertex < count; vertex++) {
211
+ componentOf[vertex] = componentByRoot.get(find(vertex));
212
+ }
213
+ return componentOf;
214
+ }
215
+ async function createComponentRows(connection, name, componentOf) {
216
+ await connection.run(`CREATE OR REPLACE TEMP TABLE ${(0, quoteIdentifier_js_1.default)(name)}
217
+ (vertex INTEGER,component INTEGER)`);
218
+ await (0, appendColumnBatches_js_1.default)(connection, name, [node_api_1.INTEGER, node_api_1.INTEGER], componentOf.length, (column, start, end) => Array.from({ length: end - start }, (_, offset) => column === 0 ? start + offset : componentOf[start + offset]));
219
+ }
@@ -0,0 +1,14 @@
1
+ import type { PreparedGraphTemporalSql } from "./prepareGraphTemporalSql.js";
2
+ import type { PreparedGraphSql } from "./prepareGraphTraversal.js";
3
+ /** Builds all-pairs chronological reachability and maximal-clique membership SQL. */
4
+ export default function buildChronologicalGraphComponentsSql(prepared: PreparedGraphSql, temporal: PreparedGraphTemporalSql): string;
5
+ export type MaximalGraphCliqueRelations = {
6
+ adjacency: string;
7
+ initial: string;
8
+ maximal: string;
9
+ numbered: string;
10
+ search: string;
11
+ };
12
+ /** Builds pivoted Bron–Kerbosch CTEs over typed node and mutual-edge relations. */
13
+ export declare function buildMaximalGraphCliquesSql(nodes: string, mutual: string, relations: MaximalGraphCliqueRelations): string;
14
+ //# sourceMappingURL=buildChronologicalGraphComponentsSql.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"buildChronologicalGraphComponentsSql.d.ts","sourceRoot":"","sources":["../../src/helpers/buildChronologicalGraphComponentsSql.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,wBAAwB,EAAE,MAAM,8BAA8B,CAAC;AAC7E,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,4BAA4B,CAAC;AAGnE,qFAAqF;AACrF,MAAM,CAAC,OAAO,UAAU,oCAAoC,CAC1D,QAAQ,EAAE,gBAAgB,EAC1B,QAAQ,EAAE,wBAAwB,GACjC,MAAM,CA+ER;AAED,MAAM,MAAM,2BAA2B,GAAG;IACxC,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,EAAE,MAAM,CAAC;IACjB,MAAM,EAAE,MAAM,CAAC;CAChB,CAAC;AAEF,mFAAmF;AACnF,wBAAgB,2BAA2B,CACzC,KAAK,EAAE,MAAM,EACb,MAAM,EAAE,MAAM,EACd,SAAS,EAAE,2BAA2B,GACrC,MAAM,CA2FR"}
@@ -0,0 +1,174 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.default = buildChronologicalGraphComponentsSql;
7
+ exports.buildMaximalGraphCliquesSql = buildMaximalGraphCliquesSql;
8
+ const buildGraphTemporalReachabilitySql_js_1 = __importDefault(require("./buildGraphTemporalReachabilitySql.js"));
9
+ const quoteIdentifier_js_1 = __importDefault(require("./quoteIdentifier.js"));
10
+ /** Builds all-pairs chronological reachability and maximal-clique membership SQL. */
11
+ function buildChronologicalGraphComponentsSql(prepared, temporal) {
12
+ const q = quoteIdentifier_js_1.default;
13
+ // Temporal mutual reachability is not transitive: groups are maximal cliques
14
+ // that may overlap. Returning every group has exponential worst-case output.
15
+ const reachability = (0, buildGraphTemporalReachabilitySql_js_1.default)(prepared, (edges) => `SELECT ${q("__from")} AS ${q("start")},
16
+ ${q("__from_key")} AS ${q("__key")}
17
+ FROM ${edges}
18
+ UNION
19
+ SELECT ${q("__to")}, ${q("__to_key")} FROM ${edges}`, "outgoing", temporal);
20
+ const relations = prepared.relationNames([
21
+ "graph_component_nodes",
22
+ "graph_component_reachability",
23
+ "graph_mutual_neighbors",
24
+ "graph_mutual_adjacency",
25
+ "graph_clique_initial",
26
+ "graph_clique_search",
27
+ "graph_maximal_cliques",
28
+ "graph_numbered_cliques",
29
+ ]);
30
+ const nodes = relations.graph_component_nodes;
31
+ const reached = relations.graph_component_reachability;
32
+ const mutual = relations.graph_mutual_neighbors;
33
+ const adjacency = relations.graph_mutual_adjacency;
34
+ const initial = relations.graph_clique_initial;
35
+ const search = relations.graph_clique_search;
36
+ const maximal = relations.graph_maximal_cliques;
37
+ const numbered = relations.graph_numbered_cliques;
38
+ const edges = reachability.edgesRelation;
39
+ const reachable = reachability.reachableRelation;
40
+ return `${reachability.withClause}, ${nodes} AS MATERIALIZED (
41
+ SELECT ${q("node")}, ${q("__key")}
42
+ FROM (
43
+ SELECT ${q("__from")} AS ${q("node")},
44
+ ${q("__from_key")} AS ${q("__key")}
45
+ FROM ${edges}
46
+ UNION
47
+ SELECT ${q("__to")}, ${q("__to_key")} FROM ${edges}
48
+ ) AS ${q("valid_nodes")}
49
+ ), ${reached} AS MATERIALIZED (
50
+ SELECT ${q("__start_key")}, ${q("__node_key")}
51
+ FROM ${reachable}
52
+ UNION
53
+ SELECT ${q("__key")}, ${q("__key")} FROM ${nodes}
54
+ ), ${mutual} AS MATERIALIZED (
55
+ SELECT ${q("forward")}.${q("__start_key")} AS ${q("__key")},
56
+ ${q("forward")}.${q("__node_key")} AS ${q("__neighbor_key")}
57
+ FROM ${reached} AS ${q("forward")}
58
+ INNER JOIN ${reached} AS ${q("reverse")}
59
+ ON ${q("forward")}.${q("__start_key")} =
60
+ ${q("reverse")}.${q("__node_key")}
61
+ AND ${q("forward")}.${q("__node_key")} =
62
+ ${q("reverse")}.${q("__start_key")}
63
+ WHERE ${q("forward")}.${q("__start_key")} !=
64
+ ${q("forward")}.${q("__node_key")}
65
+ ), ${buildMaximalGraphCliquesSql(nodes, mutual, {
66
+ adjacency,
67
+ initial,
68
+ maximal,
69
+ numbered,
70
+ search,
71
+ })}
72
+ SELECT ${q("numbered")}.${q("componentId")},
73
+ ${q("nodes")}.${q("node")}
74
+ FROM ${numbered} AS ${q("numbered")}
75
+ CROSS JOIN unnest(${q("numbered")}.${q("__members")}) WITH ORDINALITY
76
+ AS ${q("member")}(${q("__key")}, ${q("__order")})
77
+ INNER JOIN ${nodes} AS ${q("nodes")}
78
+ ON ${q("member")}.${q("__key")} = ${q("nodes")}.${q("__key")}
79
+ ORDER BY ${q("numbered")}.${q("componentId")},
80
+ ${q("member")}.${q("__order")}`;
81
+ }
82
+ /** Builds pivoted Bron–Kerbosch CTEs over typed node and mutual-edge relations. */
83
+ function buildMaximalGraphCliquesSql(nodes, mutual, relations) {
84
+ const q = quoteIdentifier_js_1.default;
85
+ const { adjacency, initial, maximal, numbered, search } = relations;
86
+ // Sibling candidates are P minus the pivot's neighbors. For branch v, move
87
+ // only earlier siblings (candidate < v and outside N(pivot)) from P to X;
88
+ // earlier P vertices inside N(pivot) must remain prospective.
89
+ return `${adjacency} AS MATERIALIZED (
90
+ SELECT ${q("nodes")}.${q("__key")},
91
+ COALESCE(
92
+ list(${q("mutual")}.${q("__neighbor_key")}
93
+ ORDER BY ${q("mutual")}.${q("__neighbor_key")})
94
+ FILTER (WHERE ${q("mutual")}.${q("__neighbor_key")} IS NOT NULL),
95
+ list_slice(list_value(${q("nodes")}.${q("__key")}), 1, 0)
96
+ ) AS ${q("__neighbors")}
97
+ FROM ${nodes} AS ${q("nodes")}
98
+ LEFT JOIN ${mutual} AS ${q("mutual")}
99
+ ON ${q("nodes")}.${q("__key")} = ${q("mutual")}.${q("__key")}
100
+ GROUP BY ${q("nodes")}.${q("__key")}
101
+ ), ${initial} AS MATERIALIZED (
102
+ SELECT list_slice(${q("__keys")}, 1, 0) AS ${q("__r")},
103
+ ${q("__keys")} AS ${q("__p")},
104
+ list_slice(${q("__keys")}, 1, 0) AS ${q("__x")}
105
+ FROM (
106
+ SELECT list(${q("__key")} ORDER BY ${q("__key")}) AS ${q("__keys")}
107
+ FROM ${nodes}
108
+ ) AS ${q("all_nodes")}
109
+ WHERE ${q("__keys")} IS NOT NULL
110
+ ), ${search}(${q("__r")}, ${q("__p")}, ${q("__x")}) AS (
111
+ SELECT ${q("__r")}, ${q("__p")}, ${q("__x")} FROM ${initial}
112
+ UNION ALL
113
+ SELECT list_append(${q("state")}.${q("__r")},
114
+ ${q("branch")}.${q("__key")}),
115
+ list_filter(${q("state")}.${q("__p")}, ${q("candidate")} ->
116
+ list_contains(${q("branch_neighbors")}.${q("__neighbors")},
117
+ ${q("candidate")})
118
+ AND (
119
+ ${q("candidate")} >= ${q("branch")}.${q("__key")}
120
+ OR list_contains(${q("pivot")}.${q("__neighbors")},
121
+ ${q("candidate")})
122
+ )),
123
+ list_filter(
124
+ list_concat(${q("state")}.${q("__x")},
125
+ ${q("state")}.${q("__p")}),
126
+ ${q("candidate")} ->
127
+ list_contains(${q("branch_neighbors")}.${q("__neighbors")},
128
+ ${q("candidate")})
129
+ AND (
130
+ list_contains(${q("state")}.${q("__x")}, ${q("candidate")})
131
+ OR (
132
+ ${q("candidate")} < ${q("branch")}.${q("__key")}
133
+ AND NOT list_contains(${q("pivot")}.${q("__neighbors")},
134
+ ${q("candidate")})
135
+ )
136
+ )
137
+ )
138
+ FROM ${search} AS ${q("state")}
139
+ CROSS JOIN LATERAL (
140
+ SELECT ${q("candidate_adjacency")}.${q("__key")},
141
+ ${q("candidate_adjacency")}.${q("__neighbors")}
142
+ FROM unnest(list_concat(${q("state")}.${q("__p")},
143
+ ${q("state")}.${q("__x")})) AS ${q("candidate_key")}(${q("__key")})
144
+ INNER JOIN ${adjacency} AS ${q("candidate_adjacency")}
145
+ ON ${q("candidate_key")}.${q("__key")} =
146
+ ${q("candidate_adjacency")}.${q("__key")}
147
+ ORDER BY list_unique(list_intersect(
148
+ ${q("state")}.${q("__p")},
149
+ ${q("candidate_adjacency")}.${q("__neighbors")}
150
+ )) DESC,
151
+ ${q("candidate_adjacency")}.${q("__key")}
152
+ LIMIT 1
153
+ ) AS ${q("pivot")}
154
+ CROSS JOIN LATERAL (
155
+ SELECT ${q("candidate")}.${q("__key")}
156
+ FROM unnest(${q("state")}.${q("__p")})
157
+ AS ${q("candidate")}(${q("__key")})
158
+ WHERE NOT list_contains(${q("pivot")}.${q("__neighbors")},
159
+ ${q("candidate")}.${q("__key")})
160
+ ) AS ${q("branch")}
161
+ INNER JOIN ${adjacency} AS ${q("branch_neighbors")}
162
+ ON ${q("branch")}.${q("__key")} =
163
+ ${q("branch_neighbors")}.${q("__key")}
164
+ ), ${maximal} AS MATERIALIZED (
165
+ SELECT list_sort(${q("__r")}) AS ${q("__members")}
166
+ FROM ${search}
167
+ WHERE len(${q("__p")}) = 0 AND len(${q("__x")}) = 0
168
+ ), ${numbered} AS MATERIALIZED (
169
+ SELECT ${q("__members")},
170
+ CAST(row_number() OVER (ORDER BY ${q("__members")}) - 1 AS BIGINT)
171
+ AS ${q("componentId")}
172
+ FROM ${maximal}
173
+ )`;
174
+ }
@@ -0,0 +1,28 @@
1
+ import type { DuckDBConnection } from "@duckdb/node-api";
2
+ /** Private, already-quoted relation names owned and cleaned up by the caller. */
3
+ export type MutualReachabilityTables = {
4
+ rows: string;
5
+ coreDistances: string;
6
+ frontier: string;
7
+ mst: string;
8
+ };
9
+ /**
10
+ * Build an exact HDBSCAN mutual-reachability MST with bounded materialization.
11
+ *
12
+ * The prepared rows relation must contain contiguous INTEGER `vertex` ids and
13
+ * fixed-size DOUBLE `vec` values. `minSamples` excludes the point itself. Core
14
+ * distance calculation uses bounded top-k aggregates and retains one scalar per
15
+ * point. Prim's algorithm retains one frontier edge per unvisited point. This
16
+ * costs O(n²d) distance work, O(n) stored algorithm state, and O(n) sequential
17
+ * DuckDB statements; it is intended as the exact correctness baseline.
18
+ * Cosine preparation may rescale the private vec column, preserving direction.
19
+ * All supplied scratch names are already quoted, distinct, and caller-owned;
20
+ * the caller must drop them in finally on both success and failure.
21
+ */
22
+ export default function buildExactMutualReachabilityMst(connection: DuckDBConnection, input: {
23
+ count: number;
24
+ minSamples: number;
25
+ }, options: {
26
+ metric: "euclidean" | "cosine";
27
+ }, names: MutualReachabilityTables): Promise<void>;
28
+ //# sourceMappingURL=buildExactMutualReachabilityMst.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"buildExactMutualReachabilityMst.d.ts","sourceRoot":"","sources":["../../src/helpers/buildExactMutualReachabilityMst.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,kBAAkB,CAAC;AAMzD,iFAAiF;AACjF,MAAM,MAAM,wBAAwB,GAAG;IACrC,IAAI,EAAE,MAAM,CAAC;IACb,aAAa,EAAE,MAAM,CAAC;IACtB,QAAQ,EAAE,MAAM,CAAC;IACjB,GAAG,EAAE,MAAM,CAAC;CACb,CAAC;AAEF;;;;;;;;;;;;GAYG;AACH,wBAA8B,+BAA+B,CAC3D,UAAU,EAAE,gBAAgB,EAC5B,KAAK,EAAE;IAAE,KAAK,EAAE,MAAM,CAAC;IAAC,UAAU,EAAE,MAAM,CAAA;CAAE,EAC5C,OAAO,EAAE;IAAE,MAAM,EAAE,WAAW,GAAG,QAAQ,CAAA;CAAE,EAC3C,KAAK,EAAE,wBAAwB,GAC9B,OAAO,CAAC,IAAI,CAAC,CA6Gf"}
@@ -0,0 +1,103 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.default = buildExactMutualReachabilityMst;
7
+ const readScalarNumber_js_1 = __importDefault(require("./readScalarNumber.js"));
8
+ const vectorDistanceExpression_js_1 = __importDefault(require("./vectorDistanceExpression.js"));
9
+ const stabilizeCosineVectors_js_1 = __importDefault(require("./stabilizeCosineVectors.js"));
10
+ const validateVectorRowIds_js_1 = __importDefault(require("./validateVectorRowIds.js"));
11
+ /**
12
+ * Build an exact HDBSCAN mutual-reachability MST with bounded materialization.
13
+ *
14
+ * The prepared rows relation must contain contiguous INTEGER `vertex` ids and
15
+ * fixed-size DOUBLE `vec` values. `minSamples` excludes the point itself. Core
16
+ * distance calculation uses bounded top-k aggregates and retains one scalar per
17
+ * point. Prim's algorithm retains one frontier edge per unvisited point. This
18
+ * costs O(n²d) distance work, O(n) stored algorithm state, and O(n) sequential
19
+ * DuckDB statements; it is intended as the exact correctness baseline.
20
+ * Cosine preparation may rescale the private vec column, preserving direction.
21
+ * All supplied scratch names are already quoted, distinct, and caller-owned;
22
+ * the caller must drop them in finally on both success and failure.
23
+ */
24
+ async function buildExactMutualReachabilityMst(connection, input, options, names) {
25
+ const { count, minSamples } = input;
26
+ if (count < 2 || !Number.isSafeInteger(count)) {
27
+ throw new Error("Exact mutual-reachability MST requires at least two rows.");
28
+ }
29
+ if (!Number.isSafeInteger(minSamples) || minSamples < 1 || minSamples >= count) {
30
+ throw new Error(`minSamples must be a safe integer between 1 and ${count - 1}.`);
31
+ }
32
+ await (0, validateVectorRowIds_js_1.default)(connection, names.rows, count);
33
+ if (options.metric === "cosine") {
34
+ await (0, stabilizeCosineVectors_js_1.default)(connection, names.rows);
35
+ }
36
+ const distance = (0, vectorDistanceExpression_js_1.default)("a.vec", "b.vec", options.metric);
37
+ await connection.run(`CREATE OR REPLACE TEMP TABLE ${names.coreDistances}
38
+ (vertex INTEGER PRIMARY KEY,distance DOUBLE)`);
39
+ for (let offset = 0; offset < count; offset += 32) {
40
+ await connection.run(`INSERT INTO ${names.coreDistances}
41
+ SELECT source,max(item.distance)::DOUBLE AS distance FROM (
42
+ SELECT a.vertex AS source,
43
+ CASE WHEN bool_and(isfinite(${distance})) THEN
44
+ min_by(struct_pack(target := b.vertex,distance := ${distance}),
45
+ struct_pack(distance := ${distance},target := b.vertex),
46
+ ${minSamples}) ELSE error('Distance computation returned a non-finite value.') END AS closest
47
+ FROM ${names.rows} a CROSS JOIN ${names.rows} b
48
+ WHERE a.vertex >= ${offset} AND a.vertex < ${offset + 32}
49
+ AND a.vertex != b.vertex GROUP BY a.vertex
50
+ ),UNNEST(closest) AS t(item) GROUP BY source`);
51
+ }
52
+ if (await (0, readScalarNumber_js_1.default)(connection, `SELECT count(*) FROM ${names.coreDistances}
53
+ WHERE NOT isfinite(distance)`) ||
54
+ await (0, readScalarNumber_js_1.default)(connection, `SELECT count(*) FROM ${names.coreDistances}`) !== count) {
55
+ throw new Error("Exact core-distance computation returned missing or non-finite values.");
56
+ }
57
+ const root = await (0, readScalarNumber_js_1.default)(connection, `SELECT min(vertex) FROM ${names.rows}`);
58
+ await connection.run(`CREATE OR REPLACE TEMP TABLE ${names.frontier} AS
59
+ SELECT b.vertex,${root}::INTEGER AS parent,
60
+ greatest(ca.distance,cb.distance,${distance})::DOUBLE AS distance
61
+ FROM ${names.rows} a CROSS JOIN ${names.rows} b
62
+ JOIN ${names.coreDistances} ca ON ca.vertex=a.vertex
63
+ JOIN ${names.coreDistances} cb ON cb.vertex=b.vertex
64
+ WHERE a.vertex=${root} AND b.vertex!=${root};
65
+ CREATE OR REPLACE TEMP TABLE ${names.mst}
66
+ (source INTEGER,target INTEGER,distance DOUBLE)`);
67
+ for (let edge = 0; edge < count - 1; edge++) {
68
+ const chosen = (await connection.runAndReadAll(`SELECT vertex,parent,distance FROM ${names.frontier}
69
+ ORDER BY distance,least(parent,vertex),greatest(parent,vertex),parent,vertex
70
+ LIMIT 1`)).getRowsJS()[0];
71
+ if (chosen === undefined) {
72
+ throw new Error("Exact mutual-reachability graph became disconnected.");
73
+ }
74
+ const vertex = Number(chosen[0]);
75
+ const parent = Number(chosen[1]);
76
+ const edgeDistance = Number(chosen[2]);
77
+ if (!Number.isFinite(edgeDistance)) {
78
+ throw new Error("Exact mutual-reachability MST returned a non-finite distance.");
79
+ }
80
+ await connection.run(`INSERT INTO ${names.mst} VALUES
81
+ (${Math.min(vertex, parent)},${Math.max(vertex, parent)},${edgeDistance})`);
82
+ if (edge === count - 2)
83
+ break;
84
+ const candidateDistance = (0, vectorDistanceExpression_js_1.default)("added.vec", "target.vec", options.metric);
85
+ await connection.run(`CREATE OR REPLACE TEMP TABLE ${names.frontier} AS
86
+ WITH candidates AS (
87
+ SELECT f.*,greatest(ca.distance,cb.distance,${candidateDistance})::DOUBLE
88
+ AS candidate_distance
89
+ FROM ${names.frontier} f
90
+ JOIN ${names.rows} target ON target.vertex=f.vertex
91
+ CROSS JOIN ${names.rows} added
92
+ JOIN ${names.coreDistances} ca ON ca.vertex=added.vertex
93
+ JOIN ${names.coreDistances} cb ON cb.vertex=target.vertex
94
+ WHERE added.vertex=${vertex} AND f.vertex!=${vertex}
95
+ )
96
+ SELECT vertex,
97
+ CASE WHEN candidate_distance<distance OR
98
+ (candidate_distance=distance AND ${vertex}<parent)
99
+ THEN ${vertex} ELSE parent END::INTEGER AS parent,
100
+ least(distance,candidate_distance)::DOUBLE AS distance
101
+ FROM candidates`);
102
+ }
103
+ }
@@ -0,0 +1,12 @@
1
+ import type { PreparedGraphTemporalSql } from "./prepareGraphTemporalSql.js";
2
+ import type { GraphDirection, PreparedGraphSql } from "./prepareGraphTraversal.js";
3
+ export type GraphTemporalCostStateSql = {
4
+ costRelation: string;
5
+ edgesRelation: string;
6
+ settingsRelation: string;
7
+ startsRelation: string;
8
+ withClause: string;
9
+ };
10
+ /** Builds keyed best-cost chronological states from an arbitrary start relation. */
11
+ export default function buildGraphTemporalCostStateSql(prepared: PreparedGraphSql, startsSelect: string | ((validEdgesRelation: string) => string), direction: Exclude<GraphDirection, "both">, temporal: PreparedGraphTemporalSql, distanceType: string, edgeWeight: string, eventSelections?: string[]): GraphTemporalCostStateSql;
12
+ //# sourceMappingURL=buildGraphTemporalCostStateSql.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"buildGraphTemporalCostStateSql.d.ts","sourceRoot":"","sources":["../../src/helpers/buildGraphTemporalCostStateSql.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,wBAAwB,EAAE,MAAM,8BAA8B,CAAC;AAC7E,OAAO,KAAK,EACV,cAAc,EACd,gBAAgB,EACjB,MAAM,4BAA4B,CAAC;AAGpC,MAAM,MAAM,yBAAyB,GAAG;IACtC,YAAY,EAAE,MAAM,CAAC;IACrB,aAAa,EAAE,MAAM,CAAC;IACtB,gBAAgB,EAAE,MAAM,CAAC;IACzB,cAAc,EAAE,MAAM,CAAC;IACvB,UAAU,EAAE,MAAM,CAAC;CACpB,CAAC;AAEF,oFAAoF;AACpF,MAAM,CAAC,OAAO,UAAU,8BAA8B,CACpD,QAAQ,EAAE,gBAAgB,EAC1B,YAAY,EAAE,MAAM,GAAG,CAAC,CAAC,kBAAkB,EAAE,MAAM,KAAK,MAAM,CAAC,EAC/D,SAAS,EAAE,OAAO,CAAC,cAAc,EAAE,MAAM,CAAC,EAC1C,QAAQ,EAAE,wBAAwB,EAClC,YAAY,EAAE,MAAM,EACpB,UAAU,EAAE,MAAM,EAClB,eAAe,GAAE,MAAM,EAAO,GAC7B,yBAAyB,CAuF3B"}