@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,34 @@
1
+ import readScalarNumber from "./readScalarNumber.js";
2
+ /**
3
+ * Stabilizes cosine arithmetic in a caller-owned private vector relation.
4
+ * The already-quoted relation has unique vertex ids and a fixed-size DOUBLE
5
+ * vec column. Source data must be retained separately by the caller.
6
+ *
7
+ * Safe vectors keep their existing arithmetic and tie behavior. Outside the
8
+ * safe range, divide by the largest absolute component, then by the resulting
9
+ * length. This preserves direction without overflowing or underflowing norms.
10
+ * The bounds keep squared-norm products between 1e-300 and 1e300, with room
11
+ * for rounding. Only the private vec column changes; no scratch tables remain.
12
+ */
13
+ export default async function stabilizeCosineVectors(connection, rows) {
14
+ if (await readScalarNumber(connection, `SELECT count(*) FROM ${rows} WHERE vec IS NULL
15
+ OR len(vec)=0 OR list_count(vec)!=len(vec)
16
+ OR NOT list_bool_and(list_transform(vec, value -> isfinite(value)))
17
+ OR list_max(list_transform(vec, value -> abs(value)))=0`)) {
18
+ throw new Error("Cosine distance requires finite, non-null values and nonzero vectors.");
19
+ }
20
+ await connection.run(`WITH magnitudes AS MATERIALIZED (
21
+ SELECT vertex,vec,list_max(list_transform(vec, value -> abs(value))) AS magnitude
22
+ FROM ${rows}
23
+ ), scaled AS MATERIALIZED (
24
+ SELECT vertex,list_transform(vec, value -> value / magnitude) AS vec
25
+ FROM magnitudes
26
+ WHERE magnitude < 1e-75 OR magnitude > 1e75 / sqrt(len(vec))
27
+ ), lengths AS MATERIALIZED (
28
+ SELECT vertex,vec,sqrt(list_sum(list_transform(vec, value -> value * value))) AS norm
29
+ FROM scaled
30
+ )
31
+ UPDATE ${rows} AS target SET vec=cast_to_type(
32
+ list_transform(lengths.vec, value -> value / lengths.norm),target.vec)
33
+ FROM lengths WHERE target.vertex=lengths.vertex`);
34
+ }
@@ -2,15 +2,16 @@
2
2
  * Normalizes a string or array of strings to a new array.
3
3
  * Existing arrays are copied so callers can change the result independently.
4
4
  *
5
- * @param argument - One string or an array of strings.
6
- * @returns A new array containing the supplied strings.
7
- *
8
5
  * @example
9
6
  * ```ts
10
7
  * import { stringToArray } from "@nshiab/simple-data-analysis-core/helpers";
11
8
  * console.log(stringToArray("name")); // ["name"]
12
9
  * console.log(stringToArray(["name", "age"])); // ["name", "age"]
13
10
  * ```
11
+ *
12
+ * @param argument - One string or an array of strings.
13
+ *
14
+ * @returns A new array containing the supplied strings.
14
15
  */
15
16
  export default function stringToArray(argument: string | string[]): string[];
16
17
  //# sourceMappingURL=stringToArray.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"stringToArray.d.ts","sourceRoot":"","sources":["../../src/helpers/stringToArray.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AACH,MAAM,CAAC,OAAO,UAAU,aAAa,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,EAAE,GAAG,MAAM,EAAE,CAQ3E"}
