@terascope/data-mate 2.24.0 → 2.25.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 (759) hide show
  1. package/bin/duckdb-extensions.js +8 -0
  2. package/dist/src/adapters/index.d.ts +1 -0
  3. package/dist/src/adapters/index.d.ts.map +1 -1
  4. package/dist/src/adapters/index.js +1 -0
  5. package/dist/src/adapters/index.js.map +1 -1
  6. package/dist/src/adapters/teal-frame-adapter/index.d.ts +62 -0
  7. package/dist/src/adapters/teal-frame-adapter/index.d.ts.map +1 -0
  8. package/dist/src/adapters/teal-frame-adapter/index.js +427 -0
  9. package/dist/src/adapters/teal-frame-adapter/index.js.map +1 -0
  10. package/dist/src/core/utils.d.ts +1 -1
  11. package/dist/src/core/utils.d.ts.map +1 -1
  12. package/dist/src/core/utils.js.map +1 -1
  13. package/dist/src/function-configs/boolean/isBoolean.d.ts.map +1 -1
  14. package/dist/src/function-configs/boolean/isBoolean.js +11 -0
  15. package/dist/src/function-configs/boolean/isBoolean.js.map +1 -1
  16. package/dist/src/function-configs/boolean/isBooleanLike.d.ts.map +1 -1
  17. package/dist/src/function-configs/boolean/isBooleanLike.js +21 -0
  18. package/dist/src/function-configs/boolean/isBooleanLike.js.map +1 -1
  19. package/dist/src/function-configs/boolean/sql-utils.d.ts +31 -0
  20. package/dist/src/function-configs/boolean/sql-utils.d.ts.map +1 -0
  21. package/dist/src/function-configs/boolean/sql-utils.js +52 -0
  22. package/dist/src/function-configs/boolean/sql-utils.js.map +1 -0
  23. package/dist/src/function-configs/boolean/toBoolean.d.ts.map +1 -1
  24. package/dist/src/function-configs/boolean/toBoolean.js +20 -0
  25. package/dist/src/function-configs/boolean/toBoolean.js.map +1 -1
  26. package/dist/src/function-configs/date/addToDate.d.ts.map +1 -1
  27. package/dist/src/function-configs/date/addToDate.js +13 -0
  28. package/dist/src/function-configs/date/addToDate.js.map +1 -1
  29. package/dist/src/function-configs/date/formatDate.d.ts.map +1 -1
  30. package/dist/src/function-configs/date/formatDate.js +29 -0
  31. package/dist/src/function-configs/date/formatDate.js.map +1 -1
  32. package/dist/src/function-configs/date/getDate.d.ts.map +1 -1
  33. package/dist/src/function-configs/date/getDate.js +13 -0
  34. package/dist/src/function-configs/date/getDate.js.map +1 -1
  35. package/dist/src/function-configs/date/getHours.d.ts.map +1 -1
  36. package/dist/src/function-configs/date/getHours.js +13 -0
  37. package/dist/src/function-configs/date/getHours.js.map +1 -1
  38. package/dist/src/function-configs/date/getMilliseconds.d.ts.map +1 -1
  39. package/dist/src/function-configs/date/getMilliseconds.js +16 -0
  40. package/dist/src/function-configs/date/getMilliseconds.js.map +1 -1
  41. package/dist/src/function-configs/date/getMinutes.d.ts.map +1 -1
  42. package/dist/src/function-configs/date/getMinutes.js +13 -0
  43. package/dist/src/function-configs/date/getMinutes.js.map +1 -1
  44. package/dist/src/function-configs/date/getMonth.d.ts.map +1 -1
  45. package/dist/src/function-configs/date/getMonth.js +16 -0
  46. package/dist/src/function-configs/date/getMonth.js.map +1 -1
  47. package/dist/src/function-configs/date/getSeconds.d.ts.map +1 -1
  48. package/dist/src/function-configs/date/getSeconds.js +13 -0
  49. package/dist/src/function-configs/date/getSeconds.js.map +1 -1
  50. package/dist/src/function-configs/date/getTimeBetween.d.ts.map +1 -1
  51. package/dist/src/function-configs/date/getTimeBetween.js +13 -0
  52. package/dist/src/function-configs/date/getTimeBetween.js.map +1 -1
  53. package/dist/src/function-configs/date/getTimezoneOffset.d.ts.map +1 -1
  54. package/dist/src/function-configs/date/getTimezoneOffset.js +12 -0
  55. package/dist/src/function-configs/date/getTimezoneOffset.js.map +1 -1
  56. package/dist/src/function-configs/date/getUTCDate.d.ts.map +1 -1
  57. package/dist/src/function-configs/date/getUTCDate.js +14 -0
  58. package/dist/src/function-configs/date/getUTCDate.js.map +1 -1
  59. package/dist/src/function-configs/date/getUTCHours.d.ts.map +1 -1
  60. package/dist/src/function-configs/date/getUTCHours.js +14 -0
  61. package/dist/src/function-configs/date/getUTCHours.js.map +1 -1
  62. package/dist/src/function-configs/date/getUTCMinutes.d.ts.map +1 -1
  63. package/dist/src/function-configs/date/getUTCMinutes.js +14 -0
  64. package/dist/src/function-configs/date/getUTCMinutes.js.map +1 -1
  65. package/dist/src/function-configs/date/getUTCMonth.d.ts.map +1 -1
  66. package/dist/src/function-configs/date/getUTCMonth.js +16 -0
  67. package/dist/src/function-configs/date/getUTCMonth.js.map +1 -1
  68. package/dist/src/function-configs/date/getUTCYear.d.ts.map +1 -1
  69. package/dist/src/function-configs/date/getUTCYear.js +14 -0
  70. package/dist/src/function-configs/date/getUTCYear.js.map +1 -1
  71. package/dist/src/function-configs/date/getYear.d.ts.map +1 -1
  72. package/dist/src/function-configs/date/getYear.js +13 -0
  73. package/dist/src/function-configs/date/getYear.js.map +1 -1
  74. package/dist/src/function-configs/date/isAfter.d.ts.map +1 -1
  75. package/dist/src/function-configs/date/isAfter.js +9 -0
  76. package/dist/src/function-configs/date/isAfter.js.map +1 -1
  77. package/dist/src/function-configs/date/isBefore.d.ts.map +1 -1
  78. package/dist/src/function-configs/date/isBefore.js +7 -0
  79. package/dist/src/function-configs/date/isBefore.js.map +1 -1
  80. package/dist/src/function-configs/date/isBetween.d.ts.map +1 -1
  81. package/dist/src/function-configs/date/isBetween.js +11 -0
  82. package/dist/src/function-configs/date/isBetween.js.map +1 -1
  83. package/dist/src/function-configs/date/isDate.d.ts.map +1 -1
  84. package/dist/src/function-configs/date/isDate.js +11 -0
  85. package/dist/src/function-configs/date/isDate.js.map +1 -1
  86. package/dist/src/function-configs/date/isEpoch.d.ts.map +1 -1
  87. package/dist/src/function-configs/date/isEpoch.js +12 -0
  88. package/dist/src/function-configs/date/isEpoch.js.map +1 -1
  89. package/dist/src/function-configs/date/isEpochMillis.d.ts.map +1 -1
  90. package/dist/src/function-configs/date/isEpochMillis.js +6 -0
  91. package/dist/src/function-configs/date/isEpochMillis.js.map +1 -1
  92. package/dist/src/function-configs/date/isFriday.d.ts.map +1 -1
  93. package/dist/src/function-configs/date/isFriday.js +11 -0
  94. package/dist/src/function-configs/date/isFriday.js.map +1 -1
  95. package/dist/src/function-configs/date/isFuture.d.ts.map +1 -1
  96. package/dist/src/function-configs/date/isFuture.js +11 -0
  97. package/dist/src/function-configs/date/isFuture.js.map +1 -1
  98. package/dist/src/function-configs/date/isISO8601.d.ts.map +1 -1
  99. package/dist/src/function-configs/date/isISO8601.js +9 -0
  100. package/dist/src/function-configs/date/isISO8601.js.map +1 -1
  101. package/dist/src/function-configs/date/isLeapYear.d.ts.map +1 -1
  102. package/dist/src/function-configs/date/isLeapYear.js +13 -0
  103. package/dist/src/function-configs/date/isLeapYear.js.map +1 -1
  104. package/dist/src/function-configs/date/isMonday.d.ts.map +1 -1
  105. package/dist/src/function-configs/date/isMonday.js +11 -0
  106. package/dist/src/function-configs/date/isMonday.js.map +1 -1
  107. package/dist/src/function-configs/date/isPast.d.ts.map +1 -1
  108. package/dist/src/function-configs/date/isPast.js +11 -0
  109. package/dist/src/function-configs/date/isPast.js.map +1 -1
  110. package/dist/src/function-configs/date/isSaturday.d.ts.map +1 -1
  111. package/dist/src/function-configs/date/isSaturday.js +11 -0
  112. package/dist/src/function-configs/date/isSaturday.js.map +1 -1
  113. package/dist/src/function-configs/date/isSunday.d.ts.map +1 -1
  114. package/dist/src/function-configs/date/isSunday.js +11 -0
  115. package/dist/src/function-configs/date/isSunday.js.map +1 -1
  116. package/dist/src/function-configs/date/isThursday.d.ts.map +1 -1
  117. package/dist/src/function-configs/date/isThursday.js +11 -0
  118. package/dist/src/function-configs/date/isThursday.js.map +1 -1
  119. package/dist/src/function-configs/date/isToday.d.ts.map +1 -1
  120. package/dist/src/function-configs/date/isToday.js +12 -0
  121. package/dist/src/function-configs/date/isToday.js.map +1 -1
  122. package/dist/src/function-configs/date/isTomorrow.d.ts.map +1 -1
  123. package/dist/src/function-configs/date/isTomorrow.js +11 -0
  124. package/dist/src/function-configs/date/isTomorrow.js.map +1 -1
  125. package/dist/src/function-configs/date/isTuesday.d.ts.map +1 -1
  126. package/dist/src/function-configs/date/isTuesday.js +11 -0
  127. package/dist/src/function-configs/date/isTuesday.js.map +1 -1
  128. package/dist/src/function-configs/date/isWednesday.d.ts.map +1 -1
  129. package/dist/src/function-configs/date/isWednesday.js +11 -0
  130. package/dist/src/function-configs/date/isWednesday.js.map +1 -1
  131. package/dist/src/function-configs/date/isWeekday.d.ts.map +1 -1
  132. package/dist/src/function-configs/date/isWeekday.js +9 -0
  133. package/dist/src/function-configs/date/isWeekday.js.map +1 -1
  134. package/dist/src/function-configs/date/isWeekend.d.ts.map +1 -1
  135. package/dist/src/function-configs/date/isWeekend.js +9 -0
  136. package/dist/src/function-configs/date/isWeekend.js.map +1 -1
  137. package/dist/src/function-configs/date/isYesterday.d.ts.map +1 -1
  138. package/dist/src/function-configs/date/isYesterday.js +11 -0
  139. package/dist/src/function-configs/date/isYesterday.js.map +1 -1
  140. package/dist/src/function-configs/date/setDate.d.ts.map +1 -1
  141. package/dist/src/function-configs/date/setDate.js +11 -0
  142. package/dist/src/function-configs/date/setDate.js.map +1 -1
  143. package/dist/src/function-configs/date/setHours.d.ts.map +1 -1
  144. package/dist/src/function-configs/date/setHours.js +8 -0
  145. package/dist/src/function-configs/date/setHours.js.map +1 -1
  146. package/dist/src/function-configs/date/setMilliseconds.d.ts.map +1 -1
  147. package/dist/src/function-configs/date/setMilliseconds.js +12 -0
  148. package/dist/src/function-configs/date/setMilliseconds.js.map +1 -1
  149. package/dist/src/function-configs/date/setMinutes.d.ts.map +1 -1
  150. package/dist/src/function-configs/date/setMinutes.js +8 -0
  151. package/dist/src/function-configs/date/setMinutes.js.map +1 -1
  152. package/dist/src/function-configs/date/setMonth.d.ts.map +1 -1
  153. package/dist/src/function-configs/date/setMonth.js +16 -0
  154. package/dist/src/function-configs/date/setMonth.js.map +1 -1
  155. package/dist/src/function-configs/date/setSeconds.d.ts.map +1 -1
  156. package/dist/src/function-configs/date/setSeconds.js +9 -0
  157. package/dist/src/function-configs/date/setSeconds.js.map +1 -1
  158. package/dist/src/function-configs/date/setTimezone.d.ts.map +1 -1
  159. package/dist/src/function-configs/date/setTimezone.js +13 -0
  160. package/dist/src/function-configs/date/setTimezone.js.map +1 -1
  161. package/dist/src/function-configs/date/setYear.d.ts.map +1 -1
  162. package/dist/src/function-configs/date/setYear.js +15 -0
  163. package/dist/src/function-configs/date/setYear.js.map +1 -1
  164. package/dist/src/function-configs/date/sql-utils.d.ts +89 -0
  165. package/dist/src/function-configs/date/sql-utils.d.ts.map +1 -0
  166. package/dist/src/function-configs/date/sql-utils.js +198 -0
  167. package/dist/src/function-configs/date/sql-utils.js.map +1 -0
  168. package/dist/src/function-configs/date/subtractFromDate.d.ts.map +1 -1
  169. package/dist/src/function-configs/date/subtractFromDate.js +10 -0
  170. package/dist/src/function-configs/date/subtractFromDate.js.map +1 -1
  171. package/dist/src/function-configs/date/toDailyDate.d.ts.map +1 -1
  172. package/dist/src/function-configs/date/toDailyDate.js +11 -0
  173. package/dist/src/function-configs/date/toDailyDate.js.map +1 -1
  174. package/dist/src/function-configs/date/toDate.d.ts.map +1 -1
  175. package/dist/src/function-configs/date/toDate.js +17 -0
  176. package/dist/src/function-configs/date/toDate.js.map +1 -1
  177. package/dist/src/function-configs/date/toHourlyDate.d.ts.map +1 -1
  178. package/dist/src/function-configs/date/toHourlyDate.js +11 -0
  179. package/dist/src/function-configs/date/toHourlyDate.js.map +1 -1
  180. package/dist/src/function-configs/date/toMonthlyDate.d.ts.map +1 -1
  181. package/dist/src/function-configs/date/toMonthlyDate.js +11 -0
  182. package/dist/src/function-configs/date/toMonthlyDate.js.map +1 -1
  183. package/dist/src/function-configs/date/toTimeZone.d.ts.map +1 -1
  184. package/dist/src/function-configs/date/toTimeZone.js +13 -0
  185. package/dist/src/function-configs/date/toTimeZone.js.map +1 -1
  186. package/dist/src/function-configs/date/toTimeZoneUsingLocation.d.ts.map +1 -1
  187. package/dist/src/function-configs/date/toTimeZoneUsingLocation.js +22 -0
  188. package/dist/src/function-configs/date/toTimeZoneUsingLocation.js.map +1 -1
  189. package/dist/src/function-configs/date/toYearlyDate.d.ts.map +1 -1
  190. package/dist/src/function-configs/date/toYearlyDate.js +11 -0
  191. package/dist/src/function-configs/date/toYearlyDate.js.map +1 -1
  192. package/dist/src/function-configs/geo/geoContains.d.ts.map +1 -1
  193. package/dist/src/function-configs/geo/geoContains.js +11 -0
  194. package/dist/src/function-configs/geo/geoContains.js.map +1 -1
  195. package/dist/src/function-configs/geo/geoContainsPoint.d.ts.map +1 -1
  196. package/dist/src/function-configs/geo/geoContainsPoint.js +11 -0
  197. package/dist/src/function-configs/geo/geoContainsPoint.js.map +1 -1
  198. package/dist/src/function-configs/geo/geoDisjoint.d.ts.map +1 -1
  199. package/dist/src/function-configs/geo/geoDisjoint.js +7 -0
  200. package/dist/src/function-configs/geo/geoDisjoint.js.map +1 -1
  201. package/dist/src/function-configs/geo/geoIntersects.d.ts.map +1 -1
  202. package/dist/src/function-configs/geo/geoIntersects.js +9 -0
  203. package/dist/src/function-configs/geo/geoIntersects.js.map +1 -1
  204. package/dist/src/function-configs/geo/geoPointWithinRange.d.ts.map +1 -1
  205. package/dist/src/function-configs/geo/geoPointWithinRange.js +28 -0
  206. package/dist/src/function-configs/geo/geoPointWithinRange.js.map +1 -1
  207. package/dist/src/function-configs/geo/geoRelation.d.ts.map +1 -1
  208. package/dist/src/function-configs/geo/geoRelation.js +13 -0
  209. package/dist/src/function-configs/geo/geoRelation.js.map +1 -1
  210. package/dist/src/function-configs/geo/geoWithin.d.ts.map +1 -1
  211. package/dist/src/function-configs/geo/geoWithin.js +7 -0
  212. package/dist/src/function-configs/geo/geoWithin.js.map +1 -1
  213. package/dist/src/function-configs/geo/inGeoBoundingBox.d.ts.map +1 -1
  214. package/dist/src/function-configs/geo/inGeoBoundingBox.js +24 -1
  215. package/dist/src/function-configs/geo/inGeoBoundingBox.js.map +1 -1
  216. package/dist/src/function-configs/geo/isGeoJSON.d.ts.map +1 -1
  217. package/dist/src/function-configs/geo/isGeoJSON.js +6 -0
  218. package/dist/src/function-configs/geo/isGeoJSON.js.map +1 -1
  219. package/dist/src/function-configs/geo/isGeoPoint.d.ts.map +1 -1
  220. package/dist/src/function-configs/geo/isGeoPoint.js +13 -0
  221. package/dist/src/function-configs/geo/isGeoPoint.js.map +1 -1
  222. package/dist/src/function-configs/geo/isGeoShapeMultiPolygon.d.ts.map +1 -1
  223. package/dist/src/function-configs/geo/isGeoShapeMultiPolygon.js +6 -0
  224. package/dist/src/function-configs/geo/isGeoShapeMultiPolygon.js.map +1 -1
  225. package/dist/src/function-configs/geo/isGeoShapePoint.d.ts.map +1 -1
  226. package/dist/src/function-configs/geo/isGeoShapePoint.js +6 -0
  227. package/dist/src/function-configs/geo/isGeoShapePoint.js.map +1 -1
  228. package/dist/src/function-configs/geo/isGeoShapePolygon.d.ts.map +1 -1
  229. package/dist/src/function-configs/geo/isGeoShapePolygon.js +6 -0
  230. package/dist/src/function-configs/geo/isGeoShapePolygon.js.map +1 -1
  231. package/dist/src/function-configs/geo/sql-utils.d.ts +116 -0
  232. package/dist/src/function-configs/geo/sql-utils.d.ts.map +1 -0
  233. package/dist/src/function-configs/geo/sql-utils.js +179 -0
  234. package/dist/src/function-configs/geo/sql-utils.js.map +1 -0
  235. package/dist/src/function-configs/interfaces.d.ts +102 -0
  236. package/dist/src/function-configs/interfaces.d.ts.map +1 -1
  237. package/dist/src/function-configs/interfaces.js.map +1 -1
  238. package/dist/src/function-configs/ip/extractMappedIPv4.d.ts.map +1 -1
  239. package/dist/src/function-configs/ip/extractMappedIPv4.js +11 -0
  240. package/dist/src/function-configs/ip/extractMappedIPv4.js.map +1 -1
  241. package/dist/src/function-configs/ip/getCIDRBroadcast.d.ts.map +1 -1
  242. package/dist/src/function-configs/ip/getCIDRBroadcast.js +7 -0
  243. package/dist/src/function-configs/ip/getCIDRBroadcast.js.map +1 -1
  244. package/dist/src/function-configs/ip/getCIDRMax.d.ts.map +1 -1
  245. package/dist/src/function-configs/ip/getCIDRMax.js +10 -0
  246. package/dist/src/function-configs/ip/getCIDRMax.js.map +1 -1
  247. package/dist/src/function-configs/ip/getCIDRMin.d.ts.map +1 -1
  248. package/dist/src/function-configs/ip/getCIDRMin.js +9 -0
  249. package/dist/src/function-configs/ip/getCIDRMin.js.map +1 -1
  250. package/dist/src/function-configs/ip/getCIDRNetwork.d.ts.map +1 -1
  251. package/dist/src/function-configs/ip/getCIDRNetwork.js +7 -0
  252. package/dist/src/function-configs/ip/getCIDRNetwork.js.map +1 -1
  253. package/dist/src/function-configs/ip/getFirstIpInCIDR.d.ts.map +1 -1
  254. package/dist/src/function-configs/ip/getFirstIpInCIDR.js +11 -0
  255. package/dist/src/function-configs/ip/getFirstIpInCIDR.js.map +1 -1
  256. package/dist/src/function-configs/ip/getFirstUsableIPInCIDR.d.ts.map +1 -1
  257. package/dist/src/function-configs/ip/getFirstUsableIPInCIDR.js +14 -0
  258. package/dist/src/function-configs/ip/getFirstUsableIPInCIDR.js.map +1 -1
  259. package/dist/src/function-configs/ip/getLastIpInCIDR.d.ts.map +1 -1
  260. package/dist/src/function-configs/ip/getLastIpInCIDR.js +8 -0
  261. package/dist/src/function-configs/ip/getLastIpInCIDR.js.map +1 -1
  262. package/dist/src/function-configs/ip/getLastUsableIPInCIDR.d.ts.map +1 -1
  263. package/dist/src/function-configs/ip/getLastUsableIPInCIDR.js +13 -0
  264. package/dist/src/function-configs/ip/getLastUsableIPInCIDR.js.map +1 -1
  265. package/dist/src/function-configs/ip/inIPRange.d.ts.map +1 -1
  266. package/dist/src/function-configs/ip/inIPRange.js +15 -0
  267. package/dist/src/function-configs/ip/inIPRange.js.map +1 -1
  268. package/dist/src/function-configs/ip/intToIP.d.ts.map +1 -1
  269. package/dist/src/function-configs/ip/intToIP.js +25 -0
  270. package/dist/src/function-configs/ip/intToIP.js.map +1 -1
  271. package/dist/src/function-configs/ip/ipToInt.d.ts.map +1 -1
  272. package/dist/src/function-configs/ip/ipToInt.js +12 -0
  273. package/dist/src/function-configs/ip/ipToInt.js.map +1 -1
  274. package/dist/src/function-configs/ip/isCIDR.d.ts.map +1 -1
  275. package/dist/src/function-configs/ip/isCIDR.js +8 -0
  276. package/dist/src/function-configs/ip/isCIDR.js.map +1 -1
  277. package/dist/src/function-configs/ip/isIP.d.ts.map +1 -1
  278. package/dist/src/function-configs/ip/isIP.js +10 -0
  279. package/dist/src/function-configs/ip/isIP.js.map +1 -1
  280. package/dist/src/function-configs/ip/isIPv4.d.ts.map +1 -1
  281. package/dist/src/function-configs/ip/isIPv4.js +9 -0
  282. package/dist/src/function-configs/ip/isIPv4.js.map +1 -1
  283. package/dist/src/function-configs/ip/isIPv6.d.ts.map +1 -1
  284. package/dist/src/function-configs/ip/isIPv6.js +10 -0
  285. package/dist/src/function-configs/ip/isIPv6.js.map +1 -1
  286. package/dist/src/function-configs/ip/isMappedIPv4.d.ts.map +1 -1
  287. package/dist/src/function-configs/ip/isMappedIPv4.js +10 -0
  288. package/dist/src/function-configs/ip/isMappedIPv4.js.map +1 -1
  289. package/dist/src/function-configs/ip/isNonRoutableIP.d.ts.map +1 -1
  290. package/dist/src/function-configs/ip/isNonRoutableIP.js +8 -0
  291. package/dist/src/function-configs/ip/isNonRoutableIP.js.map +1 -1
  292. package/dist/src/function-configs/ip/isRoutableIP.d.ts.map +1 -1
  293. package/dist/src/function-configs/ip/isRoutableIP.js +12 -0
  294. package/dist/src/function-configs/ip/isRoutableIP.js.map +1 -1
  295. package/dist/src/function-configs/ip/reverseIP.d.ts.map +1 -1
  296. package/dist/src/function-configs/ip/reverseIP.js +13 -0
  297. package/dist/src/function-configs/ip/reverseIP.js.map +1 -1
  298. package/dist/src/function-configs/ip/sql-utils.d.ts +116 -0
  299. package/dist/src/function-configs/ip/sql-utils.d.ts.map +1 -0
  300. package/dist/src/function-configs/ip/sql-utils.js +187 -0
  301. package/dist/src/function-configs/ip/sql-utils.js.map +1 -0
  302. package/dist/src/function-configs/ip/toCIDR.d.ts.map +1 -1
  303. package/dist/src/function-configs/ip/toCIDR.js +19 -0
  304. package/dist/src/function-configs/ip/toCIDR.js.map +1 -1
  305. package/dist/src/function-configs/json/setDefault.d.ts.map +1 -1
  306. package/dist/src/function-configs/json/setDefault.js +17 -0
  307. package/dist/src/function-configs/json/setDefault.js.map +1 -1
  308. package/dist/src/function-configs/json/sql-utils.d.ts +20 -0
  309. package/dist/src/function-configs/json/sql-utils.d.ts.map +1 -0
  310. package/dist/src/function-configs/json/sql-utils.js +26 -0
  311. package/dist/src/function-configs/json/sql-utils.js.map +1 -0
  312. package/dist/src/function-configs/json/toJSON.d.ts.map +1 -1
  313. package/dist/src/function-configs/json/toJSON.js +13 -0
  314. package/dist/src/function-configs/json/toJSON.js.map +1 -1
  315. package/dist/src/function-configs/numeric/abs.d.ts.map +1 -1
  316. package/dist/src/function-configs/numeric/abs.js +5 -0
  317. package/dist/src/function-configs/numeric/abs.js.map +1 -1
  318. package/dist/src/function-configs/numeric/acos.d.ts.map +1 -1
  319. package/dist/src/function-configs/numeric/acos.js +12 -0
  320. package/dist/src/function-configs/numeric/acos.js.map +1 -1
  321. package/dist/src/function-configs/numeric/acosh.d.ts.map +1 -1
  322. package/dist/src/function-configs/numeric/acosh.js +12 -0
  323. package/dist/src/function-configs/numeric/acosh.js.map +1 -1
  324. package/dist/src/function-configs/numeric/add.d.ts.map +1 -1
  325. package/dist/src/function-configs/numeric/add.js +12 -0
  326. package/dist/src/function-configs/numeric/add.js.map +1 -1
  327. package/dist/src/function-configs/numeric/addValues.d.ts.map +1 -1
  328. package/dist/src/function-configs/numeric/addValues.js +9 -0
  329. package/dist/src/function-configs/numeric/addValues.js.map +1 -1
  330. package/dist/src/function-configs/numeric/asin.d.ts.map +1 -1
  331. package/dist/src/function-configs/numeric/asin.js +12 -0
  332. package/dist/src/function-configs/numeric/asin.js.map +1 -1
  333. package/dist/src/function-configs/numeric/asinh.d.ts.map +1 -1
  334. package/dist/src/function-configs/numeric/asinh.js +8 -0
  335. package/dist/src/function-configs/numeric/asinh.js.map +1 -1
  336. package/dist/src/function-configs/numeric/atan.d.ts.map +1 -1
  337. package/dist/src/function-configs/numeric/atan.js +8 -0
  338. package/dist/src/function-configs/numeric/atan.js.map +1 -1
  339. package/dist/src/function-configs/numeric/atan2.d.ts.map +1 -1
  340. package/dist/src/function-configs/numeric/atan2.js +16 -0
  341. package/dist/src/function-configs/numeric/atan2.js.map +1 -1
  342. package/dist/src/function-configs/numeric/atanh.d.ts.map +1 -1
  343. package/dist/src/function-configs/numeric/atanh.js +13 -0
  344. package/dist/src/function-configs/numeric/atanh.js.map +1 -1
  345. package/dist/src/function-configs/numeric/cbrt.d.ts.map +1 -1
  346. package/dist/src/function-configs/numeric/cbrt.js +8 -0
  347. package/dist/src/function-configs/numeric/cbrt.js.map +1 -1
  348. package/dist/src/function-configs/numeric/ceil.d.ts.map +1 -1
  349. package/dist/src/function-configs/numeric/ceil.js +13 -0
  350. package/dist/src/function-configs/numeric/ceil.js.map +1 -1
  351. package/dist/src/function-configs/numeric/clz32.d.ts.map +1 -1
  352. package/dist/src/function-configs/numeric/clz32.js +16 -0
  353. package/dist/src/function-configs/numeric/clz32.js.map +1 -1
  354. package/dist/src/function-configs/numeric/cos.d.ts.map +1 -1
  355. package/dist/src/function-configs/numeric/cos.js +8 -0
  356. package/dist/src/function-configs/numeric/cos.js.map +1 -1
  357. package/dist/src/function-configs/numeric/cosh.d.ts.map +1 -1
  358. package/dist/src/function-configs/numeric/cosh.js +8 -0
  359. package/dist/src/function-configs/numeric/cosh.js.map +1 -1
  360. package/dist/src/function-configs/numeric/divide.d.ts.map +1 -1
  361. package/dist/src/function-configs/numeric/divide.js +12 -0
  362. package/dist/src/function-configs/numeric/divide.js.map +1 -1
  363. package/dist/src/function-configs/numeric/divideValues.d.ts.map +1 -1
  364. package/dist/src/function-configs/numeric/divideValues.js +6 -0
  365. package/dist/src/function-configs/numeric/divideValues.js.map +1 -1
  366. package/dist/src/function-configs/numeric/exp.d.ts.map +1 -1
  367. package/dist/src/function-configs/numeric/exp.js +8 -0
  368. package/dist/src/function-configs/numeric/exp.js.map +1 -1
  369. package/dist/src/function-configs/numeric/floor.d.ts.map +1 -1
  370. package/dist/src/function-configs/numeric/floor.js +13 -0
  371. package/dist/src/function-configs/numeric/floor.js.map +1 -1
  372. package/dist/src/function-configs/numeric/fround.d.ts.map +1 -1
  373. package/dist/src/function-configs/numeric/fround.js +5 -0
  374. package/dist/src/function-configs/numeric/fround.js.map +1 -1
  375. package/dist/src/function-configs/numeric/hypot.d.ts.map +1 -1
  376. package/dist/src/function-configs/numeric/hypot.js +14 -0
  377. package/dist/src/function-configs/numeric/hypot.js.map +1 -1
  378. package/dist/src/function-configs/numeric/inNumberRange.d.ts.map +1 -1
  379. package/dist/src/function-configs/numeric/inNumberRange.js +20 -0
  380. package/dist/src/function-configs/numeric/inNumberRange.js.map +1 -1
  381. package/dist/src/function-configs/numeric/isEven.d.ts.map +1 -1
  382. package/dist/src/function-configs/numeric/isEven.js +4 -0
  383. package/dist/src/function-configs/numeric/isEven.js.map +1 -1
  384. package/dist/src/function-configs/numeric/isGreaterThan.d.ts.map +1 -1
  385. package/dist/src/function-configs/numeric/isGreaterThan.js +6 -0
  386. package/dist/src/function-configs/numeric/isGreaterThan.js.map +1 -1
  387. package/dist/src/function-configs/numeric/isGreaterThanOrEqualTo.d.ts.map +1 -1
  388. package/dist/src/function-configs/numeric/isGreaterThanOrEqualTo.js +6 -0
  389. package/dist/src/function-configs/numeric/isGreaterThanOrEqualTo.js.map +1 -1
  390. package/dist/src/function-configs/numeric/isLessThan.d.ts.map +1 -1
  391. package/dist/src/function-configs/numeric/isLessThan.js +6 -0
  392. package/dist/src/function-configs/numeric/isLessThan.js.map +1 -1
  393. package/dist/src/function-configs/numeric/isLessThanOrEqualTo.d.ts.map +1 -1
  394. package/dist/src/function-configs/numeric/isLessThanOrEqualTo.js +6 -0
  395. package/dist/src/function-configs/numeric/isLessThanOrEqualTo.js.map +1 -1
  396. package/dist/src/function-configs/numeric/isOdd.d.ts.map +1 -1
  397. package/dist/src/function-configs/numeric/isOdd.js +9 -0
  398. package/dist/src/function-configs/numeric/isOdd.js.map +1 -1
  399. package/dist/src/function-configs/numeric/log.d.ts.map +1 -1
  400. package/dist/src/function-configs/numeric/log.js +13 -0
  401. package/dist/src/function-configs/numeric/log.js.map +1 -1
  402. package/dist/src/function-configs/numeric/log10.d.ts.map +1 -1
  403. package/dist/src/function-configs/numeric/log10.js +13 -0
  404. package/dist/src/function-configs/numeric/log10.js.map +1 -1
  405. package/dist/src/function-configs/numeric/log2.d.ts.map +1 -1
  406. package/dist/src/function-configs/numeric/log2.js +13 -0
  407. package/dist/src/function-configs/numeric/log2.js.map +1 -1
  408. package/dist/src/function-configs/numeric/maxValues.d.ts.map +1 -1
  409. package/dist/src/function-configs/numeric/maxValues.js +6 -0
  410. package/dist/src/function-configs/numeric/maxValues.js.map +1 -1
  411. package/dist/src/function-configs/numeric/minValues.d.ts.map +1 -1
  412. package/dist/src/function-configs/numeric/minValues.js +6 -0
  413. package/dist/src/function-configs/numeric/minValues.js.map +1 -1
  414. package/dist/src/function-configs/numeric/modulus.d.ts.map +1 -1
  415. package/dist/src/function-configs/numeric/modulus.js +9 -0
  416. package/dist/src/function-configs/numeric/modulus.js.map +1 -1
  417. package/dist/src/function-configs/numeric/multiply.d.ts.map +1 -1
  418. package/dist/src/function-configs/numeric/multiply.js +12 -0
  419. package/dist/src/function-configs/numeric/multiply.js.map +1 -1
  420. package/dist/src/function-configs/numeric/multiplyValues.d.ts.map +1 -1
  421. package/dist/src/function-configs/numeric/multiplyValues.js +6 -0
  422. package/dist/src/function-configs/numeric/multiplyValues.js.map +1 -1
  423. package/dist/src/function-configs/numeric/pow.d.ts.map +1 -1
  424. package/dist/src/function-configs/numeric/pow.js +7 -0
  425. package/dist/src/function-configs/numeric/pow.js.map +1 -1
  426. package/dist/src/function-configs/numeric/round.d.ts.map +1 -1
  427. package/dist/src/function-configs/numeric/round.js +13 -0
  428. package/dist/src/function-configs/numeric/round.js.map +1 -1
  429. package/dist/src/function-configs/numeric/setPrecision.d.ts.map +1 -1
  430. package/dist/src/function-configs/numeric/setPrecision.js +26 -0
  431. package/dist/src/function-configs/numeric/setPrecision.js.map +1 -1
  432. package/dist/src/function-configs/numeric/sign.d.ts.map +1 -1
  433. package/dist/src/function-configs/numeric/sign.js +5 -0
  434. package/dist/src/function-configs/numeric/sign.js.map +1 -1
  435. package/dist/src/function-configs/numeric/sin.d.ts.map +1 -1
  436. package/dist/src/function-configs/numeric/sin.js +8 -0
  437. package/dist/src/function-configs/numeric/sin.js.map +1 -1
  438. package/dist/src/function-configs/numeric/sinh.d.ts.map +1 -1
  439. package/dist/src/function-configs/numeric/sinh.js +8 -0
  440. package/dist/src/function-configs/numeric/sinh.js.map +1 -1
  441. package/dist/src/function-configs/numeric/sql-utils.d.ts +54 -0
  442. package/dist/src/function-configs/numeric/sql-utils.d.ts.map +1 -0
  443. package/dist/src/function-configs/numeric/sql-utils.js +76 -0
  444. package/dist/src/function-configs/numeric/sql-utils.js.map +1 -0
  445. package/dist/src/function-configs/numeric/sqrt.d.ts.map +1 -1
  446. package/dist/src/function-configs/numeric/sqrt.js +10 -0
  447. package/dist/src/function-configs/numeric/sqrt.js.map +1 -1
  448. package/dist/src/function-configs/numeric/subtract.d.ts.map +1 -1
  449. package/dist/src/function-configs/numeric/subtract.js +12 -0
  450. package/dist/src/function-configs/numeric/subtract.js.map +1 -1
  451. package/dist/src/function-configs/numeric/subtractValues.d.ts.map +1 -1
  452. package/dist/src/function-configs/numeric/subtractValues.js +9 -0
  453. package/dist/src/function-configs/numeric/subtractValues.js.map +1 -1
  454. package/dist/src/function-configs/numeric/tan.d.ts.map +1 -1
  455. package/dist/src/function-configs/numeric/tan.js +8 -0
  456. package/dist/src/function-configs/numeric/tan.js.map +1 -1
  457. package/dist/src/function-configs/numeric/tanh.d.ts.map +1 -1
  458. package/dist/src/function-configs/numeric/tanh.js +8 -0
  459. package/dist/src/function-configs/numeric/tanh.js.map +1 -1
  460. package/dist/src/function-configs/numeric/toCelsius.d.ts.map +1 -1
  461. package/dist/src/function-configs/numeric/toCelsius.js +14 -0
  462. package/dist/src/function-configs/numeric/toCelsius.js.map +1 -1
  463. package/dist/src/function-configs/numeric/toFahrenheit.d.ts.map +1 -1
  464. package/dist/src/function-configs/numeric/toFahrenheit.js +14 -0
  465. package/dist/src/function-configs/numeric/toFahrenheit.js.map +1 -1
  466. package/dist/src/function-configs/numeric/toNumber.d.ts.map +1 -1
  467. package/dist/src/function-configs/numeric/toNumber.js +42 -0
  468. package/dist/src/function-configs/numeric/toNumber.js.map +1 -1
  469. package/dist/src/function-configs/object/equals.d.ts.map +1 -1
  470. package/dist/src/function-configs/object/equals.js +14 -0
  471. package/dist/src/function-configs/object/equals.js.map +1 -1
  472. package/dist/src/function-configs/object/isEmpty.d.ts.map +1 -1
  473. package/dist/src/function-configs/object/isEmpty.js +26 -0
  474. package/dist/src/function-configs/object/isEmpty.js.map +1 -1
  475. package/dist/src/function-configs/object/lookup.d.ts.map +1 -1
  476. package/dist/src/function-configs/object/lookup.js +8 -0
  477. package/dist/src/function-configs/object/lookup.js.map +1 -1
  478. package/dist/src/function-configs/object/sql-utils.d.ts +5 -0
  479. package/dist/src/function-configs/object/sql-utils.d.ts.map +1 -0
  480. package/dist/src/function-configs/object/sql-utils.js +96 -0
  481. package/dist/src/function-configs/object/sql-utils.js.map +1 -0
  482. package/dist/src/function-configs/sql-helpers.d.ts +115 -0
  483. package/dist/src/function-configs/sql-helpers.d.ts.map +1 -0
  484. package/dist/src/function-configs/sql-helpers.js +169 -0
  485. package/dist/src/function-configs/sql-helpers.js.map +1 -0
  486. package/dist/src/function-configs/string/contains.d.ts.map +1 -1
  487. package/dist/src/function-configs/string/contains.js +5 -0
  488. package/dist/src/function-configs/string/contains.js.map +1 -1
  489. package/dist/src/function-configs/string/createID.d.ts.map +1 -1
  490. package/dist/src/function-configs/string/createID.js +16 -0
  491. package/dist/src/function-configs/string/createID.js.map +1 -1
  492. package/dist/src/function-configs/string/decodeBase64.d.ts.map +1 -1
  493. package/dist/src/function-configs/string/decodeBase64.js +14 -0
  494. package/dist/src/function-configs/string/decodeBase64.js.map +1 -1
  495. package/dist/src/function-configs/string/decodeHex.d.ts.map +1 -1
  496. package/dist/src/function-configs/string/decodeHex.js +13 -0
  497. package/dist/src/function-configs/string/decodeHex.js.map +1 -1
  498. package/dist/src/function-configs/string/decodeURL.d.ts.map +1 -1
  499. package/dist/src/function-configs/string/decodeURL.js +7 -0
  500. package/dist/src/function-configs/string/decodeURL.js.map +1 -1
  501. package/dist/src/function-configs/string/encode.d.ts.map +1 -1
  502. package/dist/src/function-configs/string/encode.js +14 -0
  503. package/dist/src/function-configs/string/encode.js.map +1 -1
  504. package/dist/src/function-configs/string/encodeBase64.d.ts.map +1 -1
  505. package/dist/src/function-configs/string/encodeBase64.js +10 -0
  506. package/dist/src/function-configs/string/encodeBase64.js.map +1 -1
  507. package/dist/src/function-configs/string/encodeHex.d.ts.map +1 -1
  508. package/dist/src/function-configs/string/encodeHex.js +9 -0
  509. package/dist/src/function-configs/string/encodeHex.js.map +1 -1
  510. package/dist/src/function-configs/string/encodeSHA.d.ts.map +1 -1
  511. package/dist/src/function-configs/string/encodeSHA.js +11 -0
  512. package/dist/src/function-configs/string/encodeSHA.js.map +1 -1
  513. package/dist/src/function-configs/string/encodeSHA1.d.ts.map +1 -1
  514. package/dist/src/function-configs/string/encodeSHA1.js +10 -0
  515. package/dist/src/function-configs/string/encodeSHA1.js.map +1 -1
  516. package/dist/src/function-configs/string/encodeURL.d.ts.map +1 -1
  517. package/dist/src/function-configs/string/encodeURL.js +7 -0
  518. package/dist/src/function-configs/string/encodeURL.js.map +1 -1
  519. package/dist/src/function-configs/string/endsWith.d.ts.map +1 -1
  520. package/dist/src/function-configs/string/endsWith.js +5 -0
  521. package/dist/src/function-configs/string/endsWith.js.map +1 -1
  522. package/dist/src/function-configs/string/entropy.d.ts.map +1 -1
  523. package/dist/src/function-configs/string/entropy.js +17 -0
  524. package/dist/src/function-configs/string/entropy.js.map +1 -1
  525. package/dist/src/function-configs/string/extract.d.ts.map +1 -1
  526. package/dist/src/function-configs/string/extract.js +48 -1
  527. package/dist/src/function-configs/string/extract.js.map +1 -1
  528. package/dist/src/function-configs/string/isAlpha.d.ts.map +1 -1
  529. package/dist/src/function-configs/string/isAlpha.js +10 -0
  530. package/dist/src/function-configs/string/isAlpha.js.map +1 -1
  531. package/dist/src/function-configs/string/isAlphaNumeric.d.ts.map +1 -1
  532. package/dist/src/function-configs/string/isAlphaNumeric.js +6 -0
  533. package/dist/src/function-configs/string/isAlphaNumeric.js.map +1 -1
  534. package/dist/src/function-configs/string/isBase64.d.ts.map +1 -1
  535. package/dist/src/function-configs/string/isBase64.js +13 -0
  536. package/dist/src/function-configs/string/isBase64.js.map +1 -1
  537. package/dist/src/function-configs/string/isCountryCode.d.ts.map +1 -1
  538. package/dist/src/function-configs/string/isCountryCode.js +16 -0
  539. package/dist/src/function-configs/string/isCountryCode.js.map +1 -1
  540. package/dist/src/function-configs/string/isEmail.d.ts.map +1 -1
  541. package/dist/src/function-configs/string/isEmail.js +10 -0
  542. package/dist/src/function-configs/string/isEmail.js.map +1 -1
  543. package/dist/src/function-configs/string/isFQDN.d.ts.map +1 -1
  544. package/dist/src/function-configs/string/isFQDN.js +9 -0
  545. package/dist/src/function-configs/string/isFQDN.js.map +1 -1
  546. package/dist/src/function-configs/string/isHash.d.ts.map +1 -1
  547. package/dist/src/function-configs/string/isHash.js +9 -0
  548. package/dist/src/function-configs/string/isHash.js.map +1 -1
  549. package/dist/src/function-configs/string/isLength.d.ts.map +1 -1
  550. package/dist/src/function-configs/string/isLength.js +23 -0
  551. package/dist/src/function-configs/string/isLength.js.map +1 -1
  552. package/dist/src/function-configs/string/isMACAddress.d.ts.map +1 -1
  553. package/dist/src/function-configs/string/isMACAddress.js +17 -0
  554. package/dist/src/function-configs/string/isMACAddress.js.map +1 -1
  555. package/dist/src/function-configs/string/isMIMEType.d.ts.map +1 -1
  556. package/dist/src/function-configs/string/isMIMEType.js +10 -0
  557. package/dist/src/function-configs/string/isMIMEType.js.map +1 -1
  558. package/dist/src/function-configs/string/isPhoneNumberLike.d.ts.map +1 -1
  559. package/dist/src/function-configs/string/isPhoneNumberLike.js +14 -0
  560. package/dist/src/function-configs/string/isPhoneNumberLike.js.map +1 -1
  561. package/dist/src/function-configs/string/isPort.d.ts.map +1 -1
  562. package/dist/src/function-configs/string/isPort.js +12 -0
  563. package/dist/src/function-configs/string/isPort.js.map +1 -1
  564. package/dist/src/function-configs/string/isPostalCode.d.ts.map +1 -1
  565. package/dist/src/function-configs/string/isPostalCode.js +12 -0
  566. package/dist/src/function-configs/string/isPostalCode.js.map +1 -1
  567. package/dist/src/function-configs/string/isString.d.ts.map +1 -1
  568. package/dist/src/function-configs/string/isString.js +7 -0
  569. package/dist/src/function-configs/string/isString.js.map +1 -1
  570. package/dist/src/function-configs/string/isUUID.d.ts.map +1 -1
  571. package/dist/src/function-configs/string/isUUID.js +9 -0
  572. package/dist/src/function-configs/string/isUUID.js.map +1 -1
  573. package/dist/src/function-configs/string/join.d.ts.map +1 -1
  574. package/dist/src/function-configs/string/join.js +17 -0
  575. package/dist/src/function-configs/string/join.js.map +1 -1
  576. package/dist/src/function-configs/string/postal-code-utils.d.ts +13 -0
  577. package/dist/src/function-configs/string/postal-code-utils.d.ts.map +1 -0
  578. package/dist/src/function-configs/string/postal-code-utils.js +160 -0
  579. package/dist/src/function-configs/string/postal-code-utils.js.map +1 -0
  580. package/dist/src/function-configs/string/replaceLiteral.d.ts.map +1 -1
  581. package/dist/src/function-configs/string/replaceLiteral.js +22 -0
  582. package/dist/src/function-configs/string/replaceLiteral.js.map +1 -1
  583. package/dist/src/function-configs/string/replaceRegex.d.ts.map +1 -1
  584. package/dist/src/function-configs/string/replaceRegex.js +34 -0
  585. package/dist/src/function-configs/string/replaceRegex.js.map +1 -1
  586. package/dist/src/function-configs/string/reverse.d.ts.map +1 -1
  587. package/dist/src/function-configs/string/reverse.js +16 -0
  588. package/dist/src/function-configs/string/reverse.js.map +1 -1
  589. package/dist/src/function-configs/string/split.d.ts.map +1 -1
  590. package/dist/src/function-configs/string/split.js +13 -0
  591. package/dist/src/function-configs/string/split.js.map +1 -1
  592. package/dist/src/function-configs/string/sql-regex-utils.d.ts +91 -0
  593. package/dist/src/function-configs/string/sql-regex-utils.d.ts.map +1 -0
  594. package/dist/src/function-configs/string/sql-regex-utils.js +123 -0
  595. package/dist/src/function-configs/string/sql-regex-utils.js.map +1 -0
  596. package/dist/src/function-configs/string/sql-utils.d.ts +191 -0
  597. package/dist/src/function-configs/string/sql-utils.d.ts.map +1 -0
  598. package/dist/src/function-configs/string/sql-utils.js +321 -0
  599. package/dist/src/function-configs/string/sql-utils.js.map +1 -0
  600. package/dist/src/function-configs/string/sql-validator-utils.d.ts +49 -0
  601. package/dist/src/function-configs/string/sql-validator-utils.d.ts.map +1 -0
  602. package/dist/src/function-configs/string/sql-validator-utils.js +327 -0
  603. package/dist/src/function-configs/string/sql-validator-utils.js.map +1 -0
  604. package/dist/src/function-configs/string/startsWith.d.ts.map +1 -1
  605. package/dist/src/function-configs/string/startsWith.js +5 -0
  606. package/dist/src/function-configs/string/startsWith.js.map +1 -1
  607. package/dist/src/function-configs/string/toCamelCase.d.ts.map +1 -1
  608. package/dist/src/function-configs/string/toCamelCase.js +18 -0
  609. package/dist/src/function-configs/string/toCamelCase.js.map +1 -1
  610. package/dist/src/function-configs/string/toKebabCase.d.ts.map +1 -1
  611. package/dist/src/function-configs/string/toKebabCase.js +18 -0
  612. package/dist/src/function-configs/string/toKebabCase.js.map +1 -1
  613. package/dist/src/function-configs/string/toLowerCase.d.ts.map +1 -1
  614. package/dist/src/function-configs/string/toLowerCase.js +13 -0
  615. package/dist/src/function-configs/string/toLowerCase.js.map +1 -1
  616. package/dist/src/function-configs/string/toPascalCase.d.ts.map +1 -1
  617. package/dist/src/function-configs/string/toPascalCase.js +18 -0
  618. package/dist/src/function-configs/string/toPascalCase.js.map +1 -1
  619. package/dist/src/function-configs/string/toSnakeCase.d.ts.map +1 -1
  620. package/dist/src/function-configs/string/toSnakeCase.js +18 -0
  621. package/dist/src/function-configs/string/toSnakeCase.js.map +1 -1
  622. package/dist/src/function-configs/string/toString.d.ts.map +1 -1
  623. package/dist/src/function-configs/string/toString.js +42 -0
  624. package/dist/src/function-configs/string/toString.js.map +1 -1
  625. package/dist/src/function-configs/string/toTitleCase.d.ts.map +1 -1
  626. package/dist/src/function-configs/string/toTitleCase.js +19 -0
  627. package/dist/src/function-configs/string/toTitleCase.js.map +1 -1
  628. package/dist/src/function-configs/string/toUpperCase.d.ts.map +1 -1
  629. package/dist/src/function-configs/string/toUpperCase.js +13 -0
  630. package/dist/src/function-configs/string/toUpperCase.js.map +1 -1
  631. package/dist/src/function-configs/string/trim.d.ts.map +1 -1
  632. package/dist/src/function-configs/string/trim.js +11 -0
  633. package/dist/src/function-configs/string/trim.js.map +1 -1
  634. package/dist/src/function-configs/string/trimEnd.d.ts.map +1 -1
  635. package/dist/src/function-configs/string/trimEnd.js +11 -0
  636. package/dist/src/function-configs/string/trimEnd.js.map +1 -1
  637. package/dist/src/function-configs/string/trimStart.d.ts.map +1 -1
  638. package/dist/src/function-configs/string/trimStart.js +11 -0
  639. package/dist/src/function-configs/string/trimStart.js.map +1 -1
  640. package/dist/src/function-configs/string/truncate.d.ts.map +1 -1
  641. package/dist/src/function-configs/string/truncate.js +15 -0
  642. package/dist/src/function-configs/string/truncate.js.map +1 -1
  643. package/dist/src/index.d.ts +1 -0
  644. package/dist/src/index.d.ts.map +1 -1
  645. package/dist/src/index.js +1 -0
  646. package/dist/src/index.js.map +1 -1
  647. package/dist/src/teal-frame/DuckContext.d.ts +105 -0
  648. package/dist/src/teal-frame/DuckContext.d.ts.map +1 -0
  649. package/dist/src/teal-frame/DuckContext.js +244 -0
  650. package/dist/src/teal-frame/DuckContext.js.map +1 -0
  651. package/dist/src/teal-frame/TealFrame.d.ts +371 -0
  652. package/dist/src/teal-frame/TealFrame.d.ts.map +1 -0
  653. package/dist/src/teal-frame/TealFrame.js +575 -0
  654. package/dist/src/teal-frame/TealFrame.js.map +1 -0
  655. package/dist/src/teal-frame/append.d.ts +45 -0
  656. package/dist/src/teal-frame/append.d.ts.map +1 -0
  657. package/dist/src/teal-frame/append.js +136 -0
  658. package/dist/src/teal-frame/append.js.map +1 -0
  659. package/dist/src/teal-frame/clauses.d.ts +22 -0
  660. package/dist/src/teal-frame/clauses.d.ts.map +1 -0
  661. package/dist/src/teal-frame/clauses.js +41 -0
  662. package/dist/src/teal-frame/clauses.js.map +1 -0
  663. package/dist/src/teal-frame/database.d.ts +46 -0
  664. package/dist/src/teal-frame/database.d.ts.map +1 -0
  665. package/dist/src/teal-frame/database.js +91 -0
  666. package/dist/src/teal-frame/database.js.map +1 -0
  667. package/dist/src/teal-frame/date-value.d.ts +55 -0
  668. package/dist/src/teal-frame/date-value.d.ts.map +1 -0
  669. package/dist/src/teal-frame/date-value.js +106 -0
  670. package/dist/src/teal-frame/date-value.js.map +1 -0
  671. package/dist/src/teal-frame/deep-select.d.ts +8 -0
  672. package/dist/src/teal-frame/deep-select.d.ts.map +1 -0
  673. package/dist/src/teal-frame/deep-select.js +125 -0
  674. package/dist/src/teal-frame/deep-select.js.map +1 -0
  675. package/dist/src/teal-frame/duck-values.d.ts +37 -0
  676. package/dist/src/teal-frame/duck-values.d.ts.map +1 -0
  677. package/dist/src/teal-frame/duck-values.js +173 -0
  678. package/dist/src/teal-frame/duck-values.js.map +1 -0
  679. package/dist/src/teal-frame/errors.d.ts +38 -0
  680. package/dist/src/teal-frame/errors.d.ts.map +1 -0
  681. package/dist/src/teal-frame/errors.js +63 -0
  682. package/dist/src/teal-frame/errors.js.map +1 -0
  683. package/dist/src/teal-frame/expand-values.d.ts +29 -0
  684. package/dist/src/teal-frame/expand-values.d.ts.map +1 -0
  685. package/dist/src/teal-frame/expand-values.js +53 -0
  686. package/dist/src/teal-frame/expand-values.js.map +1 -0
  687. package/dist/src/teal-frame/export-json.d.ts +58 -0
  688. package/dist/src/teal-frame/export-json.d.ts.map +1 -0
  689. package/dist/src/teal-frame/export-json.js +409 -0
  690. package/dist/src/teal-frame/export-json.js.map +1 -0
  691. package/dist/src/teal-frame/extension-tools.d.ts +40 -0
  692. package/dist/src/teal-frame/extension-tools.d.ts.map +1 -0
  693. package/dist/src/teal-frame/extension-tools.js +115 -0
  694. package/dist/src/teal-frame/extension-tools.js.map +1 -0
  695. package/dist/src/teal-frame/extensions-cli.d.ts +2 -0
  696. package/dist/src/teal-frame/extensions-cli.d.ts.map +1 -0
  697. package/dist/src/teal-frame/extensions-cli.js +56 -0
  698. package/dist/src/teal-frame/extensions-cli.js.map +1 -0
  699. package/dist/src/teal-frame/extensions.d.ts +53 -0
  700. package/dist/src/teal-frame/extensions.d.ts.map +1 -0
  701. package/dist/src/teal-frame/extensions.js +110 -0
  702. package/dist/src/teal-frame/extensions.js.map +1 -0
  703. package/dist/src/teal-frame/index.d.ts +23 -0
  704. package/dist/src/teal-frame/index.d.ts.map +1 -0
  705. package/dist/src/teal-frame/index.js +23 -0
  706. package/dist/src/teal-frame/index.js.map +1 -0
  707. package/dist/src/teal-frame/interfaces.d.ts +186 -0
  708. package/dist/src/teal-frame/interfaces.d.ts.map +1 -0
  709. package/dist/src/teal-frame/interfaces.js +2 -0
  710. package/dist/src/teal-frame/interfaces.js.map +1 -0
  711. package/dist/src/teal-frame/line-stream.d.ts +10 -0
  712. package/dist/src/teal-frame/line-stream.d.ts.map +1 -0
  713. package/dist/src/teal-frame/line-stream.js +35 -0
  714. package/dist/src/teal-frame/line-stream.js.map +1 -0
  715. package/dist/src/teal-frame/order-safety.d.ts +15 -0
  716. package/dist/src/teal-frame/order-safety.d.ts.map +1 -0
  717. package/dist/src/teal-frame/order-safety.js +21 -0
  718. package/dist/src/teal-frame/order-safety.js.map +1 -0
  719. package/dist/src/teal-frame/output.d.ts +18 -0
  720. package/dist/src/teal-frame/output.d.ts.map +1 -0
  721. package/dist/src/teal-frame/output.js +63 -0
  722. package/dist/src/teal-frame/output.js.map +1 -0
  723. package/dist/src/teal-frame/parquet-columns.d.ts +15 -0
  724. package/dist/src/teal-frame/parquet-columns.d.ts.map +1 -0
  725. package/dist/src/teal-frame/parquet-columns.js +45 -0
  726. package/dist/src/teal-frame/parquet-columns.js.map +1 -0
  727. package/dist/src/teal-frame/plain-values.d.ts +30 -0
  728. package/dist/src/teal-frame/plain-values.d.ts.map +1 -0
  729. package/dist/src/teal-frame/plain-values.js +69 -0
  730. package/dist/src/teal-frame/plain-values.js.map +1 -0
  731. package/dist/src/teal-frame/row-shape.d.ts +21 -0
  732. package/dist/src/teal-frame/row-shape.d.ts.map +1 -0
  733. package/dist/src/teal-frame/row-shape.js +94 -0
  734. package/dist/src/teal-frame/row-shape.js.map +1 -0
  735. package/dist/src/teal-frame/scalar-function.d.ts +66 -0
  736. package/dist/src/teal-frame/scalar-function.d.ts.map +1 -0
  737. package/dist/src/teal-frame/scalar-function.js +75 -0
  738. package/dist/src/teal-frame/scalar-function.js.map +1 -0
  739. package/dist/src/teal-frame/schema-check.d.ts +43 -0
  740. package/dist/src/teal-frame/schema-check.d.ts.map +1 -0
  741. package/dist/src/teal-frame/schema-check.js +66 -0
  742. package/dist/src/teal-frame/schema-check.js.map +1 -0
  743. package/dist/src/teal-frame/sources.d.ts +14 -0
  744. package/dist/src/teal-frame/sources.d.ts.map +1 -0
  745. package/dist/src/teal-frame/sources.js +28 -0
  746. package/dist/src/teal-frame/sources.js.map +1 -0
  747. package/dist/src/teal-frame/table.d.ts +19 -0
  748. package/dist/src/teal-frame/table.d.ts.map +1 -0
  749. package/dist/src/teal-frame/table.js +64 -0
  750. package/dist/src/teal-frame/table.js.map +1 -0
  751. package/dist/src/teal-frame/udf-types.d.ts +45 -0
  752. package/dist/src/teal-frame/udf-types.d.ts.map +1 -0
  753. package/dist/src/teal-frame/udf-types.js +157 -0
  754. package/dist/src/teal-frame/udf-types.js.map +1 -0
  755. package/dist/src/teal-frame/wkb.d.ts +6 -0
  756. package/dist/src/teal-frame/wkb.d.ts.map +1 -0
  757. package/dist/src/teal-frame/wkb.js +167 -0
  758. package/dist/src/teal-frame/wkb.js.map +1 -0
  759. package/package.json +18 -11
