@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,147 @@
1
+ import buildChronologicalGraphComponentsSql from "../helpers/buildChronologicalGraphComponentsSql.js";
2
+ import buildWeakGraphComponentsSql from "../helpers/buildWeakGraphComponentsSql.js";
3
+ import getGraphEndpointColumns from "../helpers/getGraphEndpointColumns.js";
4
+ import prepareGraphTemporalSql, { prepareGraphTemporalOptions, } from "../helpers/prepareGraphTemporalSql.js";
5
+ import { prepareGraphSql } from "../helpers/prepareGraphTraversal.js";
6
+ import queueGraphResult from "../helpers/queueGraphResult.js";
7
+ import quoteIdentifier from "../helpers/quoteIdentifier.js";
8
+ import validateGraphTemporalEvents from "../helpers/validateGraphTemporalEvents.js";
9
+ export default function connectedComponents(simpleTable, sourceColumn, targetColumn, options = {}) {
10
+ if (typeof sourceColumn !== "string") {
11
+ throw new TypeError("connectedComponents() sourceColumn must be a string.");
12
+ }
13
+ if (typeof targetColumn !== "string") {
14
+ throw new TypeError("connectedComponents() targetColumn must be a string.");
15
+ }
16
+ if (options === null || typeof options !== "object" || Array.isArray(options)) {
17
+ throw new TypeError("connectedComponents() options must be an object.");
18
+ }
19
+ if (options.mode !== undefined &&
20
+ !["weak", "strong"].includes(options.mode)) {
21
+ throw new TypeError('connectedComponents() options.mode must be "weak" or "strong".');
22
+ }
23
+ if (options.outputTable !== undefined &&
24
+ typeof options.outputTable !== "string" &&
25
+ typeof options.outputTable !== "boolean") {
26
+ throw new TypeError("connectedComponents() options.outputTable must be a string or boolean.");
27
+ }
28
+ const temporalOptions = prepareGraphTemporalOptions(options, undefined, "connectedComponents()");
29
+ if (temporalOptions !== undefined && options.mode !== "strong") {
30
+ throw new TypeError('connectedComponents() chronological options require options.mode to be explicitly set to "strong".');
31
+ }
32
+ options = structuredClone(options);
33
+ const mode = options.mode ?? "weak";
34
+ const parameters = { sourceColumn, targetColumn, options };
35
+ return queueGraphResult(simpleTable, {
36
+ method: "connectedComponents()",
37
+ parameters,
38
+ outputTable: options.outputTable,
39
+ preflight: temporalOptions === undefined
40
+ ? undefined
41
+ : (input) => validateGraphTemporalEvents(input, temporalOptions, "connectedComponents()", parameters),
42
+ values: (schema) => {
43
+ const temporal = validateInputs(schema, sourceColumn, targetColumn, temporalOptions).temporal;
44
+ return temporal === undefined ? [] : [temporal.gapParameter];
45
+ },
46
+ buildSelect: (input, schema) => connectedComponentsSelect(input, schema, sourceColumn, targetColumn, mode, temporalOptions),
47
+ outputSchema: (schema) => ({
48
+ componentId: "BIGINT",
49
+ node: validateInputs(schema, sourceColumn, targetColumn, temporalOptions).endpoints.idType,
50
+ }),
51
+ });
52
+ }
53
+ function validateEndpoints(schema, source, target) {
54
+ return getGraphEndpointColumns(schema, source, target, "connectedComponents()");
55
+ }
56
+ function validateInputs(schema, source, target, temporalOptions) {
57
+ const endpoints = validateEndpoints(schema, source, target);
58
+ const temporal = temporalOptions === undefined
59
+ ? undefined
60
+ : prepareGraphTemporalSql(schema, temporalOptions, "connectedComponents()");
61
+ return { endpoints, temporal };
62
+ }
63
+ function connectedComponentsSelect(input, schema, source, target, mode, temporalOptions) {
64
+ const prepared = prepareGraphSql(input, schema, source, target, "connectedComponents()");
65
+ if (temporalOptions !== undefined) {
66
+ return buildChronologicalGraphComponentsSql(prepared, prepareGraphTemporalSql(schema, temporalOptions, "connectedComponents()"));
67
+ }
68
+ const relationNames = mode === "weak"
69
+ ? [
70
+ "graph_edges",
71
+ "graph_nodes",
72
+ "graph_component_labels",
73
+ "graph_component_roots",
74
+ ]
75
+ : [
76
+ "graph_edges",
77
+ "graph_nodes",
78
+ "graph_reachable",
79
+ "graph_component_members",
80
+ "graph_component_roots",
81
+ ];
82
+ const relations = prepared.relationNames(relationNames);
83
+ const edges = relations.graph_edges;
84
+ const nodes = relations.graph_nodes;
85
+ const roots = relations.graph_component_roots;
86
+ const q = quoteIdentifier;
87
+ const common = `${edges} AS (
88
+ ${prepared.edges(mode === "weak" ? "both" : "outgoing")}
89
+ ), ${nodes} AS (
90
+ SELECT ${q("__from")} AS ${q("node")},
91
+ ${q("__from_key")} AS ${q("__key")}
92
+ FROM ${edges}
93
+ UNION
94
+ SELECT ${q("__to")} AS ${q("node")},
95
+ ${q("__to_key")} AS ${q("__key")}
96
+ FROM ${edges}
97
+ )`;
98
+ if (mode === "weak") {
99
+ const labels = relations.graph_component_labels;
100
+ return `WITH RECURSIVE ${common}, ${buildWeakGraphComponentsSql(edges, nodes, labels, roots)}
101
+ SELECT ${q("roots")}.${q("componentId")}, ${q("labels")}.${q("node")}
102
+ FROM ${labels} AS ${q("labels")}
103
+ INNER JOIN ${roots} AS ${q("roots")}
104
+ ON ${q("labels")}.${q("__root_key")} =
105
+ ${q("roots")}.${q("__root_key")}
106
+ ORDER BY ${q("labels")}.${q("__node_key")}`;
107
+ }
108
+ const reachable = relations.graph_reachable;
109
+ const members = relations.graph_component_members;
110
+ return `WITH RECURSIVE ${common}, ${reachable}(
111
+ ${q("__start_key")}, ${q("__node_key")}
112
+ ) AS (
113
+ SELECT ${q("__key")}, ${q("__key")} FROM ${nodes}
114
+ UNION
115
+ SELECT ${q("reached")}.${q("__start_key")},
116
+ ${q("edges")}.${q("__to_key")}
117
+ FROM ${reachable} AS ${q("reached")}
118
+ INNER JOIN ${edges} AS ${q("edges")}
119
+ ON ${q("reached")}.${q("__node_key")} =
120
+ ${q("edges")}.${q("__from_key")}
121
+ ), ${members} AS (
122
+ SELECT ${q("nodes")}.${q("node")}, ${q("nodes")}.${q("__key")},
123
+ MIN(${q("forward")}.${q("__start_key")}) AS ${q("__root_key")}
124
+ FROM ${nodes} AS ${q("nodes")}
125
+ INNER JOIN ${reachable} AS ${q("forward")}
126
+ ON ${q("nodes")}.${q("__key")} =
127
+ ${q("forward")}.${q("__node_key")}
128
+ INNER JOIN ${reachable} AS ${q("reverse")}
129
+ ON ${q("forward")}.${q("__start_key")} =
130
+ ${q("reverse")}.${q("__node_key")}
131
+ AND ${q("nodes")}.${q("__key")} =
132
+ ${q("reverse")}.${q("__start_key")}
133
+ GROUP BY ${q("nodes")}.${q("node")}, ${q("nodes")}.${q("__key")}
134
+ ), ${roots} AS (
135
+ SELECT ${q("__root_key")},
136
+ CAST(row_number() OVER (ORDER BY ${q("__root_key")}) - 1 AS BIGINT)
137
+ AS ${q("componentId")}
138
+ FROM (SELECT DISTINCT ${q("__root_key")} FROM ${members})
139
+ AS ${q("distinct_roots")}
140
+ )
141
+ SELECT ${q("roots")}.${q("componentId")}, ${q("members")}.${q("node")}
142
+ FROM ${members} AS ${q("members")}
143
+ INNER JOIN ${roots} AS ${q("roots")}
144
+ ON ${q("members")}.${q("__root_key")} =
145
+ ${q("roots")}.${q("__root_key")}
146
+ ORDER BY ${q("members")}.${q("__key")}`;
147
+ }
@@ -0,0 +1,9 @@
1
+ import type SimpleTable from "../class/SimpleTable.js";
2
+ type DegreeOptions = {
3
+ count?: "edges" | "neighbors";
4
+ weight?: string;
5
+ outputTable?: string | boolean;
6
+ };
7
+ export default function degree(simpleTable: SimpleTable, sourceColumn: string, targetColumn: string, options?: DegreeOptions): SimpleTable;
8
+ export {};
9
+ //# sourceMappingURL=degree.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"degree.d.ts","sourceRoot":"","sources":["../../src/methods/degree.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,WAAW,MAAM,yBAAyB,CAAC;AAQvD,KAAK,aAAa,GAAG;IACnB,KAAK,CAAC,EAAE,OAAO,GAAG,WAAW,CAAC;IAC9B,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,WAAW,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC;CAChC,CAAC;AAEF,MAAM,CAAC,OAAO,UAAU,MAAM,CAC5B,WAAW,EAAE,WAAW,EACxB,YAAY,EAAE,MAAM,EACpB,YAAY,EAAE,MAAM,EACpB,OAAO,GAAE,aAAkB,GAC1B,WAAW,CAoEb"}
@@ -0,0 +1,135 @@
1
+ import getGraphEndpointColumns from "../helpers/getGraphEndpointColumns.js";
2
+ import getGraphWeightColumn from "../helpers/getGraphWeightColumn.js";
3
+ import { prepareGraphSql } from "../helpers/prepareGraphTraversal.js";
4
+ import queueGraphResult from "../helpers/queueGraphResult.js";
5
+ import quoteIdentifier from "../helpers/quoteIdentifier.js";
6
+ export default function degree(simpleTable, sourceColumn, targetColumn, options = {}) {
7
+ if (typeof sourceColumn !== "string") {
8
+ throw new TypeError("degree() sourceColumn must be a string.");
9
+ }
10
+ if (typeof targetColumn !== "string") {
11
+ throw new TypeError("degree() targetColumn must be a string.");
12
+ }
13
+ if (options === null || typeof options !== "object" || Array.isArray(options)) {
14
+ throw new TypeError("degree() options must be an object.");
15
+ }
16
+ if (options.count !== undefined &&
17
+ !["edges", "neighbors"].includes(options.count)) {
18
+ throw new TypeError('degree() options.count must be "edges" or "neighbors".');
19
+ }
20
+ if (options.weight !== undefined && typeof options.weight !== "string") {
21
+ throw new TypeError("degree() options.weight must be a string.");
22
+ }
23
+ if (options.outputTable !== undefined &&
24
+ typeof options.outputTable !== "string" &&
25
+ typeof options.outputTable !== "boolean") {
26
+ throw new TypeError("degree() options.outputTable must be a string or boolean.");
27
+ }
28
+ if (options.weight !== undefined && options.count === "neighbors") {
29
+ throw new TypeError('degree() options.weight cannot be combined with count: "neighbors" because weighted sums operate on edges, not distinct neighbors.');
30
+ }
31
+ options = structuredClone(options);
32
+ const count = options.count ?? "edges";
33
+ const weight = options.weight;
34
+ const parameters = { sourceColumn, targetColumn, options };
35
+ return queueGraphResult(simpleTable, {
36
+ method: "degree()",
37
+ parameters,
38
+ outputTable: options.outputTable,
39
+ values: (schema) => {
40
+ validateInputs(schema, sourceColumn, targetColumn, weight);
41
+ return [];
42
+ },
43
+ buildSelect: (input, schema) => degreeSelect(input, schema, sourceColumn, targetColumn, count, weight),
44
+ outputSchema: (schema) => {
45
+ const validated = validateInputs(schema, sourceColumn, targetColumn, weight);
46
+ return {
47
+ node: validated.idType,
48
+ incoming: validated.degreeType,
49
+ outgoing: validated.degreeType,
50
+ total: validated.degreeType,
51
+ };
52
+ },
53
+ });
54
+ }
55
+ function validateInputs(schema, source, target, weight) {
56
+ const endpoints = getGraphEndpointColumns(schema, source, target, "degree()");
57
+ const degreeType = weight === undefined
58
+ ? "BIGINT"
59
+ : sumType(getGraphWeightColumn(schema, weight, "degree()").distanceType);
60
+ return { idType: endpoints.idType, degreeType };
61
+ }
62
+ function sumType(type) {
63
+ // DuckDB SUM widens FLOAT to DOUBLE; retain that aggregate precision.
64
+ return type === "FLOAT" ? "DOUBLE" : type;
65
+ }
66
+ function degreeSelect(input, schema, source, target, count, weight) {
67
+ const prepared = prepareGraphSql(input, schema, source, target, "degree()");
68
+ const weightColumn = weight === undefined
69
+ ? undefined
70
+ : getGraphWeightColumn(schema, weight, "degree()");
71
+ const degreeType = sumType(weightColumn?.distanceType ?? "BIGINT");
72
+ const relations = prepared.relationNames([
73
+ "graph_edges",
74
+ "graph_node_candidates",
75
+ "graph_nodes",
76
+ "graph_incoming",
77
+ "graph_outgoing",
78
+ ]);
79
+ const edges = relations.graph_edges;
80
+ const candidates = relations.graph_node_candidates;
81
+ const nodes = relations.graph_nodes;
82
+ const incoming = relations.graph_incoming;
83
+ const outgoing = relations.graph_outgoing;
84
+ const q = quoteIdentifier;
85
+ const edgeWeight = weightColumn === undefined
86
+ ? undefined
87
+ : `CAST(${q("edges")}.${q(weightColumn.column)} AS ${degreeType}) AS ${q("__weight")}`;
88
+ const aggregate = (direction) => {
89
+ const neighborKey = direction === "incoming" ? "__from_key" : "__to_key";
90
+ if (edgeWeight !== undefined) {
91
+ return `CAST(SUM(${q("__weight")}) AS ${degreeType})`;
92
+ }
93
+ return count === "neighbors"
94
+ ? `COUNT(DISTINCT ${q(neighborKey)})`
95
+ : "COUNT(*)";
96
+ };
97
+ const zero = `CAST(0 AS ${degreeType})`;
98
+ const incomingDegree = `COALESCE(${q("incoming")}.${q("incoming")}, ${zero})`;
99
+ const outgoingDegree = `COALESCE(${q("outgoing")}.${q("outgoing")}, ${zero})`;
100
+ return `WITH ${edges} AS (
101
+ ${prepared.edges("outgoing", edgeWeight === undefined ? [] : [edgeWeight])}
102
+ ), ${candidates} AS (
103
+ SELECT ${q("__from")} AS ${q("node")},
104
+ ${q("__from_key")} AS ${q("__key")}
105
+ FROM ${edges}
106
+ UNION ALL
107
+ SELECT ${q("__to")} AS ${q("node")},
108
+ ${q("__to_key")} AS ${q("__key")}
109
+ FROM ${edges}
110
+ ), ${nodes} AS (
111
+ SELECT MIN(${q("node")}) AS ${q("node")}, ${q("__key")}
112
+ FROM ${candidates}
113
+ GROUP BY ${q("__key")}
114
+ ), ${incoming} AS (
115
+ SELECT ${q("__to_key")} AS ${q("__key")},
116
+ ${aggregate("incoming")} AS ${q("incoming")}
117
+ FROM ${edges}
118
+ GROUP BY ${q("__to_key")}
119
+ ), ${outgoing} AS (
120
+ SELECT ${q("__from_key")} AS ${q("__key")},
121
+ ${aggregate("outgoing")} AS ${q("outgoing")}
122
+ FROM ${edges}
123
+ GROUP BY ${q("__from_key")}
124
+ )
125
+ SELECT ${q("nodes")}.${q("node")},
126
+ ${incomingDegree} AS ${q("incoming")},
127
+ ${outgoingDegree} AS ${q("outgoing")},
128
+ CAST(${incomingDegree} + ${outgoingDegree} AS ${degreeType}) AS ${q("total")}
129
+ FROM ${nodes} AS ${q("nodes")}
130
+ LEFT JOIN ${incoming} AS ${q("incoming")}
131
+ ON ${q("nodes")}.${q("__key")} = ${q("incoming")}.${q("__key")}
132
+ LEFT JOIN ${outgoing} AS ${q("outgoing")}
133
+ ON ${q("nodes")}.${q("__key")} = ${q("outgoing")}.${q("__key")}
134
+ ORDER BY ${q("total")} DESC, ${q("nodes")}.${q("__key")}`;
135
+ }
@@ -0,0 +1,12 @@
1
+ import type SimpleTable from "../class/SimpleTable.js";
2
+ import { type GraphTemporalOptions } from "../helpers/prepareGraphTemporalSql.js";
3
+ import { type GraphId } from "../helpers/prepareGraphStarts.js";
4
+ import { type GraphDirection } from "../helpers/prepareGraphTraversal.js";
5
+ type DistancesOptions = GraphTemporalOptions & {
6
+ direction?: GraphDirection;
7
+ outputTable?: string | boolean;
8
+ weight?: string;
9
+ };
10
+ export default function distances(simpleTable: SimpleTable, sourceColumn: string, targetColumn: string, startNodes: GraphId | GraphId[], options?: DistancesOptions): SimpleTable;
11
+ export {};
12
+ //# sourceMappingURL=distances.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"distances.d.ts","sourceRoot":"","sources":["../../src/methods/distances.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,WAAW,MAAM,yBAAyB,CAAC;AAIvD,OAAgC,EAC9B,KAAK,oBAAoB,EAG1B,MAAM,uCAAuC,CAAC;AAC/C,OAA2B,EACzB,KAAK,OAAO,EAEb,MAAM,kCAAkC,CAAC;AAC1C,OAA8B,EAC5B,KAAK,cAAc,EAEpB,MAAM,qCAAqC,CAAC;AAK7C,KAAK,gBAAgB,GAAG,oBAAoB,GAAG;IAC7C,SAAS,CAAC,EAAE,cAAc,CAAC;IAC3B,WAAW,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC;IAC/B,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB,CAAC;AAEF,MAAM,CAAC,OAAO,UAAU,SAAS,CAC/B,WAAW,EAAE,WAAW,EACxB,YAAY,EAAE,MAAM,EACpB,YAAY,EAAE,MAAM,EACpB,UAAU,EAAE,OAAO,GAAG,OAAO,EAAE,EAC/B,OAAO,GAAE,gBAAqB,GAC7B,WAAW,CAyGb"}
@@ -0,0 +1,164 @@
1
+ import buildGraphTemporalCostStateSql from "../helpers/buildGraphTemporalCostStateSql.js";
2
+ import getGraphWeightColumn from "../helpers/getGraphWeightColumn.js";
3
+ import prepareGraphTemporalSql, { prepareGraphTemporalOptions, } from "../helpers/prepareGraphTemporalSql.js";
4
+ import prepareGraphStarts from "../helpers/prepareGraphStarts.js";
5
+ import prepareGraphTraversal, { validateGraphStarts, } from "../helpers/prepareGraphTraversal.js";
6
+ import queueGraphResult from "../helpers/queueGraphResult.js";
7
+ import quoteIdentifier from "../helpers/quoteIdentifier.js";
8
+ import validateGraphTemporalEvents from "../helpers/validateGraphTemporalEvents.js";
9
+ export default function distances(simpleTable, sourceColumn, targetColumn, startNodes, options = {}) {
10
+ if (typeof sourceColumn !== "string") {
11
+ throw new TypeError("distances() sourceColumn must be a string.");
12
+ }
13
+ if (typeof targetColumn !== "string") {
14
+ throw new TypeError("distances() targetColumn must be a string.");
15
+ }
16
+ if (options === null || typeof options !== "object" || Array.isArray(options)) {
17
+ throw new TypeError("distances() options must be an object.");
18
+ }
19
+ if (options.direction !== undefined &&
20
+ !["outgoing", "incoming", "both"].includes(options.direction)) {
21
+ throw new TypeError('distances() options.direction must be "outgoing", "incoming", or "both".');
22
+ }
23
+ if (options.weight !== undefined && typeof options.weight !== "string") {
24
+ throw new TypeError("distances() options.weight must be a string.");
25
+ }
26
+ if (options.outputTable !== undefined &&
27
+ typeof options.outputTable !== "string" &&
28
+ typeof options.outputTable !== "boolean") {
29
+ throw new TypeError("distances() options.outputTable must be a string or boolean.");
30
+ }
31
+ const preparedStarts = prepareGraphStarts(startNodes, "distances()", "startNodes");
32
+ const direction = options.direction ?? "outgoing";
33
+ const temporalOptions = prepareGraphTemporalOptions(options, direction, "distances()");
34
+ options = structuredClone(options);
35
+ const parameters = {
36
+ sourceColumn,
37
+ targetColumn,
38
+ startNodes: structuredClone(startNodes),
39
+ options,
40
+ };
41
+ return queueGraphResult(simpleTable, {
42
+ method: "distances()",
43
+ parameters,
44
+ outputTable: options.outputTable,
45
+ preflight: temporalOptions === undefined
46
+ ? undefined
47
+ : (input) => validateGraphTemporalEvents(input, temporalOptions, "distances()", parameters),
48
+ values: (schema) => {
49
+ const { temporal } = validateDistanceInputs(schema, sourceColumn, targetColumn, preparedStarts, options.weight, temporalOptions);
50
+ return temporal === undefined
51
+ ? preparedStarts.values
52
+ : [temporal.gapParameter, ...preparedStarts.values];
53
+ },
54
+ buildSelect: (input, schema) => distancesSelect(input, schema, sourceColumn, targetColumn, preparedStarts, direction, options.weight, temporalOptions),
55
+ outputSchema: (schema) => {
56
+ const validated = validateDistanceInputs(schema, sourceColumn, targetColumn, preparedStarts, options.weight, temporalOptions);
57
+ return {
58
+ start: validated.idType,
59
+ node: validated.idType,
60
+ distance: validated.distanceType,
61
+ };
62
+ },
63
+ });
64
+ }
65
+ function validateDistanceInputs(schema, source, target, starts, weight, temporalOptions) {
66
+ const endpoints = validateGraphStarts(schema, source, target, starts, "distances()", "startNodes");
67
+ const distanceType = weight === undefined
68
+ ? "BIGINT"
69
+ : getGraphWeightColumn(schema, weight, "distances()").distanceType;
70
+ const temporal = temporalOptions === undefined
71
+ ? undefined
72
+ : prepareGraphTemporalSql(schema, temporalOptions, "distances()");
73
+ return { idType: endpoints.idType, distanceType, temporal };
74
+ }
75
+ function distancesSelect(input, schema, source, target, starts, direction, weight, temporalOptions) {
76
+ const prepared = prepareGraphTraversal(input, schema, source, target, starts, "distances()", "startNodes");
77
+ const weightColumn = weight === undefined
78
+ ? undefined
79
+ : getGraphWeightColumn(schema, weight, "distances()");
80
+ const distanceType = weightColumn?.distanceType ?? "BIGINT";
81
+ const edgeWeight = weightColumn === undefined
82
+ ? `CAST(1 AS ${distanceType})`
83
+ : `CAST(${quoteIdentifier("edges")}.${quoteIdentifier(weightColumn.column)} AS ${distanceType})`;
84
+ if (temporalOptions !== undefined) {
85
+ const temporal = prepareGraphTemporalSql(schema, temporalOptions, "distances()");
86
+ return temporalDistancesSelect(prepared, direction, temporal, distanceType, edgeWeight);
87
+ }
88
+ const relations = prepared.relationNames([
89
+ "graph_start_values",
90
+ "graph_starts",
91
+ "graph_edges",
92
+ "graph_distances",
93
+ ]);
94
+ const startValuesRelation = relations.graph_start_values;
95
+ const startsRelation = relations.graph_starts;
96
+ const edgesRelation = relations.graph_edges;
97
+ const distancesRelation = relations.graph_distances;
98
+ const start = `${quoteIdentifier("starts")}.${quoteIdentifier("start")}`;
99
+ const startKey = `${quoteIdentifier("starts")}.${quoteIdentifier("__key")}`;
100
+ const reachedStart = `${quoteIdentifier("reached")}.${quoteIdentifier("start")}`;
101
+ const reachedStartKey = `${quoteIdentifier("reached")}.${quoteIdentifier("__start_key")}`;
102
+ const reachedNodeKey = `${quoteIdentifier("reached")}.${quoteIdentifier("__node_key")}`;
103
+ const reachedDistance = `${quoteIdentifier("reached")}.${quoteIdentifier("distance")}`;
104
+ const edgeTo = `${quoteIdentifier("edges")}.${quoteIdentifier("__to")}`;
105
+ const edgeToKey = `${quoteIdentifier("edges")}.${quoteIdentifier("__to_key")}`;
106
+ const edgeFromKey = `${quoteIdentifier("edges")}.${quoteIdentifier("__from_key")}`;
107
+ const edgeCost = `${quoteIdentifier("edges")}.${quoteIdentifier("__weight")}`;
108
+ const bestDistance = `${quoteIdentifier("best")}.${quoteIdentifier("distance")}`;
109
+ const candidateDistance = `CAST(${reachedDistance} + ${edgeCost} AS ${distanceType})`;
110
+ return `WITH RECURSIVE ${startValuesRelation}(${quoteIdentifier("start")}) AS (
111
+ VALUES ${prepared.startValues}
112
+ ), ${startsRelation} AS (
113
+ SELECT ${quoteIdentifier("start")},
114
+ ${prepared.key(quoteIdentifier("start"))} AS ${quoteIdentifier("__key")}
115
+ FROM ${startValuesRelation}
116
+ ), ${edgesRelation} AS (
117
+ ${prepared.edges(direction, [
118
+ `${edgeWeight} AS ${quoteIdentifier("__weight")}`,
119
+ ])}
120
+ ), ${distancesRelation}(
121
+ ${quoteIdentifier("start")}, ${quoteIdentifier("node")},
122
+ ${quoteIdentifier("__start_key")}, ${quoteIdentifier("__node_key")},
123
+ ${quoteIdentifier("distance")}
124
+ ) USING KEY(
125
+ ${quoteIdentifier("__start_key")}, ${quoteIdentifier("__node_key")}
126
+ ) AS (
127
+ SELECT ${start}, ${edgeTo}, ${startKey}, ${edgeToKey},
128
+ MIN(${edgeCost}) AS ${quoteIdentifier("distance")}
129
+ FROM ${startsRelation} AS ${quoteIdentifier("starts")}
130
+ INNER JOIN ${edgesRelation} AS ${quoteIdentifier("edges")}
131
+ ON ${startKey} = ${edgeFromKey}
132
+ GROUP BY ${start}, ${edgeTo}, ${startKey}, ${edgeToKey}
133
+ UNION
134
+ SELECT ${reachedStart}, ${edgeTo}, ${reachedStartKey}, ${edgeToKey},
135
+ MIN(${candidateDistance}) AS ${quoteIdentifier("distance")}
136
+ FROM ${distancesRelation} AS ${quoteIdentifier("reached")}
137
+ INNER JOIN ${edgesRelation} AS ${quoteIdentifier("edges")}
138
+ ON ${reachedNodeKey} = ${edgeFromKey}
139
+ LEFT JOIN recurring.${distancesRelation} AS ${quoteIdentifier("best")}
140
+ ON ${reachedStartKey} = ${quoteIdentifier("best")}.${quoteIdentifier("__start_key")}
141
+ AND ${edgeToKey} = ${quoteIdentifier("best")}.${quoteIdentifier("__node_key")}
142
+ GROUP BY ${reachedStart}, ${edgeTo}, ${reachedStartKey}, ${edgeToKey},
143
+ ${bestDistance}
144
+ HAVING ${bestDistance} IS NULL OR MIN(${candidateDistance}) < ${bestDistance}
145
+ )
146
+ SELECT ${quoteIdentifier("start")}, ${quoteIdentifier("node")},
147
+ ${quoteIdentifier("distance")}
148
+ FROM ${distancesRelation}
149
+ ORDER BY ${quoteIdentifier("__start_key")}, ${quoteIdentifier("distance")}, ${quoteIdentifier("__node_key")}`;
150
+ }
151
+ function temporalDistancesSelect(prepared, direction, temporal, distanceType, edgeWeight) {
152
+ const q = quoteIdentifier;
153
+ const startsSelect = `SELECT ${q("start")},
154
+ ${prepared.key(q("start"))} AS ${q("__key")}
155
+ FROM (VALUES ${prepared.startValues}) AS ${q("start_values")}(${q("start")})`;
156
+ const costStates = buildGraphTemporalCostStateSql(prepared, startsSelect, direction, temporal, distanceType, edgeWeight);
157
+ return `${costStates.withClause}
158
+ SELECT ${q("start")}, ${q("node")},
159
+ MIN(${q("distance")}) AS ${q("distance")}
160
+ FROM ${costStates.costRelation}
161
+ GROUP BY ${q("start")}, ${q("node")}, ${q("__start_key")},
162
+ ${q("__node_key")}
163
+ ORDER BY ${q("__start_key")}, ${q("distance")}, ${q("__node_key")}`;
164
+ }
@@ -0,0 +1,12 @@
1
+ import type SimpleTable from "../class/SimpleTable.js";
2
+ import { type GraphTemporalOptions } from "../helpers/prepareGraphTemporalSql.js";
3
+ import { type GraphId } from "../helpers/prepareGraphStarts.js";
4
+ import { type GraphDirection } from "../helpers/prepareGraphTraversal.js";
5
+ type FindCyclesOptions = GraphTemporalOptions & {
6
+ direction?: GraphDirection;
7
+ outputTable?: string | boolean;
8
+ weight?: string;
9
+ };
10
+ export default function findCycles(simpleTable: SimpleTable, sourceColumn: string, targetColumn: string, edgeId: string, startNodes: GraphId | GraphId[], options?: FindCyclesOptions): SimpleTable;
11
+ export {};
12
+ //# sourceMappingURL=findCycles.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"findCycles.d.ts","sourceRoot":"","sources":["../../src/methods/findCycles.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,WAAW,MAAM,yBAAyB,CAAC;AAMvD,OAAgC,EAC9B,KAAK,oBAAoB,EAG1B,MAAM,uCAAuC,CAAC;AAC/C,OAA2B,EACzB,KAAK,OAAO,EAEb,MAAM,kCAAkC,CAAC;AAC1C,OAA8B,EAC5B,KAAK,cAAc,EAEpB,MAAM,qCAAqC,CAAC;AAM7C,KAAK,iBAAiB,GAAG,oBAAoB,GAAG;IAC9C,SAAS,CAAC,EAAE,cAAc,CAAC;IAC3B,WAAW,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC;IAC/B,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB,CAAC;AAEF,MAAM,CAAC,OAAO,UAAU,UAAU,CAChC,WAAW,EAAE,WAAW,EACxB,YAAY,EAAE,MAAM,EACpB,YAAY,EAAE,MAAM,EACpB,MAAM,EAAE,MAAM,EACd,UAAU,EAAE,OAAO,GAAG,OAAO,EAAE,EAC/B,OAAO,GAAE,iBAAsB,GAC9B,WAAW,CAuHb"}