@terascope/data-mate 2.23.1 → 2.25.0

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 +16 -9
@@ -0,0 +1,409 @@
1
+ import { FieldType } from '@terascope/types';
2
+ import { quoteIdentifier, quoteLiteral } from '@terascope/sql-builder';
3
+ import { dateJson } from './date-value.js';
4
+ /**
5
+ * Builds the SQL that renders a frame's rows as JSON, byte-identical to what `DataFrame`
6
+ * produces.
7
+ *
8
+ * DuckDB's own `to_json` output differs from `DataFrame.toJSON` in these ways:
9
+ *
10
+ * | | `DataFrame` | DuckDB native |
11
+ * |---|---|---|
12
+ * | `Date` | `"2026-01-10T00:00:00.000Z"` (`toISO8601`) | `"2026-01-10 00:00:00"` |
13
+ * | `Long` past `MAX_SAFE_INTEGER` | a string | a number `JSON.parse` rounds |
14
+ * | a nil field, element or empty object | per `SerializeOptions`, see `Renderer` | `null` |
15
+ * | an integral float | `5` | `5.0` |
16
+ * | `-0` | `0` | `-0.0` |
17
+ * | a non-finite float | `null` | `Infinity`, which is not valid JSON |
18
+ * | a number at or above `1e21` | `1e+21` | `1e21` |
19
+ *
20
+ * Null handling is the widest difference, governed by the seven `SerializeOptions` flags rather
21
+ * than one rule. The non-finite case is the only one that breaks the output: `JSON.parse`
22
+ * rejects a bare `Infinity` or `NaN`, so one such value would make a whole line unreadable.
23
+ *
24
+ * Each difference is corrected in the generated SQL, so the export runs entirely inside DuckDB
25
+ * and no file needs post-processing.
26
+ */
27
+ /** Above this, `bigIntToJSON` switches to a string, because `JSON.parse` would round it. */
28
+ const MAX_SAFE = '9007199254740991';
29
+ /**
30
+ * The magnitude at which `JSON.stringify` switches a number to exponential form.
31
+ *
32
+ * Below it, an integral double is written without a decimal point (`5`, not `5.0`). At or
33
+ * above it, DuckDB's exponential form is used with a `+` added to the exponent.
34
+ */
35
+ const EXPONENTIAL_THRESHOLD = '1e21';
36
+ /** Integer-ish types stored wide enough to exceed `MAX_SAFE_INTEGER`. */
37
+ const BIG_INTEGER_TYPES = new Set([
38
+ FieldType.Long, FieldType.Integer,
39
+ ]);
40
+ /**
41
+ * Types stored as a DuckDB `DOUBLE`.
42
+ *
43
+ * `Float` is included because it maps to DOUBLE, not FLOAT: the value is a JS number. See
44
+ * `float.ts` in `data-types`.
45
+ */
46
+ const DOUBLE_TYPES = new Set([
47
+ FieldType.Float, FieldType.Double, FieldType.Number, FieldType.Vector,
48
+ ]);
49
+ /** Types stored as a `STRUCT(lat DOUBLE, lon DOUBLE)`, whose members need the double treatment. */
50
+ const GEO_POINT_TYPES = new Set([
51
+ FieldType.Geo, FieldType.GeoPoint,
52
+ ]);
53
+ /**
54
+ * Folds the flat, dot-notation `DataTypeConfig` fields into a tree.
55
+ *
56
+ * The config declares `metadata` and `metadata.source` as siblings, but the JSON value nests
57
+ * them, and the corrections must reach nested values too (a `Date` three levels down still
58
+ * needs rendering as ISO 8601).
59
+ */
60
+ function buildTree(fields) {
61
+ const tree = {};
62
+ for (const [path, config] of Object.entries(fields)) {
63
+ const parts = path.split('.');
64
+ let level = tree;
65
+ let node;
66
+ for (const part of parts) {
67
+ node = level[part] ??= { name: part, type: FieldType.Object, isArray: false };
68
+ node.children ??= {};
69
+ level = node.children;
70
+ }
71
+ if (node) {
72
+ node.type = String(config.type);
73
+ node.isArray = config.array === true;
74
+ }
75
+ }
76
+ // a node with no declared children is a leaf, not an empty object
77
+ const prune = (nodes) => {
78
+ for (const entry of Object.values(nodes)) {
79
+ if (entry.children && Object.keys(entry.children).length === 0) {
80
+ delete entry.children;
81
+ }
82
+ else if (entry.children) {
83
+ prune(entry.children);
84
+ }
85
+ }
86
+ };
87
+ prune(tree);
88
+ return tree;
89
+ }
90
+ const FLAGS = [
91
+ 'useNullForUndefined',
92
+ 'skipNilValues',
93
+ 'skipEmptyArrays',
94
+ 'skipNilListValues',
95
+ 'skipNilObjectValues',
96
+ 'skipEmptyObjects',
97
+ 'skipDuplicateObjects',
98
+ ];
99
+ /**
100
+ * The two presets selected by `removeNullFields`: `true` omits null fields and empty objects,
101
+ * `false` writes null fields as `null`.
102
+ */
103
+ function nullFieldsPreset(removeNullFields) {
104
+ return {
105
+ useNullForUndefined: !removeNullFields,
106
+ skipNilValues: removeNullFields,
107
+ skipEmptyArrays: false,
108
+ skipNilListValues: false,
109
+ skipNilObjectValues: true,
110
+ skipEmptyObjects: removeNullFields,
111
+ skipDuplicateObjects: false,
112
+ };
113
+ }
114
+ /**
115
+ * Resolves the rules an export follows.
116
+ *
117
+ * If any `SerializeOptions` flag is given, the flags mean exactly what they mean to
118
+ * `DataFrame.toJSON`, and an unset flag is false. `removeNullFields` selects a preset that
119
+ * explicit flags override. With neither, the default is the `removeNullFields: true` preset.
120
+ */
121
+ export function resolveRules(options = {}) {
122
+ const given = FLAGS.filter((flag) => options[flag] != null);
123
+ const usePreset = options.removeNullFields != null || given.length === 0;
124
+ const base = usePreset
125
+ ? nullFieldsPreset(options.removeNullFields ?? true)
126
+ : Object.fromEntries(FLAGS.map((flag) => [flag, false]));
127
+ return { ...base, ...Object.fromEntries(given.map((flag) => [flag, Boolean(options[flag])])) };
128
+ }
129
+ /**
130
+ * SQL that renders a double the way `JSON.stringify` renders a JS number.
131
+ *
132
+ * DuckDB's `to_json` already prints the shortest digits that round-trip, as JavaScript does.
133
+ * Four corrections make the text identical:
134
+ *
135
+ * - A non-finite value becomes `null`, but is not treated as nil: `DataFrame` keeps a `NaN` as
136
+ * a value, so its key survives null removal, and `JSON.stringify` writes `null`.
137
+ * - `-0` becomes `0`.
138
+ * - At or above `1e21` the exponent gets a `+`: DuckDB writes `1e21`, JavaScript `1e+21`. Both
139
+ * switch to exponential form at the same magnitude, and negative exponents already agree.
140
+ * - An integral value loses its `.0` (`to_json(5.0)` is `5.0`). The digits stay DuckDB's
141
+ * shortest form rather than the exact value, which an integer cast would print (for
142
+ * example `99999999999999991611392` where JavaScript writes `99999999999999980000`).
143
+ */
144
+ function doubleJson(accessor) {
145
+ const text = `to_json(${accessor})::VARCHAR`;
146
+ return `CASE WHEN ${accessor} IS NULL THEN NULL`
147
+ + ` WHEN NOT isfinite(${accessor}) THEN 'null'`
148
+ + ` WHEN ${accessor} = 0 THEN '0'`
149
+ + ` WHEN abs(${accessor}) >= ${EXPONENTIAL_THRESHOLD} THEN replace(${text}, 'e', 'e+')`
150
+ + ` WHEN ${accessor} = floor(${accessor}) THEN regexp_replace(${text}, '\\.0$', '')`
151
+ + ` ELSE ${text} END`;
152
+ }
153
+ /**
154
+ * SQL matching `bigIntToJSON`: a number while it is a safe integer, a string once `JSON.parse`
155
+ * would round it.
156
+ *
157
+ * It uses two comparisons rather than `abs(x) > MAX_SAFE`, because `abs` of the smallest BIGINT
158
+ * overflows and would fail the whole export.
159
+ */
160
+ function bigIntegerJson(accessor) {
161
+ return `CASE WHEN ${accessor} IS NULL THEN NULL`
162
+ + ` WHEN ${accessor} > ${MAX_SAFE} OR ${accessor} < -${MAX_SAFE}`
163
+ + ` THEN to_json(${accessor}::VARCHAR)::VARCHAR`
164
+ + ` ELSE ${accessor}::VARCHAR END`;
165
+ }
166
+ /** A `{ lat, lon }` object, lat then lon as `DataFrame` has them, each rendered as JS would. */
167
+ function geoPointJson(accessor) {
168
+ const part = (name) => doubleJson(`${accessor}.${quoteIdentifier(name)}`);
169
+ return `CASE WHEN ${accessor} IS NULL THEN NULL`
170
+ + ` ELSE '{"lat":' || ${part('lat')} || ',"lon":' || ${part('lon')} || '}' END`;
171
+ }
172
+ /** An object's key, as JSON text with its colon: `"name":`. */
173
+ function keyText(name) {
174
+ return quoteLiteral(`${JSON.stringify(name)}:`);
175
+ }
176
+ function member(accessor, name) {
177
+ return accessor === '' ? quoteIdentifier(name) : `${accessor}.${quoteIdentifier(name)}`;
178
+ }
179
+ /**
180
+ * Builds SQL that renders fields as JSON text, following each of `DataFrame`'s
181
+ * `SerializeOptions` rules.
182
+ *
183
+ * Every value renders to JSON text, or to SQL NULL for a nil value (`DataFrame`'s `nilValue`),
184
+ * which is omitted or written as `null` depending on where it is. The rules, with the method
185
+ * here and the `DataFrame` code each one follows:
186
+ *
187
+ * - A nil top-level field is `null` under `useNullForUndefined`, otherwise omitted;
188
+ * `skipNilValues` has no effect at this level. `row`; `DataFrame.getRow`.
189
+ * - A nil nested field is `null` only under `useNullForUndefined` without `skipNilValues`.
190
+ * `object`; `ObjectVector.toJSONCompatibleValue`.
191
+ * - An object or row with no non-nil field is nil under `skipEmptyObjects`.
192
+ * - An undeclared object is written as stored; only `{}` becomes nil, under
193
+ * `skipEmptyObjects`. `leaf`; `ObjectVector` with no child fields.
194
+ * - In a list, nil elements are `null`, and are removed under `skipNilListValues` (or
195
+ * `skipNilObjectValues` for object elements). Object elements are de-duplicated under
196
+ * `skipDuplicateObjects`, and an empty result is nil under `skipEmptyArrays`. `list`;
197
+ * `ListVector.toJSONCompatibleValue`.
198
+ * - In a tuple, nil positions are `null`, and the tuple is nil under `skipEmptyArrays` when
199
+ * every position is. `tuple`; `TupleVector`.
200
+ *
201
+ * Objects are built as text rather than with `json_object`: each member is `'"k":' || v`,
202
+ * which is NULL when `v` is, and `concat_ws` skips NULL members, so each key is present or
203
+ * absent per the rules in one pass.
204
+ *
205
+ * One `DataFrame` bug is not reproduced. Under `skipEmptyArrays`, `TupleVector` treats a
206
+ * position as nil unless its vector has a `toJSONCompatibleValue`, which `Float`, `String`,
207
+ * `Int`, `Boolean` and `IP` lack, so it drops `[1.5, "a"]` as empty. Here a tuple is empty
208
+ * only when every position is nil.
209
+ */
210
+ class Renderer {
211
+ rules;
212
+ constructor(rules) {
213
+ this.rules = rules;
214
+ }
215
+ /** A whole row: nil when every field is nil under `skipEmptyObjects`, which drops the row. */
216
+ row(tree) {
217
+ const nilAsNull = this.rules.useNullForUndefined;
218
+ return this.members(tree, '', 0, nilAsNull);
219
+ }
220
+ /**
221
+ * A predicate that is true for each row the export writes, or undefined when every row is
222
+ * written.
223
+ *
224
+ * It is decided from the columns' NULL structure, never from the rendered JSON: filtering
225
+ * on the rendered row would make DuckDB render every row twice (about 2x slower), because
226
+ * the filter's alias is inlined. It mirrors the renderer's nil rules, and
227
+ * `serialize-options-spec.ts` checks it against `DataFrame` for all 128 option combinations.
228
+ */
229
+ rowFilter(tree) {
230
+ if (!this.rules.skipEmptyObjects)
231
+ return undefined;
232
+ return Object.values(tree)
233
+ .map((field) => this.present(field, member('', field.name), 0))
234
+ .join(' OR ');
235
+ }
236
+ /**
237
+ * A LIST column's elements, each rendered, with NULL for a nil element and nothing removed.
238
+ * The caller applies the nil rules as it streams, as `ListVector.getRowIterator` does.
239
+ */
240
+ listElements(node, accessor) {
241
+ const element = this.value({ ...node, isArray: false }, 'v0', 1);
242
+ return `CASE WHEN ${accessor} IS NULL THEN NULL`
243
+ + ` ELSE list_transform(${accessor}, lambda v0 : ${element}) END`;
244
+ }
245
+ /** True when a value renders as something other than nil - see {@link rowFilter}. */
246
+ present(node, accessor, depth) {
247
+ // an empty list or tuple is nil only under skipEmptyArrays, and whether it is empty
248
+ // depends on its rendered elements, so this case renders it
249
+ if (this.rules.skipEmptyArrays && (node.isArray || node.type === FieldType.Tuple)) {
250
+ return `(${this.node(node, accessor, depth)}) IS NOT NULL`;
251
+ }
252
+ if (node.isArray || node.type === FieldType.Tuple)
253
+ return `${accessor} IS NOT NULL`;
254
+ if (node.children) {
255
+ const children = Object.values(node.children)
256
+ .map((child) => this.present(child, member(accessor, child.name), depth))
257
+ .join(' OR ');
258
+ return `(${accessor} IS NOT NULL AND (${children}))`;
259
+ }
260
+ // every other leaf is non-nil whenever it is non-NULL (including NaN, which renders as
261
+ // `null` but is not nil), except an undeclared `{}` object under skipEmptyObjects
262
+ if (node.type === FieldType.Object)
263
+ return `(${this.leaf(node, accessor)}) IS NOT NULL`;
264
+ return `${accessor} IS NOT NULL`;
265
+ }
266
+ node(node, accessor, depth) {
267
+ if (node.isArray)
268
+ return this.list(node, accessor, depth);
269
+ return this.value(node, accessor, depth);
270
+ }
271
+ value(node, accessor, depth) {
272
+ if (node.type === FieldType.Tuple && node.children) {
273
+ return this.tuple(node.children, accessor, depth);
274
+ }
275
+ if (node.children)
276
+ return this.object(node.children, accessor, depth);
277
+ return this.leaf(node, accessor);
278
+ }
279
+ object(children, accessor, depth) {
280
+ const nilAsNull = this.rules.useNullForUndefined && !this.rules.skipNilValues;
281
+ return `CASE WHEN ${accessor} IS NULL THEN NULL`
282
+ + ` ELSE ${this.members(children, accessor, depth, nilAsNull)} END`;
283
+ }
284
+ /** `{...}` of some fields, or NULL when `skipEmptyObjects` and none is non-nil. */
285
+ members(fields, accessor, depth, nilAsNull) {
286
+ const values = Object.values(fields).map((field) => ({
287
+ field,
288
+ value: this.node(field, member(accessor, field.name), depth),
289
+ }));
290
+ // `'"k":' || v` is NULL exactly when `v` is nil, because `||` propagates NULL, so each
291
+ // value is rendered once. Testing `v IS NOT NULL` first would render it twice, and
292
+ // nesting would compound that at every level.
293
+ const present = values.map(({ field, value }) => `${keyText(field.name)} || (${value})`);
294
+ const parts = nilAsNull
295
+ ? present.map((part, i) => (`coalesce(${part}, ${quoteLiteral(`${JSON.stringify(values[i].field.name)}:null`)})`))
296
+ : present;
297
+ const inner = `concat_ws(',', ${parts.join(', ')})`;
298
+ if (!this.rules.skipEmptyObjects)
299
+ return `'{' || ${inner} || '}'`;
300
+ // with nil members omitted, an object with no non-nil member has an empty member list:
301
+ // `nullif` turns it into NULL and `||` propagates that, still in one pass
302
+ if (!nilAsNull)
303
+ return `'{' || nullif(${inner}, '') || '}'`;
304
+ // nil members written as null and empty objects dropped: the one combination that has
305
+ // to evaluate the values twice
306
+ const empty = values.map(({ value }) => `(${value}) IS NULL`).join(' AND ');
307
+ return `CASE WHEN ${empty} THEN NULL ELSE '{' || ${inner} || '}' END`;
308
+ }
309
+ tuple(positions, accessor, depth) {
310
+ const values = Object.values(positions)
311
+ .sort((a, b) => Number(a.name) - Number(b.name))
312
+ .map((node) => this.node(node, member(accessor, node.name), depth));
313
+ const body = `'[' || concat_ws(',', ${values.map((v) => `coalesce(${v}, 'null')`).join(', ')}) || ']'`;
314
+ const whole = this.rules.skipEmptyArrays
315
+ ? `CASE WHEN ${values.map((v) => `(${v}) IS NULL`).join(' AND ')} THEN NULL ELSE ${body} END`
316
+ : body;
317
+ return `CASE WHEN ${accessor} IS NULL THEN NULL ELSE ${whole} END`;
318
+ }
319
+ /**
320
+ * A LIST. The lambda variable is named per nesting depth, so a list nested inside another
321
+ * list never shadows the outer binding. It uses `lambda x : ...` rather than `x -> ...`,
322
+ * because DuckDB v2.0 disables the arrow syntax by default and v2.1 removes it.
323
+ */
324
+ list(node, accessor, depth) {
325
+ const v = `v${depth}`;
326
+ const element = this.value({ ...node, isArray: false }, v, depth + 1);
327
+ const isObject = node.type === FieldType.Object;
328
+ let items = `list_transform(${accessor}, lambda ${v} : ${element})`;
329
+ items = this.rules.skipNilListValues || (isObject && this.rules.skipNilObjectValues)
330
+ ? `list_filter(${items}, lambda ${v} : ${v} IS NOT NULL)`
331
+ : `list_transform(${items}, lambda ${v} : coalesce(${v}, 'null'))`;
332
+ if (this.rules.skipDuplicateObjects && isObject) {
333
+ // first occurrence wins, as `dedupeValues` keeps it; lists are small
334
+ items = `list_filter(${items}, lambda ${v}, ${v}i : list_position(${items}, ${v}) = ${v}i)`;
335
+ }
336
+ const body = `'[' || array_to_string(${items}, ',') || ']'`;
337
+ const whole = this.rules.skipEmptyArrays
338
+ ? `CASE WHEN len(${items}) = 0 THEN NULL ELSE ${body} END`
339
+ : body;
340
+ return `CASE WHEN ${accessor} IS NULL THEN NULL ELSE ${whole} END`;
341
+ }
342
+ /** One scalar - or an undeclared object, `Any` or shape, written as it is stored. */
343
+ leaf(node, accessor) {
344
+ // toISO8601 of `{ ms, tz_offset }` - see `date-value.ts`
345
+ if (node.type === FieldType.Date)
346
+ return dateJson(accessor);
347
+ // a Boundary is stored as `STRUCT(lat, lon)[]`, and `GeoBoundaryVector` writes it as
348
+ // is, so none of the list rules apply to it
349
+ if (node.type === FieldType.Boundary) {
350
+ return `CASE WHEN ${accessor} IS NULL THEN NULL ELSE '[' || array_to_string(`
351
+ + `list_transform(${accessor}, lambda p : ${geoPointJson('p')}), ',') || ']' END`;
352
+ }
353
+ if (GEO_POINT_TYPES.has(node.type))
354
+ return geoPointJson(accessor);
355
+ if (node.type === FieldType.GeoJSON) {
356
+ // a GEOMETRY, which needs the `spatial` extension. `1` renders as `1.0`, which is
357
+ // the same number
358
+ return `ST_AsGeoJSON(${accessor})::VARCHAR`;
359
+ }
360
+ if (DOUBLE_TYPES.has(node.type))
361
+ return doubleJson(accessor);
362
+ if (BIG_INTEGER_TYPES.has(node.type))
363
+ return bigIntegerJson(accessor);
364
+ if (node.type === FieldType.Object && this.rules.skipEmptyObjects) {
365
+ // an undeclared object is JSON text, copied as `{ ...value }`; only `{}` is dropped
366
+ return `CASE WHEN json_type(${accessor}) = 'OBJECT' AND len(json_keys(${accessor})) = 0`
367
+ + ` THEN NULL ELSE ${accessor}::VARCHAR END`;
368
+ }
369
+ return `to_json(${accessor})::VARCHAR`;
370
+ }
371
+ }
372
+ /**
373
+ * SQL rendering one LIST column's elements as JSON text (see `TealFrame.listValues`), and
374
+ * whether the elements are objects, which decides whether `skipNilObjectValues` applies.
375
+ */
376
+ export function buildJsonListElements(config, column, options = {}) {
377
+ const node = buildTree((config.fields ?? {}))[column];
378
+ if (node == null || !node.isArray) {
379
+ throw new TypeError(`Column "${column}" is not a list in this frame's config`);
380
+ }
381
+ return {
382
+ sql: new Renderer(resolveRules(options)).listElements(node, quoteIdentifier(column)),
383
+ isObject: node.type === FieldType.Object,
384
+ };
385
+ }
386
+ /**
387
+ * The predicate for the rows an export writes, or undefined when it writes all of them. It is
388
+ * separate from {@link buildJsonExpression} so the filter never evaluates the rendered row.
389
+ */
390
+ export function buildJsonRowFilter(config, options = {}) {
391
+ const tree = buildTree((config.fields ?? {}));
392
+ return new Renderer(resolveRules(options)).rowFilter(tree);
393
+ }
394
+ /**
395
+ * A SQL expression producing one JSON string per row, byte-identical to `DataFrame.toJSON` with
396
+ * the same options, or NULL for a row that `skipEmptyObjects` drops.
397
+ *
398
+ * Two things are left to the caller: removing duplicate rows under `skipDuplicateObjects`,
399
+ * which compares whole rendered rows in order and is done on the stream (`TealFrame.ndjson`),
400
+ * and filtering rows, which uses {@link buildJsonRowFilter}.
401
+ */
402
+ export function buildJsonExpression(config, options = {}) {
403
+ const tree = buildTree((config.fields ?? {}));
404
+ if (Object.keys(tree).length === 0) {
405
+ throw new TypeError('A DataType config must declare at least one field');
406
+ }
407
+ return new Renderer(resolveRules(options)).row(tree);
408
+ }
409
+ //# sourceMappingURL=export-json.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"export-json.js","sourceRoot":"","sources":["../../../src/teal-frame/export-json.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,40 @@
1
+ /**
2
+ * Installs and verifies the DuckDB extensions while a Docker image is built, much as
3
+ * `node-pre-gyp install` fetches the kafka client's native binary during `pnpm install`.
4
+ *
5
+ * Running inside the target platform's build container lets DuckDB pick the right platform
6
+ * (`linux_amd64_musl` in the teraslice image). Using this package's `@duckdb/node-api` keeps
7
+ * the extension version in step with the binding.
8
+ */
9
+ export interface ExtensionReport {
10
+ version: string;
11
+ platform: string;
12
+ /** Always set; DuckDB's default when nothing was configured. */
13
+ directory: string;
14
+ /** One line per failed extension. Always empty from `install`; `verify` fails if not. */
15
+ failures: string[];
16
+ }
17
+ export interface InstallOptions {
18
+ /** Defaults to `DUCKDB_EXTENSION_DIRECTORY`, then DuckDB's `~/.duckdb/extensions`. */
19
+ directory?: string;
20
+ /**
21
+ * An internal mirror, as a URL or a local directory laid out as
22
+ * `<repository>/v1.5.5/<platform>/<name>.duckdb_extension.gz`. Defaults to DuckDB's own.
23
+ */
24
+ repository?: string;
25
+ }
26
+ /**
27
+ * Downloads the required extensions into `directory`. Throws on the first failure, so the
28
+ * image build stops there.
29
+ *
30
+ * It first checks that `STATIC_EXTENSIONS` are still compiled in, so a DuckDB upgrade that
31
+ * drops one fails the build rather than a machine without network access.
32
+ */
33
+ export declare function installExtensions(options?: InstallOptions): Promise<ExtensionReport>;
34
+ /**
35
+ * Checks that the extensions work without network access. Opens a database as production does,
36
+ * with autoinstall off, and runs each extension's check. Run it in the image's runtime stage so
37
+ * it tests the shipped files with their real ownership and permissions.
38
+ */
39
+ export declare function verifyExtensions(options?: Pick<InstallOptions, 'directory'>): Promise<ExtensionReport>;
40
+ //# sourceMappingURL=extension-tools.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"extension-tools.d.ts","sourceRoot":"","sources":["../../../src/teal-frame/extension-tools.ts"],"names":[],"mappings":"AAUA;;;;;;;EAOE;AAEF,MAAM,WAAW,eAAe;IAC5B,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,EAAE,MAAM,CAAC;IACjB,gEAAgE;IAChE,SAAS,EAAE,MAAM,CAAC;IAClB,yFAAyF;IACzF,QAAQ,EAAE,MAAM,EAAE,CAAC;CACtB;AAED,MAAM,WAAW,cAAc;IAC3B,sFAAsF;IACtF,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB;;;MAGE;IACF,UAAU,CAAC,EAAE,MAAM,CAAC;CACvB;AAED;;;;;;EAME;AACF,wBAAsB,iBAAiB,CAAC,OAAO,GAAE,cAAmB,GAAG,OAAO,CAAC,eAAe,CAAC,CAoB9F;AAED;;;;EAIE;AACF,wBAAsB,gBAAgB,CAClC,OAAO,GAAE,IAAI,CAAC,cAAc,EAAE,WAAW,CAAM,GAChD,OAAO,CAAC,eAAe,CAAC,CAyB1B"}
@@ -0,0 +1,115 @@
1
+ import { mkdtempSync, rmSync } from 'node:fs';
2
+ import { tmpdir } from 'node:os';
3
+ import { join } from 'node:path';
4
+ import { DuckDBInstance } from '@duckdb/node-api';
5
+ import { quoteLiteral } from '@terascope/sql-builder';
6
+ import { DuckContext } from './DuckContext.js';
7
+ import { extensionSettingsFromEnv, firstLine, REQUIRED_EXTENSIONS, STATIC_EXTENSIONS } from './extensions.js';
8
+ /**
9
+ * Downloads the required extensions into `directory`. Throws on the first failure, so the
10
+ * image build stops there.
11
+ *
12
+ * It first checks that `STATIC_EXTENSIONS` are still compiled in, so a DuckDB upgrade that
13
+ * drops one fails the build rather than a machine without network access.
14
+ */
15
+ export async function installExtensions(options = {}) {
16
+ await assertStaticExtensions();
17
+ const directory = options.directory ?? extensionSettingsFromEnv().extensionDirectory;
18
+ const instance = await DuckDBInstance.create(':memory:', {
19
+ ...(directory != null && { extension_directory: directory }),
20
+ });
21
+ try {
22
+ const connection = await instance.connect();
23
+ const from = options.repository ? ` FROM ${quoteLiteral(options.repository)}` : '';
24
+ for (const { name } of REQUIRED_EXTENSIONS) {
25
+ await connection.run(`INSTALL ${name}${from}`);
26
+ await connection.run(`LOAD ${name}`);
27
+ }
28
+ return { ...(await describe(connection)), failures: [] };
29
+ }
30
+ finally {
31
+ instance.closeSync();
32
+ }
33
+ }
34
+ /**
35
+ * Checks that the extensions work without network access. Opens a database as production does,
36
+ * with autoinstall off, and runs each extension's check. Run it in the image's runtime stage so
37
+ * it tests the shipped files with their real ownership and permissions.
38
+ */
39
+ export async function verifyExtensions(options = {}) {
40
+ let context;
41
+ try {
42
+ context = await DuckContext.create(':memory:', {
43
+ ...(options.directory != null && { extensionDirectory: options.directory }),
44
+ autoinstallExtensions: false,
45
+ });
46
+ }
47
+ catch (err) {
48
+ // DuckExtensionError already names every missing extension and where it looked
49
+ return { ...(await describeDefaults(options.directory)), failures: [firstLine(err)] };
50
+ }
51
+ try {
52
+ const failures = [];
53
+ for (const { name, check } of REQUIRED_EXTENSIONS) {
54
+ try {
55
+ for (const sql of check)
56
+ await context.run(sql);
57
+ }
58
+ catch (err) {
59
+ failures.push(`${name}: ${firstLine(err)}`);
60
+ }
61
+ }
62
+ return { ...(await describe(context.connection)), failures };
63
+ }
64
+ finally {
65
+ context.disconnect();
66
+ }
67
+ }
68
+ /**
69
+ * Throws if any `STATIC_EXTENSIONS` entry is no longer compiled in. Uses an empty extension
70
+ * directory, because a downloaded copy would shadow the built-in one and
71
+ * `duckdb_extensions()` would report it as a repository install.
72
+ */
73
+ async function assertStaticExtensions() {
74
+ const empty = mkdtempSync(join(tmpdir(), 'duckdb-static-'));
75
+ const instance = await DuckDBInstance.create(':memory:', {
76
+ extension_directory: empty,
77
+ autoinstall_known_extensions: 'false',
78
+ });
79
+ try {
80
+ const connection = await instance.connect();
81
+ const rows = (await (await connection.run(`SELECT extension_name FROM duckdb_extensions() WHERE install_mode = 'STATICALLY_LINKED'`)).getRowsJson());
82
+ const linked = new Set(rows.map(([name]) => name));
83
+ const unlinked = STATIC_EXTENSIONS.filter((name) => !linked.has(name));
84
+ if (unlinked.length > 0) {
85
+ throw new Error(`${unlinked.join(', ')} are no longer compiled into this DuckDB. Add them to`
86
+ + ' REQUIRED_EXTENSIONS in extensions.ts, or they will fail offline.');
87
+ }
88
+ }
89
+ finally {
90
+ instance.closeSync();
91
+ rmSync(empty, { recursive: true, force: true });
92
+ }
93
+ }
94
+ async function describe(connection) {
95
+ const [[version, platform, directory]] = (await (await connection.run(`SELECT version(), (SELECT platform FROM pragma_platform()),`
96
+ + ` current_setting('extension_directory')`)).getRowsJson());
97
+ return { version, platform, directory: directory || '~/.duckdb/extensions' };
98
+ }
99
+ /** Describes DuckDB for a report when the configured database could not open. */
100
+ async function describeDefaults(directory) {
101
+ const instance = await DuckDBInstance.create(':memory:');
102
+ try {
103
+ const described = await describe(await instance.connect());
104
+ return {
105
+ ...described,
106
+ directory: directory
107
+ ?? extensionSettingsFromEnv().extensionDirectory
108
+ ?? described.directory,
109
+ };
110
+ }
111
+ finally {
112
+ instance.closeSync();
113
+ }
114
+ }
115
+ //# sourceMappingURL=extension-tools.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"extension-tools.js","sourceRoot":"","sources":["../../../src/teal-frame/extension-tools.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=extensions-cli.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"extensions-cli.d.ts","sourceRoot":"","sources":["../../../src/teal-frame/extensions-cli.ts"],"names":[],"mappings":""}