@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,63 @@
1
+ import { DataType } from '@terascope/data-types';
2
+ import { quoteIdentifier, quoteLiteral } from '@terascope/sql-builder';
3
+ import { buildJsonExpression, buildJsonListElements, buildJsonRowFilter, resolveRules } from './export-json.js';
4
+ import { int64Column } from './parquet-columns.js';
5
+ /**
6
+ * Implementations of `TealFrame`'s output methods: `writeParquet`, the JSON-lines query behind
7
+ * `ndjson`, `writeNDJSON` and `rows(options)`, and `listValues`. Their contracts are documented
8
+ * on `TealFrame`.
9
+ */
10
+ /** Writes the frame to a zstd Parquet file, narrowing 128-bit columns to their declared type. */
11
+ export async function writeParquet(ctx, from, config, path) {
12
+ const columns = await ctx.columnTypes(`SELECT * FROM ${from}`);
13
+ const declared = new DataType(config).toDuckDB();
14
+ const list = columns
15
+ .map(({ name, type }) => int64Column(name, type, declared[name]))
16
+ .join(', ');
17
+ // GEOPARQUET_VERSION 'BOTH' writes Parquet's native GEOMETRY logical type, which, unlike
18
+ // the GeoParquet 1.0 default, also works for nested values. A GeoJSON array or an object's
19
+ // GeoJSON member then reads back as GEOMETRY instead of BLOB (BLOB has no cast to
20
+ // GEOMETRY). The 1.0 metadata is still written for readers that only support it.
21
+ await ctx.run(`COPY (SELECT ${list} FROM ${from}) TO ${quoteLiteral(path)}`
22
+ + ' (FORMAT parquet, COMPRESSION zstd, GEOPARQUET_VERSION \'BOTH\')');
23
+ }
24
+ /**
25
+ * SQL that renders one JSON line per row, as `DataFrame.toJSON` does with the same options.
26
+ * Rows that `skipEmptyObjects` drops are filtered out. See `export-json.ts`.
27
+ */
28
+ export function jsonLinesSQL(from, config, options) {
29
+ const expression = buildJsonExpression(config, options);
30
+ const filter = buildJsonRowFilter(config, options);
31
+ return `SELECT ${expression} AS json FROM ${from}` + (filter ? ` WHERE ${filter}` : '');
32
+ }
33
+ /** Yields one row's LIST column element by element, like `ListVector.getRowIterator`. */
34
+ export async function* listValues(ctx, from, config, column, options) {
35
+ const rules = resolveRules(options);
36
+ if (rules.skipDuplicateObjects) {
37
+ throw new Error('ListVector->getIterator is incompatible with skipDuplicateObjects');
38
+ }
39
+ const { sql, isObject } = buildJsonListElements(config, column, options);
40
+ const nilValue = rules.useNullForUndefined ? null : undefined;
41
+ const skipNil = rules.skipNilListValues || (isObject && rules.skipNilObjectValues);
42
+ if (rules.skipEmptyArrays) {
43
+ const values = await ctx.scalar(`SELECT count(${quoteIdentifier(column)}) FROM ${from}`);
44
+ if (Number(values) === 0)
45
+ return;
46
+ }
47
+ const [row] = await ctx.rows(`SELECT ${sql} FROM ${from} LIMIT 1`);
48
+ if (row == null)
49
+ return;
50
+ const elements = row[0];
51
+ if (elements == null) {
52
+ if (!skipNil)
53
+ yield nilValue;
54
+ return;
55
+ }
56
+ for (const element of elements) {
57
+ if (element != null)
58
+ yield JSON.parse(element);
59
+ else if (!skipNil)
60
+ yield nilValue;
61
+ }
62
+ }
63
+ //# sourceMappingURL=output.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"output.js","sourceRoot":"","sources":["../../../src/teal-frame/output.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,15 @@
1
+ import { DuckDBType } from '@duckdb/node-api';
2
+ /**
3
+ * Returns one column of the Parquet projection, with any 128-bit integer narrowed.
4
+ *
5
+ * **Parquet has no 128-bit integer, and DuckDB silently writes one as a DOUBLE**, which changes
6
+ * every value past 2^53. A stored Long is already a BIGINT; this handles computed values
7
+ * (`n::HUGEINT + 1`, a UDF result, `ipToInt` on IPv6).
8
+ *
9
+ * The column is cast to the type declared in the config. Editing DuckDB's rendered type string
10
+ * instead would also rewrite a struct member named `HUGEINT`. The cast is exact for values that
11
+ * fit and fails the write with DuckDB's out-of-range error for values that do not. A wide column
12
+ * the config does not declare is rejected, because there is no correct type to choose.
13
+ */
14
+ export declare function int64Column(name: string, type: DuckDBType, declared: string | undefined): string;
15
+ //# sourceMappingURL=parquet-columns.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"parquet-columns.d.ts","sourceRoot":"","sources":["../../../src/teal-frame/parquet-columns.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAgB,MAAM,kBAAkB,CAAC;AA8B5D;;;;;;;;;;;EAWE;AACF,wBAAgB,WAAW,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,UAAU,EAAE,QAAQ,EAAE,MAAM,GAAG,SAAS,GAAG,MAAM,CAUhG"}
@@ -0,0 +1,45 @@
1
+ import { DuckDBTypeId } from '@duckdb/node-api';
2
+ import { quoteIdentifier } from '@terascope/sql-builder';
3
+ /**
4
+ * Builds the column list `writeParquet` selects, so every column is written as a type Parquet
5
+ * can hold exactly. See `int64Column`.
6
+ */
7
+ /** DuckDB's 128-bit integers, which Parquet has no type for. */
8
+ const WIDE_INTEGER_IDS = new Set([
9
+ DuckDBTypeId.HUGEINT, DuckDBTypeId.UHUGEINT,
10
+ ]);
11
+ /** True when a 128-bit integer appears anywhere in a type, including nested members. */
12
+ function hasWideInteger(type) {
13
+ if (WIDE_INTEGER_IDS.has(type.typeId))
14
+ return true;
15
+ const nested = type;
16
+ return [
17
+ ...(nested.entryTypes ?? []),
18
+ ...(nested.memberTypes ?? []),
19
+ ...(nested.valueType ? [nested.valueType] : []),
20
+ ...(nested.keyType ? [nested.keyType] : []),
21
+ ].some(hasWideInteger);
22
+ }
23
+ /**
24
+ * Returns one column of the Parquet projection, with any 128-bit integer narrowed.
25
+ *
26
+ * **Parquet has no 128-bit integer, and DuckDB silently writes one as a DOUBLE**, which changes
27
+ * every value past 2^53. A stored Long is already a BIGINT; this handles computed values
28
+ * (`n::HUGEINT + 1`, a UDF result, `ipToInt` on IPv6).
29
+ *
30
+ * The column is cast to the type declared in the config. Editing DuckDB's rendered type string
31
+ * instead would also rewrite a struct member named `HUGEINT`. The cast is exact for values that
32
+ * fit and fails the write with DuckDB's out-of-range error for values that do not. A wide column
33
+ * the config does not declare is rejected, because there is no correct type to choose.
34
+ */
35
+ export function int64Column(name, type, declared) {
36
+ const column = quoteIdentifier(name);
37
+ if (!hasWideInteger(type))
38
+ return column;
39
+ if (declared == null) {
40
+ throw new TypeError(`Cannot write column "${name}" to Parquet: it holds a 128-bit integer (${type}), which`
41
+ + ' Parquet cannot carry, and the frame config does not declare it');
42
+ }
43
+ return `CAST(${column} AS ${declared}) AS ${column}`;
44
+ }
45
+ //# sourceMappingURL=parquet-columns.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"parquet-columns.js","sourceRoot":"","sources":["../../../src/teal-frame/parquet-columns.ts"],"names":[],"mappings":"AAAA,OAAO,EAAc,YAAY,EAAE,MAAM,kBAAkB,CAAC;AAC5D,OAAO,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AAEzD;;;EAGE;AAEF,gEAAgE;AAChE,MAAM,gBAAgB,GAA8B,IAAI,GAAG,CAAC;IACxD,YAAY,CAAC,OAAO,EAAE,YAAY,CAAC,QAAQ;CAC9C,CAAC,CAAC;AAEH,wFAAwF;AACxF,SAAS,cAAc,CAAC,IAAgB;IACpC,IAAI,gBAAgB,CAAC,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC;QAAE,OAAO,IAAI,CAAC;IACnD,MAAM,MAAM,GAAG,IAKd,CAAC;IACF,OAAO;QACH,GAAG,CAAC,MAAM,CAAC,UAAU,IAAI,EAAE,CAAC;QAC5B,GAAG,CAAC,MAAM,CAAC,WAAW,IAAI,EAAE,CAAC;QAC7B,GAAG,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;QAC/C,GAAG,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;KAC9C,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;AAC3B,CAAC;AAED;;;;;;;;;;;EAWE;AACF,MAAM,UAAU,WAAW,CAAC,IAAY,EAAE,IAAgB,EAAE,QAA4B;IACpF,MAAM,MAAM,GAAG,eAAe,CAAC,IAAI,CAAC,CAAC;IACrC,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC;QAAE,OAAO,MAAM,CAAC;IACzC,IAAI,QAAQ,IAAI,IAAI,EAAE,CAAC;QACnB,MAAM,IAAI,SAAS,CACf,wBAAwB,IAAI,6CAA6C,IAAI,UAAU;cACrF,iEAAiE,CACtE,CAAC;IACN,CAAC;IACD,OAAO,QAAQ,MAAM,OAAO,QAAQ,QAAQ,MAAM,EAAE,CAAC;AACzD,CAAC"}
@@ -0,0 +1,30 @@
1
+ /**
2
+ * Converts values read from DuckDB into the plain JS values `rows()` returns.
3
+ *
4
+ * `rows()` results are sent straight to callers, so no DuckDB value class may leak through:
5
+ *
6
+ * - LIST arrives as a `DuckDBListValue`, which would serialize as `{"items":[...]}`. It becomes
7
+ * an array.
8
+ * - TIMESTAMP arrives as a `DuckDBTimestampValue`. It is rendered with `toISO8601`, as
9
+ * `DateVector.toJSONCompatibleValue` does.
10
+ * - GEOMETRY arrives as WKB bytes. It is decoded back to the GeoShape a `GeoJSON` field holds.
11
+ * - BIGINT and HUGEINT arrive as a JS `bigint`, which `JSON.stringify` cannot serialize.
12
+ * `bigIntToPlain` returns a number when the value fits exactly and a decimal string otherwise.
13
+ *
14
+ * `core-utils`' `bigIntToJSON` is not used, because it is wrong for values read from DuckDB
15
+ * (#4555). It subtracts 1 from every positive value above the safe limit, to cancel a `+1` that
16
+ * core-utils' parser adds, so a value that was never parsed comes back one too low. Its bound
17
+ * is also a signed comparison, so large negative values lose precision instead of becoming
18
+ * strings.
19
+ *
20
+ * The rule here is the same as in `export-json.ts` (`abs(value) > MAX_SAFE` becomes a decimal
21
+ * string, anything smaller a number), so `rows()` and `ndjson()` always agree.
22
+ */
23
+ export declare const MAX_SAFE_BIGINT = 9007199254740991n;
24
+ export declare function toPlainValue(value: unknown): unknown;
25
+ /**
26
+ * Parses a JSON column's text into the value it encodes. `Any` and untyped `Object` fields are
27
+ * stored as DuckDB JSON columns, which DuckDB returns as text.
28
+ */
29
+ export declare function parseJSONText(value: unknown): unknown;
30
+ //# sourceMappingURL=plain-values.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"plain-values.d.ts","sourceRoot":"","sources":["../../../src/teal-frame/plain-values.ts"],"names":[],"mappings":"AAIA;;;;;;;;;;;;;;;;;;;;;EAqBE;AACF,eACA,MAAM,eAAe,oBAAoB,CAAC;AAc1C,wBAAgB,YAAY,CAAC,KAAK,EAAE,OAAO,GAAG,OAAO,CA0BpD;AAED;;;EAGE;AACF,wBAAgB,aAAa,CAAC,KAAK,EAAE,OAAO,GAAG,OAAO,CAErD"}
@@ -0,0 +1,69 @@
1
+ import { DuckDBTimestampValue, DuckDBGeometryValue } from '@duckdb/node-api';
2
+ import { toISO8601 } from '@terascope/core-utils';
3
+ import { wkbToGeoShape } from './wkb.js';
4
+ /**
5
+ * Converts values read from DuckDB into the plain JS values `rows()` returns.
6
+ *
7
+ * `rows()` results are sent straight to callers, so no DuckDB value class may leak through:
8
+ *
9
+ * - LIST arrives as a `DuckDBListValue`, which would serialize as `{"items":[...]}`. It becomes
10
+ * an array.
11
+ * - TIMESTAMP arrives as a `DuckDBTimestampValue`. It is rendered with `toISO8601`, as
12
+ * `DateVector.toJSONCompatibleValue` does.
13
+ * - GEOMETRY arrives as WKB bytes. It is decoded back to the GeoShape a `GeoJSON` field holds.
14
+ * - BIGINT and HUGEINT arrive as a JS `bigint`, which `JSON.stringify` cannot serialize.
15
+ * `bigIntToPlain` returns a number when the value fits exactly and a decimal string otherwise.
16
+ *
17
+ * `core-utils`' `bigIntToJSON` is not used, because it is wrong for values read from DuckDB
18
+ * (#4555). It subtracts 1 from every positive value above the safe limit, to cancel a `+1` that
19
+ * core-utils' parser adds, so a value that was never parsed comes back one too low. Its bound
20
+ * is also a signed comparison, so large negative values lose precision instead of becoming
21
+ * strings.
22
+ *
23
+ * The rule here is the same as in `export-json.ts` (`abs(value) > MAX_SAFE` becomes a decimal
24
+ * string, anything smaller a number), so `rows()` and `ndjson()` always agree.
25
+ */
26
+ export /** The largest whole number JSON can carry without `JSON.parse` rounding it. */ const MAX_SAFE_BIGINT = 9007199254740991n;
27
+ /**
28
+ * Converts a bigint to a number when it fits exactly, or to an exact decimal string when it
29
+ * does not.
30
+ *
31
+ * The bound applies to the magnitude, matching `abs(x) > 9007199254740991` in `export-json.ts`.
32
+ * No arithmetic is applied to the value.
33
+ */
34
+ function bigIntToPlain(value) {
35
+ if (value > MAX_SAFE_BIGINT || value < -MAX_SAFE_BIGINT)
36
+ return value.toString(10);
37
+ return Number(value);
38
+ }
39
+ export function toPlainValue(value) {
40
+ if (value == null)
41
+ return value;
42
+ if (typeof value === 'bigint')
43
+ return bigIntToPlain(value);
44
+ if (typeof value !== 'object')
45
+ return value;
46
+ if (value instanceof DuckDBTimestampValue) {
47
+ return toISO8601(Number(value.micros / 1000n));
48
+ }
49
+ // a GeoJSON column is a GEOMETRY, which the binding hands over as WKB
50
+ if (value instanceof DuckDBGeometryValue)
51
+ return wkbToGeoShape(value.bytes);
52
+ const items = value.items;
53
+ if (Array.isArray(items))
54
+ return items.map(toPlainValue);
55
+ const entries = value.entries;
56
+ if (entries != null && typeof entries === 'object') {
57
+ return Object.fromEntries(Object.entries(entries)
58
+ .map(([key, val]) => [key, toPlainValue(val)]));
59
+ }
60
+ return value;
61
+ }
62
+ /**
63
+ * Parses a JSON column's text into the value it encodes. `Any` and untyped `Object` fields are
64
+ * stored as DuckDB JSON columns, which DuckDB returns as text.
65
+ */
66
+ export function parseJSONText(value) {
67
+ return typeof value === 'string' ? JSON.parse(value) : value;
68
+ }
69
+ //# sourceMappingURL=plain-values.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"plain-values.js","sourceRoot":"","sources":["../../../src/teal-frame/plain-values.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,oBAAoB,EAAE,mBAAmB,EAAE,MAAM,kBAAkB,CAAC;AAC7E,OAAO,EAAE,SAAS,EAAE,MAAM,uBAAuB,CAAC;AAClD,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AAEzC;;;;;;;;;;;;;;;;;;;;;EAqBE;AACF,MAAM,CAAC,gFAAgF,CACvF,MAAM,eAAe,GAAG,iBAAiB,CAAC;AAE1C;;;;;;EAME;AACF,SAAS,aAAa,CAAC,KAAa;IAChC,IAAI,KAAK,GAAG,eAAe,IAAI,KAAK,GAAG,CAAC,eAAe;QAAE,OAAO,KAAK,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC;IACnF,OAAO,MAAM,CAAC,KAAK,CAAC,CAAC;AACzB,CAAC;AAED,MAAM,UAAU,YAAY,CAAC,KAAc;IACvC,IAAI,KAAK,IAAI,IAAI;QAAE,OAAO,KAAK,CAAC;IAEhC,IAAI,OAAO,KAAK,KAAK,QAAQ;QAAE,OAAO,aAAa,CAAC,KAAK,CAAC,CAAC;IAE3D,IAAI,OAAO,KAAK,KAAK,QAAQ;QAAE,OAAO,KAAK,CAAC;IAE5C,IAAI,KAAK,YAAY,oBAAoB,EAAE,CAAC;QACxC,OAAO,SAAS,CAAC,MAAM,CAAC,KAAK,CAAC,MAAM,GAAG,KAAK,CAAC,CAAC,CAAC;IACnD,CAAC;IAED,sEAAsE;IACtE,IAAI,KAAK,YAAY,mBAAmB;QAAE,OAAO,aAAa,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;IAE5E,MAAM,KAAK,GAAI,KAA6B,CAAC,KAAK,CAAC;IACnD,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC;QAAE,OAAO,KAAK,CAAC,GAAG,CAAC,YAAY,CAAC,CAAC;IAEzD,MAAM,OAAO,GAAI,KAA+B,CAAC,OAAO,CAAC;IACzD,IAAI,OAAO,IAAI,IAAI,IAAI,OAAO,OAAO,KAAK,QAAQ,EAAE,CAAC;QACjD,OAAO,MAAM,CAAC,WAAW,CACrB,MAAM,CAAC,OAAO,CAAC,OAAkC,CAAC;aAC7C,GAAG,CAAC,CAAC,CAAC,GAAG,EAAE,GAAG,CAAC,EAAE,EAAE,CAAC,CAAC,GAAG,EAAE,YAAY,CAAC,GAAG,CAAC,CAAC,CAAC,CACrD,CAAC;IACN,CAAC;IAED,OAAO,KAAK,CAAC;AACjB,CAAC;AAED;;;EAGE;AACF,MAAM,UAAU,aAAa,CAAC,KAAc;IACxC,OAAO,OAAO,KAAK,KAAK,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC;AACjE,CAAC"}
@@ -0,0 +1,21 @@
1
+ import { DataTypeConfig, DataTypeFields, ReadonlyDataTypeConfig, ReadonlyDataTypeFields, FieldType } from '@terascope/types';
2
+ /**
3
+ * Shapes `rows()` output where the right shape depends on the field config, not the value.
4
+ *
5
+ * - `toPlainValue` turns every STRUCT into an object. A `Tuple` is stored as
6
+ * `STRUCT("0" ..., "1" ...)` (a DuckDB LIST cannot mix element types), but `DataFrame`
7
+ * returns it as an array, so it is converted back.
8
+ * - A `Date` is stored as `{ ms, tz_offset }` and rendered as `toISO8601` renders it. See
9
+ * `date-value.ts`.
10
+ * - A JSON column (`Any`, or an `Object`/`Tuple` with no declared children) arrives as text and is
11
+ * parsed, so `{x: 1}` is returned as an object rather than the string `'{"x":1}'`.
12
+ *
13
+ * Shapers are built once per `rows()` call. A column that needs no shaping gets none and costs
14
+ * nothing per row.
15
+ */
16
+ export type ValueShaper = (value: unknown) => unknown;
17
+ /** Returns a shaper for each top-level column that needs one, keyed by column name. */
18
+ export declare function makeRowShapers(config: DataTypeConfig | ReadonlyDataTypeConfig): ReadonlyMap<string, ValueShaper>;
19
+ /** Whether the column is stored as JSON (`toDuckDB` maps these types to `JSON`). */
20
+ export declare function isJSONColumn(type: FieldType, childConfig?: DataTypeFields | ReadonlyDataTypeFields): boolean;
21
+ //# sourceMappingURL=row-shape.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"row-shape.d.ts","sourceRoot":"","sources":["../../../src/teal-frame/row-shape.ts"],"names":[],"mappings":"AAAA,OAAO,EACH,cAAc,EAAuB,cAAc,EAAE,sBAAsB,EAC3E,sBAAsB,EAAE,SAAS,EACpC,MAAM,kBAAkB,CAAC;AAK1B;;;;;;;;;;;;;EAaE;AAEF,MAAM,MAAM,WAAW,GAAG,CAAC,KAAK,EAAE,OAAO,KAAK,OAAO,CAAC;AAEtD,uFAAuF;AACvF,wBAAgB,cAAc,CAC1B,MAAM,EAAE,cAAc,GAAG,sBAAsB,GAChD,WAAW,CAAC,MAAM,EAAE,WAAW,CAAC,CAalC;AAaD,oFAAoF;AACpF,wBAAgB,YAAY,CACxB,IAAI,EAAE,SAAS,EACf,WAAW,CAAC,EAAE,cAAc,GAAG,sBAAsB,GACtD,OAAO,CAKT"}
@@ -0,0 +1,94 @@
1
+ import { FieldType } from '@terascope/types';
2
+ import { getChildDataTypeConfig } from '../core/utils.js';
3
+ import { parseJSONText } from './plain-values.js';
4
+ import { renderPlainDate } from './date-value.js';
5
+ /** Returns a shaper for each top-level column that needs one, keyed by column name. */
6
+ export function makeRowShapers(config) {
7
+ const fields = (config.fields ?? {});
8
+ const shapers = new Map();
9
+ for (const [name, fieldConfig] of Object.entries(fields)) {
10
+ if (name.includes('.'))
11
+ continue;
12
+ const shaper = fieldShaper(fieldConfig, getChildDataTypeConfig(fields, name, fieldConfig.type));
13
+ if (shaper)
14
+ shapers.set(name, shaper);
15
+ }
16
+ return shapers;
17
+ }
18
+ function fieldShaper(fieldConfig, childConfig) {
19
+ const element = elementShaper(fieldConfig.type, childConfig);
20
+ if (element == null)
21
+ return undefined;
22
+ if (!fieldConfig.array)
23
+ return element;
24
+ return (value) => (Array.isArray(value) ? value.map(element) : value);
25
+ }
26
+ /** Whether the column is stored as JSON (`toDuckDB` maps these types to `JSON`). */
27
+ export function isJSONColumn(type, childConfig) {
28
+ if (type === FieldType.Any)
29
+ return true;
30
+ if (type !== FieldType.Object && type !== FieldType.Tuple)
31
+ return false;
32
+ return childConfig == null
33
+ || Object.keys(childConfig).every((name) => name.includes('.'));
34
+ }
35
+ function elementShaper(type, childConfig) {
36
+ if (isJSONColumn(type, childConfig))
37
+ return parseJSONText;
38
+ if (type === FieldType.Date)
39
+ return renderPlainDate;
40
+ if (type === FieldType.Tuple)
41
+ return tupleShaper(childConfig);
42
+ return objectShaper(type, childConfig);
43
+ }
44
+ /** Returns `[name, shaper]` for each direct child; the shaper is undefined when not needed. */
45
+ function childShapers(childConfig) {
46
+ if (childConfig == null)
47
+ return [];
48
+ return Object.entries(childConfig)
49
+ .filter(([name]) => !name.includes('.'))
50
+ .map(([name, config]) => [
51
+ name,
52
+ fieldShaper(config, getChildDataTypeConfig(childConfig, name, config.type)),
53
+ ]);
54
+ }
55
+ /**
56
+ * Converts `{"0": a, "1": b}` to `[a, b]` in position order, shaping each position. A NULL
57
+ * position stays `null` in the array, as in `DataFrame`.
58
+ */
59
+ function tupleShaper(childConfig) {
60
+ const positions = childShapers(childConfig)
61
+ .sort(([a], [b]) => Number(a) - Number(b));
62
+ return (value) => {
63
+ if (value == null || typeof value !== 'object' || Array.isArray(value))
64
+ return value;
65
+ const struct = value;
66
+ return positions.map(([name, shape]) => {
67
+ const member = struct[name] ?? null;
68
+ return shape ? shape(member) : member;
69
+ });
70
+ };
71
+ }
72
+ /**
73
+ * Shapes an `Object` whose children need shaping (for example a Tuple or JSON child). Returns a
74
+ * new object and never mutates the input.
75
+ */
76
+ function objectShaper(type, childConfig) {
77
+ if (type !== FieldType.Object)
78
+ return undefined;
79
+ const shaped = childShapers(childConfig)
80
+ .filter((entry) => entry[1] != null);
81
+ if (shaped.length === 0)
82
+ return undefined;
83
+ return (value) => {
84
+ if (value == null || typeof value !== 'object' || Array.isArray(value))
85
+ return value;
86
+ const copy = { ...value };
87
+ for (const [name, shape] of shaped) {
88
+ if (name in copy)
89
+ copy[name] = shape(copy[name]);
90
+ }
91
+ return copy;
92
+ };
93
+ }
94
+ //# sourceMappingURL=row-shape.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"row-shape.js","sourceRoot":"","sources":["../../../src/teal-frame/row-shape.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,66 @@
1
+ import { DuckDBScalarFunction } from '@duckdb/node-api';
2
+ import { FieldType, DataTypeFieldConfig, DataTypeFields, ReadonlyDataTypeFields } from '@terascope/types';
3
+ /**
4
+ * A per-value implementation, matching what `FieldTransformConfig.create` /
5
+ * `FieldValidateConfig.create` return: `(value, index) => result`.
6
+ */
7
+ export type ScalarFunctionImpl = (value: unknown, index: number) => unknown;
8
+ export interface ScalarFunctionSpec {
9
+ /** The name it is called by in SQL. */
10
+ name: string;
11
+ /**
12
+ * The single value argument: a bare field type, or a full field config for a list, struct or
13
+ * JSON value, which a bare type cannot express. See `udfTypeFor`.
14
+ */
15
+ parameter: FieldType | DataTypeFieldConfig;
16
+ /** Children of the parameter, for an Object/Tuple parameter. */
17
+ parameterChildren?: DataTypeFields | ReadonlyDataTypeFields;
18
+ /**
19
+ * The result's field config, not just its type.
20
+ *
21
+ * The returned JS value must be converted to DuckDB's representation (a BIGINT vector
22
+ * rejects a `number`, for example). `makeValueConverter`, which `fromRecords` also uses,
23
+ * does that from the config.
24
+ */
25
+ returns: DataTypeFieldConfig;
26
+ /** Children of the result type, for Object/Tuple results. */
27
+ returnsChildren?: DataTypeFields | ReadonlyDataTypeFields;
28
+ /**
29
+ * The implementation, called once per row.
30
+ *
31
+ * This should come from a function config's `create()` via `tealFrameAdapter`, not be
32
+ * written by hand. The function configs already define the name, arguments, accepted types,
33
+ * `output_type`, and null and array handling, so restating them here would duplicate them.
34
+ *
35
+ * Exactly one of `fn` and `fnForArgs` is set.
36
+ */
37
+ fn?: ScalarFunctionImpl;
38
+ /**
39
+ * Builds the implementation for one argument set from its JSON text, which the SQL passes as
40
+ * a second, constant parameter: `dm_lookup_x(code, '{"in":{...}}')`.
41
+ *
42
+ * This keeps the number of registered UDFs bounded. DuckDB cannot unregister a scalar
43
+ * function, so registering one UDF per argument set (per `lookup` table, regex or format)
44
+ * would grow without limit in a long-running process. Passing the arguments as a parameter
45
+ * means one UDF per function and type signature, and each argument set's implementation is
46
+ * cached in a bounded LRU (`ARGUMENT_SETS_KEPT`).
47
+ */
48
+ fnForArgs?: (argsText: string) => ScalarFunctionImpl;
49
+ /**
50
+ * Call `fn` for rows where the argument is null. Defaults to false, which matches
51
+ * `DataFrame`: `transformVectorToBuilder` iterates `vector.values()`, which skips nil
52
+ * entries, so a transform never receives a null. DuckDB passes nulls to a UDF, so the skip
53
+ * is done here.
54
+ */
55
+ callWithNull?: boolean;
56
+ }
57
+ /** How many argument sets' implementations one UDF keeps; the least recently used is dropped. */
58
+ export declare const ARGUMENT_SETS_KEPT = 256;
59
+ /**
60
+ * Wraps a per-row JS function as a vectorized DuckDB scalar function.
61
+ *
62
+ * The binding is chunk-based (`mainFunction(info, chunk, outputVector)`), so the JS boundary is
63
+ * crossed once per chunk of about 2048 rows, not once per row.
64
+ */
65
+ export declare function createScalarFunction(spec: ScalarFunctionSpec): DuckDBScalarFunction;
66
+ //# sourceMappingURL=scalar-function.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"scalar-function.d.ts","sourceRoot":"","sources":["../../../src/teal-frame/scalar-function.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,oBAAoB,EAAW,MAAM,kBAAkB,CAAC;AACjE,OAAO,EACH,SAAS,EAAE,mBAAmB,EAAE,cAAc,EAAE,sBAAsB,EACzE,MAAM,kBAAkB,CAAC;AAI1B;;;GAGG;AACH,MAAM,MAAM,kBAAkB,GAAG,CAAC,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,MAAM,KAAK,OAAO,CAAC;AAE5E,MAAM,WAAW,kBAAkB;IAC/B,uCAAuC;IACvC,IAAI,EAAE,MAAM,CAAC;IACb;;;MAGE;IACF,SAAS,EAAE,SAAS,GAAG,mBAAmB,CAAC;IAC3C,gEAAgE;IAChE,iBAAiB,CAAC,EAAE,cAAc,GAAG,sBAAsB,CAAC;IAC5D;;;;;;OAMG;IACH,OAAO,EAAE,mBAAmB,CAAC;IAC7B,6DAA6D;IAC7D,eAAe,CAAC,EAAE,cAAc,GAAG,sBAAsB,CAAC;IAC1D;;;;;;;;OAQG;IACH,EAAE,CAAC,EAAE,kBAAkB,CAAC;IACxB;;;;;;;;;MASE;IACF,SAAS,CAAC,EAAE,CAAC,QAAQ,EAAE,MAAM,KAAK,kBAAkB,CAAC;IACrD;;;;;OAKG;IACH,YAAY,CAAC,EAAE,OAAO,CAAC;CAC1B;AAED,iGAAiG;AACjG,eAAO,MAAM,kBAAkB,MAAM,CAAC;AAqBtC;;;;;GAKG;AACH,wBAAgB,oBAAoB,CAAC,IAAI,EAAE,kBAAkB,GAAG,oBAAoB,CAkDnF"}
@@ -0,0 +1,75 @@
1
+ import { DuckDBScalarFunction, VARCHAR } from '@duckdb/node-api';
2
+ import { makeValueConverter } from './duck-values.js';
3
+ import { makeInputConverter, udfTypeFor } from './udf-types.js';
4
+ /** How many argument sets' implementations one UDF keeps; the least recently used is dropped. */
5
+ export const ARGUMENT_SETS_KEPT = 256;
6
+ /** Memoizes `build` per argument text in a bounded LRU. */
7
+ function perArgumentSet(build) {
8
+ const kept = new Map();
9
+ return (argsText) => {
10
+ const found = kept.get(argsText);
11
+ if (found) {
12
+ kept.delete(argsText);
13
+ kept.set(argsText, found);
14
+ return found;
15
+ }
16
+ const built = build(argsText);
17
+ kept.set(argsText, built);
18
+ if (kept.size > ARGUMENT_SETS_KEPT)
19
+ kept.delete(kept.keys().next().value);
20
+ return built;
21
+ };
22
+ }
23
+ /**
24
+ * Wraps a per-row JS function as a vectorized DuckDB scalar function.
25
+ *
26
+ * The binding is chunk-based (`mainFunction(info, chunk, outputVector)`), so the JS boundary is
27
+ * crossed once per chunk of about 2048 rows, not once per row.
28
+ */
29
+ export function createScalarFunction(spec) {
30
+ const callWithNull = spec.callWithNull ?? false;
31
+ // a computed result may be wider than a stored Long; see `wideIntegers`
32
+ const convert = makeValueConverter(spec.returns, spec.returnsChildren, { wideIntegers: true });
33
+ const parameter = typeof spec.parameter === 'string'
34
+ ? { type: spec.parameter }
35
+ : spec.parameter;
36
+ /**
37
+ * Input values need converting too. Without it, a date arrives as a DuckDB value class
38
+ * that the date functions would misread (for example, as host-local time). See
39
+ * `makeInputConverter`.
40
+ */
41
+ const toInput = makeInputConverter(parameter, spec.parameterChildren);
42
+ const forArgs = spec.fnForArgs ? perArgumentSet(spec.fnForArgs) : undefined;
43
+ if (!forArgs && !spec.fn) {
44
+ throw new TypeError(`Scalar function "${spec.name}" needs \`fn\` or \`fnForArgs\``);
45
+ }
46
+ return DuckDBScalarFunction.create({
47
+ name: spec.name,
48
+ parameterTypes: forArgs
49
+ ? [udfTypeFor(parameter, spec.parameterChildren), VARCHAR]
50
+ : [udfTypeFor(parameter, spec.parameterChildren)],
51
+ returnType: udfTypeFor(spec.returns, spec.returnsChildren, { wide: true }),
52
+ mainFunction: (_info, chunk, output) => {
53
+ const values = chunk.getColumnValues(0);
54
+ /**
55
+ * The arguments are one constant literal per call (`udfCall`), so only the first row
56
+ * is read. Reading the whole column would copy the JSON into a JS string for every
57
+ * row, which is very slow for a large `lookup` table.
58
+ */
59
+ const impl = forArgs
60
+ ? forArgs(chunk.getColumnVector(1).getItem(0))
61
+ : spec.fn;
62
+ for (let row = 0; row < chunk.rowCount; row++) {
63
+ const value = values[row];
64
+ if (value == null && !callWithNull) {
65
+ output.setItem(row, null);
66
+ continue;
67
+ }
68
+ const result = impl(toInput(value), row);
69
+ output.setItem(row, (result == null ? null : convert(result)));
70
+ }
71
+ output.flush();
72
+ },
73
+ });
74
+ }
75
+ //# sourceMappingURL=scalar-function.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"scalar-function.js","sourceRoot":"","sources":["../../../src/teal-frame/scalar-function.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,oBAAoB,EAAE,OAAO,EAAE,MAAM,kBAAkB,CAAC;AAIjE,OAAO,EAAE,kBAAkB,EAAE,MAAM,kBAAkB,CAAC;AACtD,OAAO,EAAE,kBAAkB,EAAE,UAAU,EAAE,MAAM,gBAAgB,CAAC;AA0DhE,iGAAiG;AACjG,MAAM,CAAC,MAAM,kBAAkB,GAAG,GAAG,CAAC;AAEtC,2DAA2D;AAC3D,SAAS,cAAc,CACnB,KAA+C;IAE/C,MAAM,IAAI,GAAG,IAAI,GAAG,EAA8B,CAAC;IACnD,OAAO,CAAC,QAAQ,EAAE,EAAE;QAChB,MAAM,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;QACjC,IAAI,KAAK,EAAE,CAAC;YACR,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;YACtB,IAAI,CAAC,GAAG,CAAC,QAAQ,EAAE,KAAK,CAAC,CAAC;YAC1B,OAAO,KAAK,CAAC;QACjB,CAAC;QACD,MAAM,KAAK,GAAG,KAAK,CAAC,QAAQ,CAAC,CAAC;QAC9B,IAAI,CAAC,GAAG,CAAC,QAAQ,EAAE,KAAK,CAAC,CAAC;QAC1B,IAAI,IAAI,CAAC,IAAI,GAAG,kBAAkB;YAAE,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,IAAI,EAAE,CAAC,KAAe,CAAC,CAAC;QACpF,OAAO,KAAK,CAAC;IACjB,CAAC,CAAC;AACN,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,oBAAoB,CAAC,IAAwB;IACzD,MAAM,YAAY,GAAG,IAAI,CAAC,YAAY,IAAI,KAAK,CAAC;IAChD,wEAAwE;IACxE,MAAM,OAAO,GAAG,kBAAkB,CAAC,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC,eAAe,EAAE,EAAE,YAAY,EAAE,IAAI,EAAE,CAAC,CAAC;IAC/F,MAAM,SAAS,GAAwB,OAAO,IAAI,CAAC,SAAS,KAAK,QAAQ;QACrE,CAAC,CAAC,EAAE,IAAI,EAAE,IAAI,CAAC,SAAS,EAAE;QAC1B,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC;IACrB;;;;MAIE;IACF,MAAM,OAAO,GAAG,kBAAkB,CAAC,SAAS,EAAE,IAAI,CAAC,iBAAiB,CAAC,CAAC;IACtE,MAAM,OAAO,GAAG,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,cAAc,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;IAC5E,IAAI,CAAC,OAAO,IAAI,CAAC,IAAI,CAAC,EAAE,EAAE,CAAC;QACvB,MAAM,IAAI,SAAS,CAAC,oBAAoB,IAAI,CAAC,IAAI,iCAAiC,CAAC,CAAC;IACxF,CAAC;IAED,OAAO,oBAAoB,CAAC,MAAM,CAAC;QAC/B,IAAI,EAAE,IAAI,CAAC,IAAI;QACf,cAAc,EAAE,OAAO;YACnB,CAAC,CAAC,CAAC,UAAU,CAAC,SAAS,EAAE,IAAI,CAAC,iBAAiB,CAAC,EAAE,OAAO,CAAC;YAC1D,CAAC,CAAC,CAAC,UAAU,CAAC,SAAS,EAAE,IAAI,CAAC,iBAAiB,CAAC,CAAC;QACrD,UAAU,EAAE,UAAU,CAAC,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC,eAAe,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC;QAC1E,YAAY,EAAE,CAAC,KAAK,EAAE,KAAK,EAAE,MAAM,EAAE,EAAE;YACnC,MAAM,MAAM,GAAG,KAAK,CAAC,eAAe,CAAC,CAAC,CAAc,CAAC;YACrD;;;;cAIE;YACF,MAAM,IAAI,GAAG,OAAO;gBAChB,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAW,CAAC;gBACxD,CAAC,CAAC,IAAI,CAAC,EAAG,CAAC;YAEf,KAAK,IAAI,GAAG,GAAG,CAAC,EAAE,GAAG,GAAG,KAAK,CAAC,QAAQ,EAAE,GAAG,EAAE,EAAE,CAAC;gBAC5C,MAAM,KAAK,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC;gBAE1B,IAAI,KAAK,IAAI,IAAI,IAAI,CAAC,YAAY,EAAE,CAAC;oBACjC,MAAM,CAAC,OAAO,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;oBAC1B,SAAS;gBACb,CAAC;gBAED,MAAM,MAAM,GAAG,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,GAAG,CAAC,CAAC;gBACzC,MAAM,CAAC,OAAO,CAAC,GAAG,EAAE,CAAC,MAAM,IAAI,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,OAAO,CAAC,MAAM,CAAC,CAAQ,CAAC,CAAC;YAC1E,CAAC;YAED,MAAM,CAAC,KAAK,EAAE,CAAC;QACnB,CAAC;KACJ,CAAC,CAAC;AACP,CAAC"}
@@ -0,0 +1,43 @@
1
+ import { FieldType } from '@terascope/types';
2
+ import { TealFrame } from './TealFrame.js';
3
+ /**
4
+ * One disagreement between a frame's declared `DataTypeConfig` and the column types DuckDB
5
+ * actually produces.
6
+ */
7
+ export interface SchemaMismatch {
8
+ column: string;
9
+ /**
10
+ * The `FieldType` the config declares. Reports lead with this, because DuckDB types are a
11
+ * storage detail. Absent when `kind` is `unexpected` (the column was never declared).
12
+ */
13
+ declared?: FieldType;
14
+ kind: 'type' | 'missing' | 'unexpected';
15
+ /**
16
+ * For diagnosis: the DuckDB type `declared` maps to, and the type DuckDB actually produced.
17
+ *
18
+ * There is no DuckDB-to-`FieldType` mapping, because it would be ambiguous (`VARCHAR` backs
19
+ * `Keyword`, `Text`, `IP`, `Binary` and more). So types are compared as DuckDB types.
20
+ */
21
+ storage?: {
22
+ declared?: string;
23
+ actual?: string;
24
+ };
25
+ }
26
+ /**
27
+ * Returns the DuckDB column type of each column in a frame, for diagnosis and for checking a
28
+ * config against what DuckDB produced.
29
+ */
30
+ export declare function describeColumns(frame: TealFrame): Promise<Record<string, string>>;
31
+ /**
32
+ * Compares a frame's declared config with the column types DuckDB actually produced. An empty
33
+ * array means they agree.
34
+ *
35
+ * A column's type comes from its SQL expression, not from the config, so a projection can
36
+ * declare `Integer` while its SQL yields VARCHAR. Aggregations are a common case: DuckDB
37
+ * promotes `sum(BIGINT)` to HUGEINT, while data-mate treats the result as a `Long`.
38
+ *
39
+ * Returns the differences rather than throwing, so a caller can assert on them, log them, or
40
+ * ignore kinds it does not care about.
41
+ */
42
+ export declare function diffSchema(frame: TealFrame): Promise<SchemaMismatch[]>;
43
+ //# sourceMappingURL=schema-check.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"schema-check.d.ts","sourceRoot":"","sources":["../../../src/teal-frame/schema-check.ts"],"names":[],"mappings":"AAAA,OAAO,EAAuC,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAClF,OAAO,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAG3C;;;GAGG;AACH,MAAM,WAAW,cAAc;IAC3B,MAAM,EAAE,MAAM,CAAC;IACf;;;MAGE;IACF,QAAQ,CAAC,EAAE,SAAS,CAAC;IACrB,IAAI,EAAE,MAAM,GAAG,SAAS,GAAG,YAAY,CAAC;IACxC;;;;;MAKE;IACF,OAAO,CAAC,EAAE;QAAE,QAAQ,CAAC,EAAE,MAAM,CAAC;QAAC,MAAM,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;CACpD;AAED;;;EAGE;AACF,wBAAsB,eAAe,CAAC,KAAK,EAAE,SAAS,GAAG,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAKvF;AAED;;;;;;;;;;GAUG;AACH,wBAAsB,UAAU,CAAC,KAAK,EAAE,SAAS,GAAG,OAAO,CAAC,cAAc,EAAE,CAAC,CAgC5E"}