@@ -0,0 +1,575 @@
1
+ import { SQLDialectName } from '@terascope/types';
2
+ import { DataType } from '@terascope/data-types';
3
+ import { getSQLDialect, groupByClause, quoteIdentifier, quoteLiteral, toSQLSort, wholeNumber } from '@terascope/sql-builder';
4
+ import { appendInTransaction } from './append.js';
5
+ import { getContext } from './database.js';
6
+ import { AppendError } from './errors.js';
7
+ import { createTable, nextTableName } from './table.js';
8
+ import { joinSQL, selectList } from './clauses.js';
9
+ import { readParquetSource } from './sources.js';
10
+ import { assertOrderSafe } from './order-safety.js';
11
+ import { resolveRules } from './export-json.js';
12
+ import * as output from './output.js';
13
+ import { makeRowShapers } from './row-shape.js';
14
+ import { expandValuesSQL } from './expand-values.js';
15
+ import { deepSelectSQL, emptySkippedObjects } from './deep-select.js';
16
+ import { distinctLines, parseLines, writeLines } from './line-stream.js';
17
+ /**
18
+ * The DuckDB dialect, shared with `@terascope/xlucene-translator`.
19
+ *
20
+ * `ORDER BY` and `LIMIT`/`OFFSET` are rendered by the dialect, so a sort built by a frame and
21
+ * a sort in a statement from `QueryAccess.restrictSQLQuery` place nulls the same way.
22
+ */
23
+ const dialect = getSQLDialect(SQLDialectName.duckdb);
24
+ /**
25
+ * A frame whose rows live in DuckDB.
26
+ *
27
+ * TealFrame has its own API; it does not wrap or replace `DataFrame`. Its methods fall into
28
+ * three groups:
29
+ *
30
+ * 1. **Compose a statement:** `filter`, `select`, `orderBy`, `limit`, `distinct`, `join`,
31
+ * `deepSelect`, `pruneEmptyObjects`, `expandValues` and `removeEmptyRows`. Each returns a
32
+ * new frame over one more SQL step. Nothing runs yet.
33
+ * 2. **Run an existing statement:** `query` (instance) and `fromSQL` (static).
34
+ * 3. **Consume:** `rows`, `size`, `ndjson`, `writeNDJSON`, `writeParquet`, `listValues` and
35
+ * `countEmptyRows`. These execute the statement and produce output.
36
+ *
37
+ * `filter` and `select` are clause builders, not a search API: `filter` is the `WHERE` clause
38
+ * and `select` is the `SELECT` list, just as `orderBy` is the `ORDER BY`. They exist for
39
+ * callers that build a query one step at a time. For example, `tealFrameAdapter` returns an
40
+ * expression for one function on one column, and a chain of transforms becomes a chain of
41
+ * `select` calls that compose into one statement evaluated in a single pass.
42
+ *
43
+ * If you already have a complete statement, such as one from `QueryAccess`, pass it to
44
+ * `query` whole. Rebuilding a restricted statement from `filter` and `select` can drop a
45
+ * field restriction.
46
+ */
47
+ export class TealFrame {
48
+ ctx;
49
+ config;
50
+ source;
51
+ columns;
52
+ constructor(ctx, config,
53
+ /**
54
+ * Not readonly: `append` may promote a relation to a table, because a frame manages
55
+ * its own storage. Every other operation returns a new frame and leaves this one
56
+ * unchanged.
57
+ */
58
+ source, columns) {
59
+ this.ctx = ctx;
60
+ this.config = config;
61
+ this.source = source;
62
+ this.columns = columns;
63
+ }
64
+ /** The in-flight promotion of a relation to a table, shared by concurrent appends. */
65
+ promotion;
66
+ /** True when the rows are in a real table rather than recomputed per reference. */
67
+ get isMaterialized() {
68
+ return this.source.kind === 'table';
69
+ }
70
+ /**
71
+ * True when this frame's rows come out in a defined order.
72
+ *
73
+ * Set by `orderBy` and kept by the operators that preserve order. Operations that would
74
+ * discard the order check it and throw.
75
+ */
76
+ get isOrdered() {
77
+ return this.source.kind === 'relation' && this.source.ordered === true;
78
+ }
79
+ /** Refuses an operation that would silently discard an ordering - see `order-safety.ts`. */
80
+ assertOrderSafe(operation, other) {
81
+ assertOrderSafe(operation, this.isOrdered || other?.isOrdered === true);
82
+ }
83
+ /** A new relation-backed frame over `sql` on the same database. */
84
+ derive(sql, { config = this.config, columns = this.columns, ordered } = {}) {
85
+ return new TealFrame(this.ctx, config, { kind: 'relation', sql, ordered }, columns);
86
+ }
87
+ /**
88
+ * SQL naming this frame's rows, usable directly in a `FROM` clause.
89
+ *
90
+ * For a materialized frame this is its quoted table name; for a relation it is a
91
+ * parenthesized subquery, so composed frames reach DuckDB's optimizer as a single
92
+ * statement.
93
+ */
94
+ get from() {
95
+ return this.source.kind === 'table'
96
+ ? quoteIdentifier(this.source.table)
97
+ : `(${this.source.sql})`;
98
+ }
99
+ /**
100
+ * Returns a frame over the rows of a complete SQL statement.
101
+ *
102
+ * Use it to run a statement from `QueryAccess.restrictSQLQuery`, which is a finished
103
+ * `SELECT` that already carries the field restrictions:
104
+ *
105
+ * ```ts
106
+ * const sql = await access.restrictSQLQuery(query, { params: frame.searchParams(size) });
107
+ * for await (const row of frame.query(sql).rows()) { ... }
108
+ * ```
109
+ *
110
+ * The statement runs only when rows are requested, and it composes with other operations:
111
+ * `frame.query(sql).limit(10)` is one statement.
112
+ *
113
+ * `config` defaults to this frame's config. Pass the right config when the statement's
114
+ * `SELECT` list produces different fields. If the statement references its source more
115
+ * than once, materialize this frame first; see `searchParams`.
116
+ *
117
+ * @param sql A complete SQL statement.
118
+ * @param config The field types the statement produces. Defaults to this frame's config.
119
+ * @param columns The output column names. Defaults to the top-level fields of `config`.
120
+ */
121
+ query(sql, config = this.config, columns) {
122
+ if (!sql.trim()) {
123
+ throw new TypeError('query requires a SQL statement');
124
+ }
125
+ return this.derive(sql, { config, columns: columns ?? columnsOf(config) });
126
+ }
127
+ /**
128
+ * Runs SQL and returns positional rows, with values as DuckDB renders them to JSON. This is
129
+ * for inspection, not for reading data; use `query(sql).rows()` to read data.
130
+ *
131
+ * Unlike `query`, it needs no `DataTypeConfig`, so it can run catalog queries such as
132
+ * `DESCRIBE`. It also skips the conversion to output values, so it shows what DuckDB
133
+ * actually stores.
134
+ *
135
+ * @internal
136
+ */
137
+ rawRows(sql) {
138
+ return this.ctx.rows(sql);
139
+ }
140
+ /**
141
+ * The `SQLSearchParams` that name this frame as the source of a `QueryAccess` statement.
142
+ *
143
+ * A materialized frame reports `table`, which is quoted as an identifier. A relation-backed
144
+ * frame reports `relation`, its SQL used verbatim.
145
+ *
146
+ * Prefer a table when the generated statement may reference its source more than once
147
+ * (a self-join, a correlated subquery, a `UNION`). Each reference to a relation re-runs the
148
+ * whole subquery, while a table is read directly. Call `materialize()` first in that case.
149
+ *
150
+ * @param size The page size, rendered as `LIMIT`.
151
+ * @param from The page start, rendered as `OFFSET`.
152
+ */
153
+ searchParams(size, from) {
154
+ const source = this.source.kind === 'table'
155
+ ? { table: this.source.table }
156
+ : { relation: this.from };
157
+ return {
158
+ ...source,
159
+ ...(size != null && { size }),
160
+ ...(from != null && { from }),
161
+ };
162
+ }
163
+ /** The backing table name, when this frame is materialized. */
164
+ get table() {
165
+ return this.source.kind === 'table' ? this.source.table : undefined;
166
+ }
167
+ /**
168
+ * Creates an empty frame backed by a new table. This is the usual way to make a frame;
169
+ * add rows with `append`.
170
+ */
171
+ static async create(config, options = {}) {
172
+ const context = await getContext(options.database);
173
+ const { table, columns } = await createTable(context, config, options.name);
174
+ return new TealFrame(context, config, { kind: 'table', table }, columns);
175
+ }
176
+ /**
177
+ * Adds rows to this frame, from parsed records or from Parquet files, and returns the
178
+ * number of rows added.
179
+ *
180
+ * Records are coerced to the frame's field types; Parquet is already typed and is not.
181
+ *
182
+ * If the frame is a relation, it is first promoted to a table in place. Frames already
183
+ * derived from it keep the SQL they captured and are unaffected.
184
+ *
185
+ * The append runs in a transaction, so a failed batch leaves the table exactly as it was.
186
+ * When a table is assembled from many batches, a bad one cannot corrupt those already in it.
187
+ *
188
+ * **Finish appending before deriving other frames from this one.** Derived frames read the
189
+ * table by name, so a later append changes their results too.
190
+ */
191
+ async append(source, options = {}) {
192
+ await this.ensureTable();
193
+ const table = this.source.kind === 'table' ? this.source.table : '';
194
+ // on its own connection and in a transaction; see `appendInTransaction`
195
+ return appendInTransaction(this.ctx.instance, this.config, table, source, options);
196
+ }
197
+ /**
198
+ * Promotes a relation to a table in place, so this frame has storage to append to.
199
+ *
200
+ * The promotion is shared, so two concurrent appends do not each create a table and split
201
+ * the rows between them.
202
+ */
203
+ async ensureTable() {
204
+ if (this.source.kind === 'table')
205
+ return;
206
+ this.promotion ??= this.promoteToTable();
207
+ await this.promotion;
208
+ }
209
+ async promoteToTable() {
210
+ const table = nextTableName('appendable');
211
+ await this.ctx.run(`CREATE OR REPLACE TABLE ${quoteIdentifier(table)} AS SELECT * FROM ${this.from}`);
212
+ this.source = { kind: 'table', table };
213
+ }
214
+ /**
215
+ * Creates a frame from parsed JS records, such as Elasticsearch documents.
216
+ *
217
+ * Each value is coerced to its field type. In `strict` mode (the default) the first value
218
+ * that does not fit throws a `CoercionFailureError`, as `DataFrame`'s builder does. In
219
+ * `lenient` mode the value is stored as null and each failing field is recorded with a count
220
+ * and an example value.
221
+ *
222
+ * If the records cannot be added, the new table is dropped before the error is thrown.
223
+ */
224
+ static async fromRecords(config, records, options = {}) {
225
+ const frame = await TealFrame.create(config, options);
226
+ try {
227
+ await frame.append({ records }, { mode: options.mode });
228
+ }
229
+ catch (err) {
230
+ // No frame is returned, so no caller could drop the table; drop it here. A plain
231
+ // `append` does not do this, because there the caller holds the frame and the
232
+ // table may hold earlier batches.
233
+ await frame.destroy();
234
+ // Unwrapped: nothing survived, so `AppendError`'s context adds nothing, and this
235
+ // throws what `DataFrame` throws, a `CoercionFailureError`.
236
+ throw err instanceof AppendError ? err.cause : err;
237
+ }
238
+ return frame;
239
+ }
240
+ /**
241
+ * Creates a frame over Parquet files, without coercing their values.
242
+ *
243
+ * Parquet carries its own schema, so column types are already enforced; the values are
244
+ * expected to have been validated when the files were written.
245
+ *
246
+ * @param path One path, a list of paths, or a glob. Several files read as one relation.
247
+ */
248
+ static async fromParquet(config, path, options = {}) {
249
+ const context = await getContext(options.database);
250
+ // relation-backed: Parquet is queried in place, so nothing is copied until rows are
251
+ // requested. `materialize()` turns it into one table.
252
+ const sql = `SELECT * FROM ${readParquetSource(path)}`;
253
+ return new TealFrame(context, config, { kind: 'relation', sql }, columnsOf(config));
254
+ }
255
+ /**
256
+ * Creates a frame over a complete SQL statement whose source is named in the SQL itself,
257
+ * such as `read_parquet([...])` or an existing table.
258
+ *
259
+ * Use the instance method `query()` instead when the statement was built against an
260
+ * existing frame.
261
+ *
262
+ * ```ts
263
+ * const sql = await access.restrictSQLQuery(query, {
264
+ * params: { relation: `read_parquet(${...})`, size: 100 }
265
+ * });
266
+ * const frame = await TealFrame.fromSQL(sql, config);
267
+ * ```
268
+ *
269
+ * Nothing runs until rows are requested. The statement is not validated, so any error
270
+ * comes from DuckDB when it executes.
271
+ */
272
+ static async fromSQL(sql, config, options = {}) {
273
+ if (!sql.trim()) {
274
+ throw new TypeError('fromSQL requires a SQL statement');
275
+ }
276
+ const context = await getContext(options.database);
277
+ return new TealFrame(context, config, { kind: 'relation', sql }, columnsOf(config));
278
+ }
279
+ /**
280
+ * Copies this frame's rows into a new table and returns a new frame over it. The original
281
+ * frame is unchanged. A frame that is already a table is returned as is.
282
+ *
283
+ * A relation is recomputed every time it is referenced, so materializing pays off when the
284
+ * relation is expensive and used more than once. For a single use it is slower, and a
285
+ * cheap relation over a table never needs it.
286
+ */
287
+ async materialize(name) {
288
+ if (this.isMaterialized)
289
+ return this;
290
+ const table = nextTableName(name ?? 'materialized');
291
+ await this.ctx.run(`CREATE OR REPLACE TABLE ${quoteIdentifier(table)} AS SELECT * FROM ${this.from}`);
292
+ return new TealFrame(this.ctx, this.config, { kind: 'table', table }, this.columns);
293
+ }
294
+ /**
295
+ * Sets the `SELECT` list, returning a new frame.
296
+ *
297
+ * Every column-level operation is a projection: applying a transform or validation,
298
+ * renaming, dropping, or adding a derived column. Chained `select` calls compose into one
299
+ * statement evaluated in a single pass, where `DataFrame` makes a pass per function.
300
+ * Expressions may be native SQL or calls to registered UDFs.
301
+ *
302
+ * To run a complete statement, use `query` instead.
303
+ *
304
+ * @param expressions A map of `{ outputName: sqlExpression }`, or a verbatim `SELECT` list.
305
+ * @param options The result's config and column names, and an optional `groupBy`. Grouping
306
+ * an ordered frame throws, because it would discard the order.
307
+ */
308
+ select(expressions, options = {}) {
309
+ const { config = this.config, groupBy } = options;
310
+ const { list, names } = selectList(expressions, options.columns);
311
+ if (groupBy?.length)
312
+ this.assertOrderSafe('select with groupBy');
313
+ const sql = joinSQL(`SELECT ${list} FROM ${this.from}`, groupByClause(groupBy));
314
+ return this.derive(sql, { config, columns: names, ordered: this.isOrdered });
315
+ }
316
+ /**
317
+ * Joins another frame, returning a new frame.
318
+ *
319
+ * Either side may be a table or a relation. Both sides are aliased (`a` and `b` by
320
+ * default), because two frames often share column names; write `on` and `select` in terms
321
+ * of those aliases. `groupBy` lets a join and an aggregation run as one statement.
322
+ *
323
+ * Both frames must be in the same database, and neither may be ordered, because a join
324
+ * does not keep row order.
325
+ */
326
+ join(other, options) {
327
+ if (other.ctx !== this.ctx) {
328
+ throw new TypeError('join requires both frames to be in the same database:'
329
+ + ' they are in different databases, so neither can see the other\'s tables');
330
+ }
331
+ this.assertOrderSafe('join', other);
332
+ const { list, names } = selectList(options.select, options.columns);
333
+ const as = options.as ?? 'a';
334
+ const otherAs = options.otherAs ?? 'b';
335
+ const type = (options.type ?? 'inner').toUpperCase();
336
+ const sql = joinSQL(`SELECT ${list}`
337
+ + ` FROM ${this.from} AS ${quoteIdentifier(as)}`
338
+ + ` ${type} JOIN ${other.from} AS ${quoteIdentifier(otherAs)}`
339
+ + ` ON ${options.on}`, groupByClause(options.groupBy));
340
+ return this.derive(sql, { config: options.config, columns: names });
341
+ }
342
+ /**
343
+ * Adds a `WHERE` clause, returning a new frame.
344
+ *
345
+ * The predicate is raw SQL, so the caller must quote identifiers itself: a field named
346
+ * `group` needs `filter('"group" = \'y\'')`. To run a complete statement, such as one
347
+ * from `QueryAccess`, use `query` instead.
348
+ *
349
+ * A filter keeps row order, so a sorted frame stays sorted.
350
+ */
351
+ filter(predicate) {
352
+ return this.derive(`SELECT * FROM ${this.from} WHERE ${predicate}`, {
353
+ ordered: this.isOrdered,
354
+ });
355
+ }
356
+ /**
357
+ * Removes duplicate rows, comparing every column (`SELECT DISTINCT *`). Returns a new
358
+ * frame.
359
+ *
360
+ * It works on list and object columns, and treats nulls as equal, so rows that are null in
361
+ * the same column collapse into one.
362
+ *
363
+ * `DISTINCT` does not keep row order, so it throws on an ordered frame and its result is
364
+ * unordered. Remove duplicates first, then sort.
365
+ */
366
+ distinct() {
367
+ this.assertOrderSafe('distinct');
368
+ return this.derive(`SELECT DISTINCT * FROM ${this.from}`);
369
+ }
370
+ /**
371
+ * Adds an `ORDER BY`, returning a new frame.
372
+ *
373
+ * The sort wraps the current relation in a subquery. DuckDB's optimizer flattens the
374
+ * nesting, so `.orderBy(x).limit(10)` runs as a single top-N query. The order of calls
375
+ * means what it says:
376
+ *
377
+ * | chain | means |
378
+ * |---|---|
379
+ * | `.orderBy(x).limit(10)` | the top 10 by x |
380
+ * | `.limit(10).orderBy(x)` | an arbitrary 10, sorted |
381
+ * | `.orderBy(x).filter(p).limit(10)` | the top 10 of the matching rows |
382
+ * | `.orderBy(x).limit(10).filter(p)` | the top 10, then filtered - may yield fewer |
383
+ *
384
+ * `select`, `filter` and `limit` may follow a sort. `join`, `distinct` and a grouping
385
+ * `select` throw on a sorted frame, because they would discard the order. `materialize()`
386
+ * drops the order, because a table has none.
387
+ *
388
+ * Nulls sort as in `DataFrame`: first when ascending, last when descending.
389
+ *
390
+ * **Ties are not ordered deterministically.** DuckDB sorts in parallel and is not stable,
391
+ * so rows with equal sort values can come back in a different order on each run, and
392
+ * paging over them can repeat or skip rows. `DataFrame` sorts with the stable
393
+ * `Array#sort`. A caller that pages must end `sort` with a unique field.
394
+ *
395
+ * @param sort The sort terms, at least one.
396
+ */
397
+ orderBy(sort) {
398
+ if (sort.length === 0) {
399
+ throw new TypeError('orderBy requires at least one sort term');
400
+ }
401
+ const terms = dialect.orderBy(sort.map(toSQLSort));
402
+ return this.derive(`SELECT * FROM ${this.from} ORDER BY ${terms}`, { ordered: true });
403
+ }
404
+ /**
405
+ * Adds `LIMIT` and `OFFSET`, returning a new frame.
406
+ *
407
+ * Either bound may be given alone; with neither, the frame is returned unchanged, so
408
+ * optional paging values can be passed straight through.
409
+ *
410
+ * Prefer `limit` to stopping early in `rows()`. DuckDB stops reading once an unsorted
411
+ * limit is satisfied, and for a sorted one keeps only the top `count` rows instead of
412
+ * sorting everything. Breaking out of `rows()` stops only the JS consumer.
413
+ *
414
+ * A limit keeps row order. Note that `size()` on a limited frame counts the page, not the
415
+ * total; call `size()` on the frame before the limit to get the total.
416
+ *
417
+ * @param count The maximum number of rows (`LIMIT`).
418
+ * @param offset The number of rows to skip (`OFFSET`).
419
+ */
420
+ limit(count, offset) {
421
+ if (count == null && offset == null)
422
+ return this;
423
+ // validated here so the error names this method's parameters; the dialect's own
424
+ // error would name `size` and `from`
425
+ if (count != null)
426
+ wholeNumber(count, 'limit\'s count');
427
+ if (offset != null)
428
+ wholeNumber(offset, 'limit\'s offset');
429
+ return this.derive(joinSQL(`SELECT * FROM ${this.from}`, dialect.limitOffset(count, offset)), { ordered: this.isOrdered });
430
+ }
431
+ /** Counts the frame's rows. */
432
+ async size() {
433
+ return Number(await this.ctx.scalar(`SELECT count(*) FROM ${this.from}`) ?? 0);
434
+ }
435
+ /**
436
+ * Writes the frame to a Parquet file compressed with zstd, for moving data between
437
+ * processes.
438
+ *
439
+ * Parquet's built-in zstd compression is much faster than gzipping JSON output and
440
+ * produces a smaller file.
441
+ */
442
+ async writeParquet(path) {
443
+ await output.writeParquet(this.ctx, this.from, this.config, path);
444
+ }
445
+ /**
446
+ * Writes the frame to a file as ldjson, one JSON object per line.
447
+ *
448
+ * DuckDB writes the file, so rows never become JS objects and this is much faster than
449
+ * serializing `rows()`.
450
+ *
451
+ * The output is byte-identical to `DataFrame.toJSON` with the same `SerializeOptions`,
452
+ * including ISO 8601 dates and integers past `MAX_SAFE_INTEGER` written as strings. See
453
+ * `export-json.ts`.
454
+ *
455
+ * With no options, null fields and empty objects are omitted (`removeNullFields: true`).
456
+ * Any explicit `SerializeOptions` flag means exactly what it means to `DataFrame`.
457
+ *
458
+ * The promise resolves once the whole file is written. Use `ndjson()` to stream the lines
459
+ * instead, for example to upload them as they are produced.
460
+ */
461
+ async writeNDJSON(path, options = {}) {
462
+ // removing duplicate rows keeps the first of each in stream order, which a COPY
463
+ // cannot express, so that option writes through the stream instead
464
+ if (resolveRules(options).skipDuplicateObjects) {
465
+ await writeLines(path, this.ndjson(options));
466
+ return;
467
+ }
468
+ await this.ctx.run(`COPY (${output.jsonLinesSQL(this.from, this.config, options)}) TO ${quoteLiteral(path)}`
469
+ + ' (FORMAT CSV, HEADER false, QUOTE \'\', ESCAPE \'\', DELIMITER \'\u0007\')');
470
+ }
471
+ /**
472
+ * Streams the frame as ldjson lines, byte-identical to what `writeNDJSON` writes.
473
+ *
474
+ * DuckDB renders each line, so JavaScript only passes strings along. A caller can upload
475
+ * the lines as they arrive and never hold the whole result in memory.
476
+ */
477
+ ndjson(options = {}) {
478
+ const lines = this.ctx.streamColumnStrings(output.jsonLinesSQL(this.from, this.config, options));
479
+ return resolveRules(options).skipDuplicateObjects ? distinctLines(lines) : lines;
480
+ }
481
+ /**
482
+ * Streams the frame's rows as JS objects.
483
+ *
484
+ * With `options`, it yields what `DataFrame.rows(true, options)` yields, by parsing the
485
+ * lines `ndjson(options)` produces. Without options, it yields every column, with a nil
486
+ * value as `null`.
487
+ *
488
+ * There is no `toArray()` or `getColumn()`: the data lives in DuckDB, so column-level work
489
+ * belongs in SQL, and a result may be too large to hold as an array.
490
+ */
491
+ rows(options) {
492
+ if (options != null)
493
+ return parseLines(this.ndjson(options));
494
+ return this.ctx.streamRowObjects(`SELECT * FROM ${this.from}`, makeRowShapers(this.config));
495
+ }
496
+ /**
497
+ * Streams the elements of a list column in the first row, as
498
+ * `ListVector.getRowIterator(0, true, options)` yields them.
499
+ *
500
+ * Useful for a one-row frame whose single list column holds the real result. Each element
501
+ * is rendered by the same rules as `ndjson(options)`. A nil element is yielded as `null`
502
+ * under `useNullForUndefined`, as `undefined` otherwise, and skipped under
503
+ * `skipNilListValues` (or `skipNilObjectValues` for object elements). As in `DataFrame`,
504
+ * nothing is yielded under `skipEmptyArrays` when the column is empty, and
505
+ * `skipDuplicateObjects` is not supported.
506
+ */
507
+ listValues(column, options = {}) {
508
+ return output.listValues(this.ctx, this.from, this.config, column, options);
509
+ }
510
+ /**
511
+ * Keeps only the selected fields, as `DataFrame.deepSelect` does. Dotted paths select
512
+ * fields inside nested objects, and names that do not exist are ignored. See
513
+ * `deep-select.ts`.
514
+ */
515
+ deepSelect(fields) {
516
+ const { sql, config, columns } = deepSelectSQL(this.from, this.columns, this.config, fields);
517
+ return this.derive(sql, { config, columns, ordered: this.isOrdered });
518
+ }
519
+ /**
520
+ * Drops every Object column marked `_skip_if_empty` that has no declared child fields left,
521
+ * typically after `deepSelect`. Decided from the config alone; no rows are read.
522
+ */
523
+ pruneEmptyObjects() {
524
+ const dropped = new Set(emptySkippedObjects(this.config));
525
+ if (dropped.size === 0)
526
+ return this;
527
+ const columns = this.columns.filter((column) => !dropped.has(column));
528
+ const fields = Object.fromEntries(Object.entries(this.config.fields ?? {})
529
+ .filter(([name]) => !dropped.has(name.split('.', 1)[0])));
530
+ const config = { ...this.config, fields };
531
+ const sql = columns.length
532
+ ? `SELECT ${columns.map(quoteIdentifier).join(', ')} FROM ${this.from}`
533
+ : `SELECT * FROM ${this.from} LIMIT 0`;
534
+ return this.derive(sql, { config, columns, ordered: this.isOrdered });
535
+ }
536
+ /**
537
+ * Expands array fields into one row per element, as the `@expandValues` directive does.
538
+ * See `expand-values.ts` for the two modes. Row order is kept, and so is a row with nothing
539
+ * to expand. The expanded fields become `array: false`.
540
+ */
541
+ expandValues(fields, options) {
542
+ const { sql, config } = expandValuesSQL(this.from, this.columns, this.config, fields, options);
543
+ return this.derive(sql, { config, ordered: this.isOrdered });
544
+ }
545
+ /**
546
+ * Counts the rows where every column is null, as `DataFrame.countEmptyRows` does. A row
547
+ * holding `{}` or `[]` is not empty, because the stored value is tested, not its JSON form.
548
+ */
549
+ async countEmptyRows() {
550
+ return Number(await this.ctx.scalar(`SELECT count(*) FROM ${this.from} WHERE ${this.emptyRow()}`) ?? 0);
551
+ }
552
+ /** Keeps the rows that are not empty, in order, as `DataFrame.removeEmptyRows` does. */
553
+ removeEmptyRows() {
554
+ return this.filter(`NOT (${this.emptyRow()})`);
555
+ }
556
+ emptyRow() {
557
+ return this.columns.map((column) => `${quoteIdentifier(column)} IS NULL`).join(' AND ');
558
+ }
559
+ /**
560
+ * Drops the backing table, if this frame has one. A relation has nothing to drop.
561
+ *
562
+ * Call it only once no frame derived from this one is still in use, because derived
563
+ * frames read the table by name.
564
+ */
565
+ async destroy() {
566
+ if (this.source.kind === 'table') {
567
+ await this.ctx.run(`DROP TABLE IF EXISTS ${quoteIdentifier(this.source.table)}`);
568
+ }
569
+ }
570
+ }
571
+ /** A config's top-level columns, as `toDuckDB` lays them out. */
572
+ function columnsOf(config) {
573
+ return Object.keys(new DataType(config).toDuckDB());
574
+ }
575
+ //# sourceMappingURL=TealFrame.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"TealFrame.js","sourceRoot":"","sources":["../../../src/teal-frame/TealFrame.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,45 @@
1
+ import { DuckDBConnection, DuckDBInstance } from '@duckdb/node-api';
2
+ import { AppendOptions, AppendSource, FrameConfig } from './interfaces.js';
3
+ /**
4
+ * Loads rows into a frame's table. Used by `TealFrame.append` and `fromRecords`.
5
+ *
6
+ * Records arrive as JS objects, are coerced with `coerceToType` (the same function
7
+ * `DataFrame`'s builder uses) and are appended as typed values, with no JSON round trip.
8
+ * Because the coercion code is shared, field semantics match `DataFrame` exactly.
9
+ *
10
+ * These are free functions because none of them needs the frame. Each takes the append's own
11
+ * connection (see `appendInTransaction`), the table name and the input.
12
+ */
13
+ /** Counts a table's rows without throwing. Used while reporting a failure, where a second
14
+ * error would hide the original one. */
15
+ export declare function countQuietly(connection: DuckDBConnection, table: string): Promise<number | undefined>;
16
+ /**
17
+ * Appends Parquet files with `INSERT ... BY NAME`.
18
+ *
19
+ * Columns are matched by name because a positional `INSERT ... SELECT *` fails when a file's
20
+ * column order differs from the table's, and separately produced files may not agree on order.
21
+ *
22
+ * No coercion is needed: Parquet is typed, and the values were coerced by `fromRecords` when
23
+ * the file was written.
24
+ */
25
+ export declare function appendParquet(connection: DuckDBConnection, table: string, paths: string | readonly string[]): Promise<number>;
26
+ /**
27
+ * Coerces records with `coerceToType` and appends them through a typed DuckDB appender.
28
+ *
29
+ * `strict` (the default) throws on the first bad value, as `DataFrame`'s builder does.
30
+ * `lenient` stores null instead and collects each failing field with a count and an example.
31
+ */
32
+ export declare function appendRecords(connection: DuckDBConnection, config: FrameConfig, table: string, records: readonly Record<string, unknown>[], options: AppendOptions): Promise<number>;
33
+ /**
34
+ * Runs one `TealFrame.append` as an atomic transaction on its own connection.
35
+ *
36
+ * **The separate connection is required for correctness.** A DuckDB transaction belongs to a
37
+ * connection, and the shared connection is used by the whole process. If two appends shared it,
38
+ * the second `BEGIN` would throw, its `ROLLBACK` would discard the first append's rows, and every
39
+ * later statement would fail with `Current transaction is aborted`.
40
+ *
41
+ * With one connection per append, concurrent appends to the same table are safe: DuckDB's MVCC
42
+ * lets appends proceed without write conflicts.
43
+ */
44
+ export declare function appendInTransaction(instance: DuckDBInstance, config: FrameConfig, table: string, source: AppendSource, options: AppendOptions): Promise<number>;
45
+ //# sourceMappingURL=append.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"append.d.ts","sourceRoot":"","sources":["../../../src/teal-frame/append.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAmB,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAMrF,OAAO,EACH,aAAa,EAAE,YAAY,EAAmB,WAAW,EAC5D,MAAM,iBAAiB,CAAC;AAEzB;;;;;;;;;EASE;AAEF;wCACwC;AACxC,wBAAsB,YAAY,CAC9B,UAAU,EAAE,gBAAgB,EAAE,KAAK,EAAE,MAAM,GAC5C,OAAO,CAAC,MAAM,GAAG,SAAS,CAAC,CAU7B;AAED;;;;;;;;EAQE;AACF,wBAAsB,aAAa,CAC/B,UAAU,EAAE,gBAAgB,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,SAAS,MAAM,EAAE,GAC/E,OAAO,CAAC,MAAM,CAAC,CAOjB;AAED;;;;;EAKE;AACF,wBAAsB,aAAa,CAC/B,UAAU,EAAE,gBAAgB,EAC5B,MAAM,EAAE,WAAW,EACnB,KAAK,EAAE,MAAM,EACb,OAAO,EAAE,SAAS,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,EAC3C,OAAO,EAAE,aAAa,GACvB,OAAO,CAAC,MAAM,CAAC,CA2DjB;AAED;;;;;;;;;;EAUE;AACF,wBAAsB,mBAAmB,CACrC,QAAQ,EAAE,cAAc,EACxB,MAAM,EAAE,WAAW,EACnB,KAAK,EAAE,MAAM,EACb,MAAM,EAAE,YAAY,EACpB,OAAO,EAAE,aAAa,GACvB,OAAO,CAAC,MAAM,CAAC,CA2BjB"}