1
+ {"version":3,"file":"stringToArray.d.ts","sourceRoot":"","sources":["../../src/helpers/stringToArray.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AACH,MAAM,CAAC,OAAO,UAAU,aAAa,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,EAAE,GAAG,MAAM,EAAE,CAQ3E"}
@@ -2,15 +2,16 @@
2
2
  * Normalizes a string or array of strings to a new array.
3
3
  * Existing arrays are copied so callers can change the result independently.
4
4
  *
5
- * @param argument - One string or an array of strings.
6
- * @returns A new array containing the supplied strings.
7
- *
8
5
  * @example
9
6
  * ```ts
10
7
  * import { stringToArray } from "@nshiab/simple-data-analysis-core/helpers";
11
8
  * console.log(stringToArray("name")); // ["name"]
12
9
  * console.log(stringToArray(["name", "age"])); // ["name", "age"]
13
10
  * ```
11
+ *
12
+ * @param argument - One string or an array of strings.
13
+ *
14
+ * @returns A new array containing the supplied strings.
14
15
  */
15
16
  export default function stringToArray(argument) {
16
17
  if (Array.isArray(argument)) {
@@ -18,12 +18,6 @@ import type SimpleTable from "../class/SimpleTable.js";
18
18
  * inputs or overwritten as outputs; use updateWithJS() for editable GeoJSON.
19
19
  * This SQL-only preservation path accepts any source CRS.
20
20
  *
21
- * @param table - Table to enrich.
22
- * @param inputColumns - Columns available to the callback.
23
- * @param outputColumns - Generated columns to add or replace.
24
- * @param generate - Produces one result per input row, in input order.
25
- * @param options - Controls the maximum rows read, generated, and staged at once.
26
- * @returns Resolves after merging the generated columns into the table.
27
21
  * @example
28
22
  * ```ts
29
23
  * queueAsyncBarrier(table, {
@@ -35,6 +29,18 @@ import type SimpleTable from "../class/SimpleTable.js";
35
29
  * });
36
30
  * await table.log();
37
31
  * ```
32
+ *
33
+ * @param table - Table to enrich.
34
+ *
35
+ * @param inputColumns - Columns available to the callback.
36
+ *
37
+ * @param outputColumns - Generated columns to add or replace.
38
+ *
39
+ * @param generate - Produces one result per input row, in input order.
40
+ *
41
+ * @param options - Controls the maximum rows read, generated, and staged at once.
42
+ *
43
+ * @returns Resolves after merging the generated columns into the table.
38
44
  */
39
45
  export default function updateColumnsWithJS(table: SimpleTable, inputColumns: string[], outputColumns: string[], generate: (rows: {
40
46
  [key: string]: unknown;
@@ -1 +1 @@
1
- {"version":3,"file":"updateColumnsWithJS.d.ts","sourceRoot":"","sources":["../../src/helpers/updateColumnsWithJS.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,WAAW,MAAM,yBAAyB,CAAC;AAMvD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAoCG;AACH,wBAA8B,mBAAmB,CAC/C,KAAK,EAAE,WAAW,EAClB,YAAY,EAAE,MAAM,EAAE,EACtB,aAAa,EAAE,MAAM,EAAE,EACvB,QAAQ,EAAE,CACR,IAAI,EAAE;IAAE,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAA;CAAE,EAAE,KAC/B,OAAO,CAAC;IAAE,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAA;CAAE,EAAE,CAAC,EAC1C,OAAO,GAAE;IACP;;;;;OAKG;IACH,SAAS,CAAC,EAAE,MAAM,CAAC;CACf,GACL,OAAO,CAAC,IAAI,CAAC,CAoJf"}
1
+ {"version":3,"file":"updateColumnsWithJS.d.ts","sourceRoot":"","sources":["../../src/helpers/updateColumnsWithJS.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,WAAW,MAAM,yBAAyB,CAAC;AAMvD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA0CG;AACH,wBAA8B,mBAAmB,CAC/C,KAAK,EAAE,WAAW,EAClB,YAAY,EAAE,MAAM,EAAE,EACtB,aAAa,EAAE,MAAM,EAAE,EACvB,QAAQ,EAAE,CACR,IAAI,EAAE;IAAE,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAA;CAAE,EAAE,KAC/B,OAAO,CAAC;IAAE,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAA;CAAE,EAAE,CAAC,EAC1C,OAAO,GAAE;IACP;;;;;OAKG;IACH,SAAS,CAAC,EAAE,MAAM,CAAC;CACf,GACL,OAAO,CAAC,IAAI,CAAC,CAoJf"}
@@ -21,12 +21,6 @@ import { executePreparedArray, prepareArray } from "../methods/loadArray.js";
21
21
  * inputs or overwritten as outputs; use updateWithJS() for editable GeoJSON.
22
22
  * This SQL-only preservation path accepts any source CRS.
23
23
  *
24
- * @param table - Table to enrich.
25
- * @param inputColumns - Columns available to the callback.
26
- * @param outputColumns - Generated columns to add or replace.
27
- * @param generate - Produces one result per input row, in input order.
28
- * @param options - Controls the maximum rows read, generated, and staged at once.
29
- * @returns Resolves after merging the generated columns into the table.
30
24
  * @example
31
25
  * ```ts
32
26
  * queueAsyncBarrier(table, {
@@ -38,6 +32,18 @@ import { executePreparedArray, prepareArray } from "../methods/loadArray.js";
38
32
  * });
39
33
  * await table.log();
40
34
  * ```
35
+ *
36
+ * @param table - Table to enrich.
37
+ *
38
+ * @param inputColumns - Columns available to the callback.
39
+ *
40
+ * @param outputColumns - Generated columns to add or replace.
41
+ *
42
+ * @param generate - Produces one result per input row, in input order.
43
+ *
44
+ * @param options - Controls the maximum rows read, generated, and staged at once.
45
+ *
46
+ * @returns Resolves after merging the generated columns into the table.
41
47
  */
42
48
  export default async function updateColumnsWithJS(table, inputColumns, outputColumns, generate, options = {}) {
43
49
  const batchSize = options.batchSize ?? 1000;
@@ -0,0 +1,4 @@
1
+ import type { TableSchema } from "./pendingOps.js";
2
+ /** Validates that route result columns do not replace original input columns. */
3
+ export default function validateGraphRouteResultSchema(schema: TableSchema, method: string, additionalResultColumns?: readonly string[]): void;
4
+ //# sourceMappingURL=validateGraphRouteResultSchema.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"validateGraphRouteResultSchema.d.ts","sourceRoot":"","sources":["../../src/helpers/validateGraphRouteResultSchema.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAC;AAKnD,iFAAiF;AACjF,MAAM,CAAC,OAAO,UAAU,8BAA8B,CACpD,MAAM,EAAE,WAAW,EACnB,MAAM,EAAE,MAAM,EACd,uBAAuB,GAAE,SAAS,MAAM,EAAO,GAC9C,IAAI,CAkBN"}
@@ -0,0 +1,13 @@
1
+ import foldIdentifier from "./foldIdentifier.js";
2
+ import quoteIdentifier from "./quoteIdentifier.js";
3
+ const resultColumns = ["pathId", "step", "weight", "total"];
4
+ /** Validates that route result columns do not replace original input columns. */
5
+ export default function validateGraphRouteResultSchema(schema, method, additionalResultColumns = []) {
6
+ for (const resultColumn of [...resultColumns, ...additionalResultColumns]) {
7
+ const folded = foldIdentifier(resultColumn);
8
+ const inputColumn = Object.keys(schema).find((column) => foldIdentifier(column) === folded);
9
+ if (inputColumn !== undefined) {
10
+ throw new Error(`${method} cannot add ${quoteIdentifier(resultColumn)} because input column ${quoteIdentifier(inputColumn)} conflicts with that result column. Rename ${quoteIdentifier(inputColumn)} with renameColumns() before calculating the graph.`);
11
+ }
12
+ }
13
+ }
@@ -0,0 +1,7 @@
1
+ import type SimpleTable from "../class/SimpleTable.js";
2
+ import { type PreparedGraphTemporalOptions } from "./prepareGraphTemporalSql.js";
3
+ /** Rejects invalid selected timestamps before a chronological graph runs. */
4
+ export default function validateGraphTemporalEvents(simpleTable: SimpleTable, options: PreparedGraphTemporalOptions, method: string, parameters: {
5
+ [key: string]: unknown;
6
+ }): Promise<void>;
7
+ //# sourceMappingURL=validateGraphTemporalEvents.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"validateGraphTemporalEvents.d.ts","sourceRoot":"","sources":["../../src/helpers/validateGraphTemporalEvents.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,WAAW,MAAM,yBAAyB,CAAC;AAEvD,OAAgC,EAC9B,KAAK,4BAA4B,EAClC,MAAM,8BAA8B,CAAC;AAItC,6EAA6E;AAC7E,wBAA8B,2BAA2B,CACvD,WAAW,EAAE,WAAW,EACxB,OAAO,EAAE,4BAA4B,EACrC,MAAM,EAAE,MAAM,EACd,UAAU,EAAE;IAAE,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAA;CAAE,GACrC,OAAO,CAAC,IAAI,CAAC,CAiDf"}
@@ -0,0 +1,47 @@
1
+ import mergeOptions from "./mergeOptions.js";
2
+ import prepareGraphTemporalSql from "./prepareGraphTemporalSql.js";
3
+ import queryDB from "./queryDB.js";
4
+ import quoteIdentifier from "./quoteIdentifier.js";
5
+ /** Rejects invalid selected timestamps before a chronological graph runs. */
6
+ export default async function validateGraphTemporalEvents(simpleTable, options, method, parameters) {
7
+ const schema = await simpleTable.getTypes();
8
+ const temporal = prepareGraphTemporalSql(schema, options, method);
9
+ const q = quoteIdentifier;
10
+ const eventsName = "__graph_temporal_events";
11
+ const events = q(eventsName);
12
+ const eventStart = `${events}.${q("__event_start")}`;
13
+ const eventEnd = `${events}.${q("__event_end")}`;
14
+ const rows = await queryDB(simpleTable, `SELECT CASE
15
+ WHEN ${eventStart} IS NULL THEN 1
16
+ WHEN ${eventEnd} IS NULL THEN 2
17
+ WHEN NOT isfinite(${eventStart}) THEN 3
18
+ WHEN NOT isfinite(${eventEnd}) THEN 4
19
+ ELSE 5
20
+ END AS ${q("reason")}
21
+ FROM (
22
+ SELECT ${temporal.eventSelections().join(", ")}
23
+ FROM ${q(simpleTable.name)}
24
+ ) AS ${events}
25
+ WHERE (${temporal.eventValidity(eventsName)}) IS NOT TRUE
26
+ LIMIT 1`, mergeOptions(simpleTable, {
27
+ table: simpleTable.name,
28
+ method,
29
+ parameters,
30
+ returnData: true,
31
+ }));
32
+ const reason = rows?.[0]?.reason;
33
+ if (reason === undefined)
34
+ return;
35
+ const startColumn = temporal.startTimeColumn ?? temporal.endTimeColumn;
36
+ const endColumn = temporal.endTimeColumn ?? temporal.startTimeColumn;
37
+ const message = reason === 1
38
+ ? `selected start-time column ${q(startColumn)} contains a null timestamp.`
39
+ : reason === 2
40
+ ? `selected end-time column ${q(endColumn)} contains a null timestamp.`
41
+ : reason === 3
42
+ ? `selected start-time column ${q(startColumn)} contains an infinite timestamp.`
43
+ : reason === 4
44
+ ? `selected end-time column ${q(endColumn)} contains an infinite timestamp.`
45
+ : `selected end-time column ${q(endColumn)} contains a timestamp before its start in ${q(startColumn)}.`;
46
+ throw new TypeError(`${method} ${message}`);
47
+ }
@@ -2,12 +2,6 @@ import type { TableSchema } from "./pendingOps.js";
2
2
  /**
3
3
  * Validates the column options shared by numerical pair analyses.
4
4
  *
5
- * @param types - The schema of the table being analyzed.
6
- * @param options - The optional x and y columns selected by the caller.
7
- * @param method - The SDA method performing the analysis.
8
- * @param tableName - The name of the table being analyzed.
9
- * @returns All numeric columns in the table schema.
10
- *
11
5
  * @example
12
6
  * ```ts
13
7
  * const columns = validateNumericalAnalysis(
@@ -17,6 +11,16 @@ import type { TableSchema } from "./pendingOps.js";
17
11
  * "measurements",
18
12
  * );
19
13
  * ```
14
+ *
15
+ * @param types - The schema of the table being analyzed.
16
+ *
17
+ * @param options - The optional x and y columns selected by the caller.
18
+ *
19
+ * @param method - The SDA method performing the analysis.
20
+ *
21
+ * @param tableName - The name of the table being analyzed.
22
+ *
23
+ * @returns All numeric columns in the table schema.
20
24
  */
21
25
  export default function validateNumericalAnalysis(types: TableSchema, options: {
22
26
  x?: string;
@@ -1 +1 @@
1
- {"version":3,"file":"validateNumericalAnalysis.d.ts","sourceRoot":"","sources":["../../src/helpers/validateNumericalAnalysis.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAC;AAEnD;;;;;;;;;;;;;;;;;;GAkBG;AACH,MAAM,CAAC,OAAO,UAAU,yBAAyB,CAC/C,KAAK,EAAE,WAAW,EAClB,OAAO,EAAE;IAAE,CAAC,CAAC,EAAE,MAAM,CAAC;IAAC,CAAC,CAAC,EAAE,MAAM,CAAA;CAAE,EACnC,MAAM,EAAE,MAAM,EACd,SAAS,EAAE,MAAM,GAChB,MAAM,EAAE,CAoDV"}
1
+ {"version":3,"file":"validateNumericalAnalysis.d.ts","sourceRoot":"","sources":["../../src/helpers/validateNumericalAnalysis.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAC;AAEnD;;;;;;;;;;;;;;;;;;;;;;GAsBG;AACH,MAAM,CAAC,OAAO,UAAU,yBAAyB,CAC/C,KAAK,EAAE,WAAW,EAClB,OAAO,EAAE;IAAE,CAAC,CAAC,EAAE,MAAM,CAAC;IAAC,CAAC,CAAC,EAAE,MAAM,CAAA;CAAE,EACnC,MAAM,EAAE,MAAM,EACd,SAAS,EAAE,MAAM,GAChB,MAAM,EAAE,CAoDV"}
@@ -3,12 +3,6 @@ import keepNumericalColumns from "./keepNumericalColumns.js";
3
3
  /**
4
4
  * Validates the column options shared by numerical pair analyses.
5
5
  *
6
- * @param types - The schema of the table being analyzed.
7
- * @param options - The optional x and y columns selected by the caller.
8
- * @param method - The SDA method performing the analysis.
9
- * @param tableName - The name of the table being analyzed.
10
- * @returns All numeric columns in the table schema.
11
- *
12
6
  * @example
13
7
  * ```ts
14
8
  * const columns = validateNumericalAnalysis(
@@ -18,6 +12,16 @@ import keepNumericalColumns from "./keepNumericalColumns.js";
18
12
  * "measurements",
19
13
  * );
20
14
  * ```
15
+ *
16
+ * @param types - The schema of the table being analyzed.
17
+ *
18
+ * @param options - The optional x and y columns selected by the caller.
19
+ *
20
+ * @param method - The SDA method performing the analysis.
21
+ *
22
+ * @param tableName - The name of the table being analyzed.
23
+ *
24
+ * @returns All numeric columns in the table schema.
21
25
  */
22
26
  export default function validateNumericalAnalysis(types, options, method, tableName) {
23
27
  if (options.x === undefined && options.y !== undefined) {
@@ -0,0 +1,4 @@
1
+ import type { DuckDBConnection } from "@duckdb/node-api";
2
+ /** Validate the positional identity contract before bounded vector scans. */
3
+ export default function validateVectorRowIds(connection: DuckDBConnection, rows: string, count: number): Promise<void>;
4
+ //# sourceMappingURL=validateVectorRowIds.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"validateVectorRowIds.d.ts","sourceRoot":"","sources":["../../src/helpers/validateVectorRowIds.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,kBAAkB,CAAC;AAEzD,6EAA6E;AAC7E,wBAA8B,oBAAoB,CAChD,UAAU,EAAE,gBAAgB,EAC5B,IAAI,EAAE,MAAM,EACZ,KAAK,EAAE,MAAM,GACZ,OAAO,CAAC,IAAI,CAAC,CAuBf"}
@@ -0,0 +1,16 @@
1
+ /** Validate the positional identity contract before bounded vector scans. */
2
+ export default async function validateVectorRowIds(connection, rows, count) {
3
+ // Graph state and DuckDB scratch schemas use signed INTEGER vertex ids.
4
+ if (!Number.isSafeInteger(count) || count < 1 || count > 2147483647) {
5
+ throw new Error("Vector row count must fit a positive INTEGER vertex count.");
6
+ }
7
+ const [actual, distinct, minimum, maximum, invalid] = (await connection.runAndReadAll(`SELECT count(*),count(DISTINCT vertex),
8
+ min(vertex),max(vertex),count(*) FILTER (
9
+ WHERE vertex IS NULL OR vertex!=trunc(vertex)) FROM ${rows}`))
10
+ .getRowsJS()[0];
11
+ if (Number(actual) !== count || Number(distinct) !== count ||
12
+ Number(minimum) !== 0 || Number(maximum) !== count - 1 ||
13
+ Number(invalid) !== 0) {
14
+ throw new Error(`Vector rows must contain exactly ${count} unique integer vertex ids from 0 to ${count - 1}.`);
15
+ }
16
+ }
@@ -0,0 +1,6 @@
1
+ /**
2
+ * Build a DOUBLE-precision distance expression for prepared vector aliases.
3
+ * Cosine callers first stabilize their private rows with stabilizeCosineVectors.
4
+ */
5
+ export default function vectorDistanceExpression(left: string, right: string, metric: "euclidean" | "cosine"): string;
6
+ //# sourceMappingURL=vectorDistanceExpression.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"vectorDistanceExpression.d.ts","sourceRoot":"","sources":["../../src/helpers/vectorDistanceExpression.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,MAAM,CAAC,OAAO,UAAU,wBAAwB,CAC9C,IAAI,EAAE,MAAM,EACZ,KAAK,EAAE,MAAM,EACb,MAAM,EAAE,WAAW,GAAG,QAAQ,GAC7B,MAAM,CAKR"}
@@ -0,0 +1,11 @@
1
+ /**
2
+ * Build a DOUBLE-precision distance expression for prepared vector aliases.
3
+ * Cosine callers first stabilize their private rows with stabilizeCosineVectors.
4
+ */
5
+ export default function vectorDistanceExpression(left, right, metric) {
6
+ if (metric === "euclidean")
7
+ return `array_distance(${left},${right})`;
8
+ // DuckDB can return tiny positive or negative errors for equal/cosine-aligned
9
+ // vectors. Exact equality also makes duplicate behavior deterministic.
10
+ return `CASE WHEN ${left}=${right} THEN 0 ELSE greatest(0,array_cosine_distance(${left},${right})) END`;
11
+ }
@@ -4,13 +4,6 @@
4
4
  * will be broken at the character boundary. This function is primarily used
5
5
  * for preparing text to be displayed in console tables.
6
6
  *
7
- * @param str - The string to wrap.
8
- * @param maxWidth - The maximum width of each line.
9
- * @param wordWrap - If true, attempts to break at word boundaries. If false,
10
- * breaks at character boundaries. Defaults to `true`.
11
- * @returns The wrapped string with newline characters inserted at appropriate
12
- * positions.
13
- *
14
7
  * @example
15
8
  * ```typescript
16
9
  * const text = "This is a very long sentence that needs to be wrapped";
@@ -30,6 +23,16 @@
30
23
  * // Output: Thisisaver
31
24
  * // ylongword
32
25
  * ```
26
+ *
27
+ * @param str - The string to wrap.
28
+ *
29
+ * @param maxWidth - The maximum width of each line.
30
+ *
31
+ * @param wordWrap - If true, attempts to break at word boundaries. If false,
32
+ * breaks at character boundaries. Defaults to `true`.
33
+ *
34
+ * @returns The wrapped string with newline characters inserted at appropriate
35
+ * positions.
33
36
  */
34
37
  export default function wrapString(str: string, maxWidth: number, wordWrap?: boolean): string;
35
38
  //# sourceMappingURL=wrapString.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"wrapString.d.ts","sourceRoot":"","sources":["../../src/helpers/wrapString.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAgCG;AACH,MAAM,CAAC,OAAO,UAAU,UAAU,CAChC,GAAG,EAAE,MAAM,EACX,QAAQ,EAAE,MAAM,EAChB,QAAQ,UAAO,GACd,MAAM,CAqDR"}
1
+ {"version":3,"file":"wrapString.d.ts","sourceRoot":"","sources":["../../src/helpers/wrapString.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAmCG;AACH,MAAM,CAAC,OAAO,UAAU,UAAU,CAChC,GAAG,EAAE,MAAM,EACX,QAAQ,EAAE,MAAM,EAChB,QAAQ,UAAO,GACd,MAAM,CAqDR"}
@@ -4,13 +4,6 @@
4
4
  * will be broken at the character boundary. This function is primarily used
5
5
  * for preparing text to be displayed in console tables.
6
6
  *
7
- * @param str - The string to wrap.
8
- * @param maxWidth - The maximum width of each line.
9
- * @param wordWrap - If true, attempts to break at word boundaries. If false,
10
- * breaks at character boundaries. Defaults to `true`.
11
- * @returns The wrapped string with newline characters inserted at appropriate
12
- * positions.
13
- *
14
7
  * @example
15
8
  * ```typescript
16
9
  * const text = "This is a very long sentence that needs to be wrapped";
@@ -30,6 +23,16 @@
30
23
  * // Output: Thisisaver
31
24
  * // ylongword
32
25
  * ```
26
+ *
27
+ * @param str - The string to wrap.
28
+ *
29
+ * @param maxWidth - The maximum width of each line.
30
+ *
31
+ * @param wordWrap - If true, attempts to break at word boundaries. If false,
32
+ * breaks at character boundaries. Defaults to `true`.
33
+ *
34
+ * @returns The wrapped string with newline characters inserted at appropriate
35
+ * positions.
33
36
  */
34
37
  export default function wrapString(str, maxWidth, wordWrap = true) {
35
38
  if (str.length <= maxWidth) {
@@ -0,0 +1,5 @@
1
+ import type SimpleTable from "../class/SimpleTable.js";
2
+ export default function addId(simpleTable: SimpleTable, newColumn: string, options?: {
3
+ prefix?: string;
4
+ }): void;
5
+ //# sourceMappingURL=addId.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"addId.d.ts","sourceRoot":"","sources":["../../src/methods/addId.ts"],"names":[],"mappings":"AAMA,OAAO,KAAK,WAAW,MAAM,yBAAyB,CAAC;AAEvD,MAAM,CAAC,OAAO,UAAU,KAAK,CAC3B,WAAW,EAAE,WAAW,EACxB,SAAS,EAAE,MAAM,EACjB,OAAO,GAAE;IAAE,MAAM,CAAC,EAAE,MAAM,CAAA;CAAO,QAgDlC"}
@@ -0,0 +1,38 @@
1
+ import assertNewColumns from "../helpers/assertNewColumns.js";
2
+ import foldIdentifier from "../helpers/foldIdentifier.js";
3
+ import mergeOptions from "../helpers/mergeOptions.js";
4
+ import queryDB from "../helpers/queryDB.js";
5
+ import queueOp from "../helpers/queueOp.js";
6
+ import quoteIdentifier from "../helpers/quoteIdentifier.js";
7
+ export default function addId(simpleTable, newColumn, options = {}) {
8
+ if (typeof newColumn !== "string") {
9
+ throw new TypeError("addId() newColumn must be a string.");
10
+ }
11
+ if (options.prefix !== undefined && typeof options.prefix !== "string") {
12
+ throw new TypeError("addId() options.prefix must be a string.");
13
+ }
14
+ // Materialize preceding operations so IDs follow their resulting row order.
15
+ options = structuredClone(options);
16
+ queueOp(simpleTable, {
17
+ kind: "barrier",
18
+ method: "addId()",
19
+ parameters: { newColumn, options },
20
+ execute: async () => {
21
+ const types = await simpleTable.getTypes();
22
+ const existingColumn = Object.keys(types).find((column) => foldIdentifier(column) === foldIdentifier(newColumn));
23
+ assertNewColumns(types, [existingColumn ?? newColumn], "addId()");
24
+ // An empty window preserves scan order without referencing rowid, which
25
+ // may be shadowed by a user column.
26
+ const rowNumber = "(ROW_NUMBER() OVER () - 1)";
27
+ const id = options.prefix === undefined
28
+ ? rowNumber
29
+ : `CONCAT(?, CAST(${rowNumber} AS VARCHAR))`;
30
+ await queryDB(simpleTable, `CREATE OR REPLACE TABLE ${quoteIdentifier(simpleTable.name)} AS SELECT *, ${id} AS ${quoteIdentifier(newColumn)} FROM ${quoteIdentifier(simpleTable.name)}`, mergeOptions(simpleTable, {
31
+ table: simpleTable.name,
32
+ method: "addId()",
33
+ parameters: { newColumn, options },
34
+ values: options.prefix === undefined ? undefined : [options.prefix],
35
+ }));
36
+ },
37
+ });
38
+ }
@@ -0,0 +1,10 @@
1
+ import type SimpleTable from "../class/SimpleTable.js";
2
+ import { type GraphId } from "../helpers/prepareGraphStarts.js";
3
+ import { type GraphDirection } from "../helpers/prepareGraphTraversal.js";
4
+ type CommonNeighborsOptions = {
5
+ direction?: GraphDirection;
6
+ outputTable?: string | boolean;
7
+ };
8
+ export default function commonNeighbors(simpleTable: SimpleTable, sourceColumn: string, targetColumn: string, nodeA: GraphId, nodeB: GraphId, options?: CommonNeighborsOptions): SimpleTable;
9
+ export {};
10
+ //# sourceMappingURL=commonNeighbors.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"commonNeighbors.d.ts","sourceRoot":"","sources":["../../src/methods/commonNeighbors.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,WAAW,MAAM,yBAAyB,CAAC;AAEvD,OAA2B,EACzB,KAAK,OAAO,EAEb,MAAM,kCAAkC,CAAC;AAC1C,OAA8B,EAC5B,KAAK,cAAc,EAEpB,MAAM,qCAAqC,CAAC;AAI7C,KAAK,sBAAsB,GAAG;IAC5B,SAAS,CAAC,EAAE,cAAc,CAAC;IAC3B,WAAW,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC;CAChC,CAAC;AAEF,MAAM,CAAC,OAAO,UAAU,eAAe,CACrC,WAAW,EAAE,WAAW,EACxB,YAAY,EAAE,MAAM,EACpB,YAAY,EAAE,MAAM,EACpB,KAAK,EAAE,OAAO,EACd,KAAK,EAAE,OAAO,EACd,OAAO,GAAE,sBAA2B,GACnC,WAAW,CAwDb"}
@@ -0,0 +1,101 @@
1
+ import prepareGraphStarts from "../helpers/prepareGraphStarts.js";
2
+ import prepareGraphTraversal, { validateGraphStarts, } from "../helpers/prepareGraphTraversal.js";
3
+ import queueGraphResult from "../helpers/queueGraphResult.js";
4
+ import quoteIdentifier from "../helpers/quoteIdentifier.js";
5
+ export default function commonNeighbors(simpleTable, sourceColumn, targetColumn, nodeA, nodeB, options = {}) {
6
+ if (typeof sourceColumn !== "string") {
7
+ throw new TypeError("commonNeighbors() sourceColumn must be a string.");
8
+ }
9
+ if (typeof targetColumn !== "string") {
10
+ throw new TypeError("commonNeighbors() targetColumn must be a string.");
11
+ }
12
+ if (options === null || typeof options !== "object" || Array.isArray(options)) {
13
+ throw new TypeError("commonNeighbors() options must be an object.");
14
+ }
15
+ if (options.direction !== undefined &&
16
+ !["outgoing", "incoming", "both"].includes(options.direction)) {
17
+ throw new TypeError('commonNeighbors() options.direction must be "outgoing", "incoming", or "both".');
18
+ }
19
+ if (options.outputTable !== undefined &&
20
+ typeof options.outputTable !== "string" &&
21
+ typeof options.outputTable !== "boolean") {
22
+ throw new TypeError("commonNeighbors() options.outputTable must be a string or boolean.");
23
+ }
24
+ const nodes = prepareNodes(nodeA, nodeB);
25
+ options = structuredClone(options);
26
+ const direction = options.direction ?? "outgoing";
27
+ const parameters = { sourceColumn, targetColumn, nodeA, nodeB, options };
28
+ return queueGraphResult(simpleTable, {
29
+ method: "commonNeighbors()",
30
+ parameters,
31
+ outputTable: options.outputTable,
32
+ values: (schema) => {
33
+ validateNodes(schema, sourceColumn, targetColumn, nodes);
34
+ return nodes.values;
35
+ },
36
+ buildSelect: (input, schema) => commonNeighborsSelect(input, schema, sourceColumn, targetColumn, nodes, direction),
37
+ outputSchema: (schema) => ({
38
+ node: validateNodes(schema, sourceColumn, targetColumn, nodes).idType,
39
+ }),
40
+ });
41
+ }
42
+ function prepareNodes(nodeA, nodeB) {
43
+ if (Array.isArray(nodeA)) {
44
+ throw new TypeError("commonNeighbors() nodeA must be one node ID.");
45
+ }
46
+ if (Array.isArray(nodeB)) {
47
+ throw new TypeError("commonNeighbors() nodeB must be one node ID.");
48
+ }
49
+ const first = prepareGraphStarts(nodeA, "commonNeighbors()", "nodeA", true);
50
+ const second = prepareGraphStarts(nodeB, "commonNeighbors()", "nodeB", true);
51
+ if (first.family !== second.family) {
52
+ throw new TypeError("commonNeighbors() nodeA and nodeB must both be string IDs or both be numeric IDs.");
53
+ }
54
+ if (first.values[0] === second.values[0]) {
55
+ throw new TypeError("commonNeighbors() nodeA and nodeB must be different.");
56
+ }
57
+ return {
58
+ family: first.family,
59
+ numericValues: [...first.numericValues, ...second.numericValues],
60
+ values: [first.values[0], second.values[0]],
61
+ };
62
+ }
63
+ function validateNodes(schema, source, target, nodes) {
64
+ return validateGraphStarts(schema, source, target, nodes, "commonNeighbors()", "nodeA and nodeB");
65
+ }
66
+ function commonNeighborsSelect(input, schema, source, target, nodes, direction) {
67
+ const prepared = prepareGraphTraversal(input, schema, source, target, nodes, "commonNeighbors()", "nodeA and nodeB");
68
+ const relations = prepared.relationNames([
69
+ "graph_requested_nodes",
70
+ "graph_edges",
71
+ "graph_neighbor_memberships",
72
+ "graph_common_neighbors",
73
+ ]);
74
+ const requested = relations.graph_requested_nodes;
75
+ const edges = relations.graph_edges;
76
+ const memberships = relations.graph_neighbor_memberships;
77
+ const common = relations.graph_common_neighbors;
78
+ const q = quoteIdentifier;
79
+ return `WITH ${requested}(${q("node")}) AS (
80
+ VALUES ${prepared.startValues}
81
+ ), ${edges} AS (
82
+ ${prepared.edges(direction)}
83
+ ), ${memberships} AS (
84
+ SELECT ${q("requested")}.${q("node")} AS ${q("requested_node")},
85
+ ${q("edges")}.${q("__from_key")} AS ${q("__requested_key")},
86
+ ${q("edges")}.${q("__to")} AS ${q("node")},
87
+ ${q("edges")}.${q("__to_key")} AS ${q("__node_key")}
88
+ FROM ${edges} AS ${q("edges")}
89
+ INNER JOIN ${requested} AS ${q("requested")}
90
+ ON ${q("edges")}.${q("__from_key")} =
91
+ ${prepared.key(`${q("requested")}.${q("node")}`)}
92
+ ), ${common} AS (
93
+ SELECT MIN(${q("node")}) AS ${q("node")}, ${q("__node_key")}
94
+ FROM ${memberships}
95
+ GROUP BY ${q("__node_key")}
96
+ HAVING COUNT(DISTINCT ${q("__requested_key")}) = 2
97
+ )
98
+ SELECT ${q("node")}
99
+ FROM ${common}
100
+ ORDER BY ${q("__node_key")}`;
101
+ }
@@ -0,0 +1,9 @@
1
+ import type SimpleTable from "../class/SimpleTable.js";
2
+ import { type GraphTemporalOptions } from "../helpers/prepareGraphTemporalSql.js";
3
+ type ConnectedComponentsOptions = GraphTemporalOptions & {
4
+ mode?: "weak" | "strong";
5
+ outputTable?: string | boolean;
6
+ };
7
+ export default function connectedComponents(simpleTable: SimpleTable, sourceColumn: string, targetColumn: string, options?: ConnectedComponentsOptions): SimpleTable;
8
+ export {};
9
+ //# sourceMappingURL=connectedComponents.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"connectedComponents.d.ts","sourceRoot":"","sources":["../../src/methods/connectedComponents.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,WAAW,MAAM,yBAAyB,CAAC;AAGvD,OAAgC,EAC9B,KAAK,oBAAoB,EAG1B,MAAM,uCAAuC,CAAC;AAM/C,KAAK,0BAA0B,GAAG,oBAAoB,GAAG;IACvD,IAAI,CAAC,EAAE,MAAM,GAAG,QAAQ,CAAC;IACzB,WAAW,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC;CAChC,CAAC;AAEF,MAAM,CAAC,OAAO,UAAU,mBAAmB,CACzC,WAAW,EAAE,WAAW,EACxB,YAAY,EAAE,MAAM,EACpB,YAAY,EAAE,MAAM,EACpB,OAAO,GAAE,0BAA+B,GACvC,WAAW,CAqFb"}