@terascope/data-mate 2.24.0 → 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,125 @@
1
+ import { FieldType } from '@terascope/types';
2
+ import { quoteIdentifier } from '@terascope/sql-builder';
3
+ import { getChildDataTypeConfig } from '../core/utils.js';
4
+ function allowsEmpty(config) {
5
+ return config?._allow_empty === true;
6
+ }
7
+ function isObject(config) {
8
+ return config?.type === FieldType.Object;
9
+ }
10
+ /** Maps each matched top-level column to the child paths kept under it, in config order. */
11
+ function match(fields, selectors) {
12
+ const matched = new Map();
13
+ for (const field of Object.keys(fields)) {
14
+ const selected = selectors.some((selector) => field === selector
15
+ || (field.startsWith(`${selector}.`) && !allowsEmpty(fields[selector])));
16
+ if (!selected)
17
+ continue;
18
+ const [base] = field.split('.', 1);
19
+ if (!matched.has(base))
20
+ matched.set(base, new Set());
21
+ if (field !== base)
22
+ matched.get(base).add(field.slice(base.length + 1));
23
+ }
24
+ return matched;
25
+ }
26
+ /** Like `selectSubFields`: the selected child paths, plus every Object above one of them. */
27
+ function keptChildren(children, selected) {
28
+ const kept = new Set();
29
+ for (const path of selected) {
30
+ if (children[path])
31
+ kept.add(path);
32
+ let parent = '';
33
+ for (const part of path.split('.')) {
34
+ parent = parent ? `${parent}.${part}` : part;
35
+ if (isObject(children[parent]))
36
+ kept.add(parent);
37
+ }
38
+ }
39
+ return kept;
40
+ }
41
+ /** The paths directly or indirectly under `member`, relative to it. */
42
+ function under(paths, member) {
43
+ const prefix = `${member}.`;
44
+ return new Set([...paths]
45
+ .filter((path) => path.startsWith(prefix))
46
+ .map((path) => path.slice(prefix.length)));
47
+ }
48
+ /** Applies `one` to the value, or to each element when it is a list; null stays null. */
49
+ function each(expression, array, one) {
50
+ if (!array)
51
+ return one(expression);
52
+ return `CASE WHEN ${expression} IS NULL THEN NULL`
53
+ + ` ELSE list_transform(${expression}, lambda x : ${one('x')}) END`;
54
+ }
55
+ /**
56
+ * SQL that narrows an Object value to the `kept` paths (relative to it). Returns the value
57
+ * unchanged when nothing is dropped.
58
+ */
59
+ function narrow(expression, config, children, kept) {
60
+ const all = Object.keys(children);
61
+ if (all.length === 0 || all.every((path) => kept.has(path)))
62
+ return expression;
63
+ const array = config.array === true;
64
+ if (kept.size === 0) {
65
+ return each(expression, array, (value) => `CASE WHEN ${value} IS NULL THEN NULL ELSE ${allowsEmpty(config) ? 'CAST(\'{}\' AS JSON)' : `CAST(to_json(${value}) AS JSON)`} END`);
66
+ }
67
+ const members = [...kept].filter((path) => !path.includes('.'));
68
+ return each(expression, array, (value) => {
69
+ const packed = members.map((member) => {
70
+ const ref = `${value}.${quoteIdentifier(member)}`;
71
+ const memberConfig = children[member];
72
+ const memberChildren = isObject(memberConfig)
73
+ ? getChildDataTypeConfig(children, member, FieldType.Object) ?? {}
74
+ : {};
75
+ return `${quoteIdentifier(member)} := ${narrow(ref, memberConfig, memberChildren, under(kept, member))}`;
76
+ });
77
+ return `CASE WHEN ${value} IS NULL THEN NULL ELSE struct_pack(${packed.join(', ')}) END`;
78
+ });
79
+ }
80
+ export function deepSelectSQL(from, columns, config, selectors) {
81
+ const fields = (config.fields ?? {});
82
+ const matched = [...match(fields, selectors)].filter(([base]) => columns.includes(base));
83
+ if (matched.length === 0) {
84
+ return { sql: `SELECT * FROM ${from} LIMIT 0`, config: { ...config, fields: {} }, columns: [] };
85
+ }
86
+ const list = [];
87
+ const fieldsOut = {};
88
+ for (const [base, selected] of matched) {
89
+ const baseConfig = fields[base];
90
+ const children = isObject(baseConfig)
91
+ ? getChildDataTypeConfig(fields, base, FieldType.Object) ?? {}
92
+ : {};
93
+ const kept = keptChildren(children, selected);
94
+ const all = Object.keys(children);
95
+ const whole = all.length === 0 || all.every((path) => kept.has(path));
96
+ const ref = quoteIdentifier(base);
97
+ list.push(whole ? ref : `${narrow(ref, baseConfig, children, kept)} AS ${ref}`);
98
+ fieldsOut[base] = baseConfig;
99
+ for (const path of whole ? all : kept)
100
+ fieldsOut[`${base}.${path}`] = children[path];
101
+ }
102
+ return {
103
+ sql: `SELECT ${list.join(', ')} FROM ${from}`,
104
+ config: { ...config, fields: fieldsOut },
105
+ columns: matched.map(([base]) => base),
106
+ };
107
+ }
108
+ /**
109
+ * Implements the `@skipIfEmpty` GraphQL directive: an Object column marked `_skip_if_empty`
110
+ * is dropped once `deepSelect` has removed all of its declared children.
111
+ */
112
+ function isEmptyObject(fields, name) {
113
+ const children = getChildDataTypeConfig(fields, name, FieldType.Object);
114
+ return Object.keys(children ?? {}).length === 0;
115
+ }
116
+ export function emptySkippedObjects(config) {
117
+ const fields = (config.fields ?? {});
118
+ return Object.entries(fields)
119
+ .filter(([name, field]) => !name.includes('.')
120
+ && field._skip_if_empty === true
121
+ && isObject(field)
122
+ && isEmptyObject(fields, name))
123
+ .map(([name]) => name);
124
+ }
125
+ //# sourceMappingURL=deep-select.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"deep-select.js","sourceRoot":"","sources":["../../../src/teal-frame/deep-select.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,37 @@
1
+ import { DataTypeFieldConfig, DataTypeFields, ReadonlyDataTypeFields } from '@terascope/types';
2
+ /**
3
+ * Converts values already produced by `coerceToType` into the form a DuckDB vector accepts.
4
+ *
5
+ * Coercion itself is done by `coerceToType`, so field semantics are not reimplemented here.
6
+ * The conversions follow the field config and must match `DataType.toDuckDB()`; a mismatch makes
7
+ * DuckDB reject the append rather than store the wrong value.
8
+ */
9
+ export type ValueConverter = (value: unknown) => unknown;
10
+ /** Rewrites the raw input for one field into a form that ingest coerces exactly. */
11
+ export type InputNormalizer = (value: unknown) => unknown;
12
+ /**
13
+ * Returns the bigint normalizer for one field, or `undefined` when the field contains no `Long`,
14
+ * so most fields pay no per-row cost.
15
+ *
16
+ * It follows the field's config, not the value, so only `Long` positions change: a bigint in an
17
+ * `Any` field stays a bigint. It returns new values and never modifies the caller's record.
18
+ */
19
+ export declare function makeBigIntInputNormalizer(fieldConfig: DataTypeFieldConfig, childConfig?: DataTypeFields | ReadonlyDataTypeFields): InputNormalizer | undefined;
20
+ export interface ValueConverterOptions {
21
+ /**
22
+ * Allows integers beyond the signed 64-bit range. Leave it off for a stored column: a `Long`
23
+ * is a BIGINT, and a value it cannot hold is a coercion failure. Turn it on for a scalar
24
+ * function's result, which goes into a wider vector (`ipToInt` on an IPv6 address returns a
25
+ * 128-bit `Long`).
26
+ */
27
+ wideIntegers?: boolean;
28
+ }
29
+ /**
30
+ * Returns the converter for one field.
31
+ *
32
+ * Null and undefined become null. `coerceToType` skips nils via `callIfNotNil`, so the
33
+ * converter must not turn a nil into an empty value either (such as a `[NULL]` list or a
34
+ * struct of nulls).
35
+ */
36
+ export declare function makeValueConverter(fieldConfig: DataTypeFieldConfig, childConfig?: DataTypeFields | ReadonlyDataTypeFields, options?: ValueConverterOptions): ValueConverter;
37
+ //# sourceMappingURL=duck-values.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"duck-values.d.ts","sourceRoot":"","sources":["../../../src/teal-frame/duck-values.ts"],"names":[],"mappings":"AAGA,OAAO,EACH,mBAAmB,EAAE,cAAc,EAAE,sBAAsB,EAE9D,MAAM,kBAAkB,CAAC;AAW1B;;;;;;EAME;AAEF,MAAM,MAAM,cAAc,GAAG,CAAC,KAAK,EAAE,OAAO,KAAK,OAAO,CAAC;AA4DzD,oFAAoF;AACpF,MAAM,MAAM,eAAe,GAAG,CAAC,KAAK,EAAE,OAAO,KAAK,OAAO,CAAC;AAE1D;;;;;;EAME;AACF,wBAAgB,yBAAyB,CACrC,WAAW,EAAE,mBAAmB,EAChC,WAAW,CAAC,EAAE,cAAc,GAAG,sBAAsB,GACtD,eAAe,GAAG,SAAS,CAS7B;AA2CD,MAAM,WAAW,qBAAqB;IAClC;;;;;MAKE;IACF,YAAY,CAAC,EAAE,OAAO,CAAC;CAC1B;AAED;;;;;;EAME;AACF,wBAAgB,kBAAkB,CAC9B,WAAW,EAAE,mBAAmB,EAChC,WAAW,CAAC,EAAE,cAAc,GAAG,sBAAsB,EACrD,OAAO,GAAE,qBAA0B,GACpC,cAAc,CAgEhB"}
@@ -0,0 +1,173 @@
1
+ import { structValue, listValue, geometryValue } from '@duckdb/node-api';
2
+ import { FieldType } from '@terascope/types';
3
+ import { getChildDataTypeConfig } from '../core/utils.js';
4
+ import { geoShapeToWKB } from './wkb.js';
5
+ import { toDateValue } from './date-value.js';
6
+ /** Field types whose DuckDB column is a BIGINT, so they need a real BigInt. */
7
+ const BIG_INT_TYPES = new Set([
8
+ FieldType.Integer, FieldType.Long,
9
+ ]);
10
+ /** Field types held as a DOUBLE. */
11
+ const DOUBLE_TYPES = new Set([
12
+ FieldType.Float, FieldType.Double, FieldType.Number, FieldType.Vector,
13
+ ]);
14
+ /** Field types held as a narrow signed int, which want a Number not a BigInt. */
15
+ const SMALL_INT_TYPES = new Set([
16
+ FieldType.Byte, FieldType.Short,
17
+ ]);
18
+ const GEO_POINT_TYPES = new Set([
19
+ FieldType.GeoPoint, FieldType.Geo,
20
+ ]);
21
+ /**
22
+ * `core-utils`' `_maxBigInt`, i.e. `BigInt(Number.MAX_SAFE_INTEGER)`.
23
+ *
24
+ * `toBigIntOrThrow` adds 1 to every value it parses above this bound, and `bigIntToJSON`
25
+ * subtracts it again, so the two cancel out for `DataFrame` (#4555). The same `-1` is applied
26
+ * here so DuckDB stores the original value.
27
+ *
28
+ * That only works if every value above the bound received the `+1`. `toBigIntOrThrow` returns a
29
+ * bigint input unchanged, so {@link makeBigIntInputNormalizer} passes such a bigint to coercion
30
+ * as a decimal string, which is parsed the same way as any string input.
31
+ */
32
+ const MAX_SAFE_BIGINT = 9007199254740991n;
33
+ /** The signed 64-bit range of a BIGINT column, which matches an Elasticsearch `long`. */
34
+ const MIN_INT64 = -9223372036854775808n;
35
+ const MAX_INT64 = 9223372036854775807n;
36
+ function toBigInt(value, int64) {
37
+ if (typeof value === 'bigint') {
38
+ const exact = value > MAX_SAFE_BIGINT ? value - 1n : value;
39
+ // throw so ingest records a coercion failure instead of passing a BIGINT vector a
40
+ // value it cannot hold
41
+ if (int64 && (exact < MIN_INT64 || exact > MAX_INT64)) {
42
+ throw new RangeError(`${exact} is outside the signed 64-bit range of a Long`);
43
+ }
44
+ return exact;
45
+ }
46
+ const num = Number(value);
47
+ return Number.isFinite(num) ? BigInt(Math.trunc(num)) : null;
48
+ }
49
+ /**
50
+ * Turns a bigint above the safe range into a decimal string, so core-utils parses it and
51
+ * applies the `+1` that the converter later removes.
52
+ */
53
+ function unparsedBigInt(value) {
54
+ return typeof value === 'bigint' && value > MAX_SAFE_BIGINT ? value.toString(10) : value;
55
+ }
56
+ /**
57
+ * Returns the bigint normalizer for one field, or `undefined` when the field contains no `Long`,
58
+ * so most fields pay no per-row cost.
59
+ *
60
+ * It follows the field's config, not the value, so only `Long` positions change: a bigint in an
61
+ * `Any` field stays a bigint. It returns new values and never modifies the caller's record.
62
+ */
63
+ export function makeBigIntInputNormalizer(fieldConfig, childConfig) {
64
+ const type = fieldConfig.type;
65
+ const element = type === FieldType.Long
66
+ ? unparsedBigInt
67
+ : childNormalizer(type, childConfig);
68
+ if (element == null)
69
+ return undefined;
70
+ if (!fieldConfig.array)
71
+ return element;
72
+ return (value) => (Array.isArray(value) ? value.map(element) : element(value));
73
+ }
74
+ /** Normalizes the `Long` children of an Object or Tuple, by name or by position. */
75
+ function childNormalizer(type, childConfig) {
76
+ if ((type !== FieldType.Object && type !== FieldType.Tuple) || childConfig == null) {
77
+ return undefined;
78
+ }
79
+ const children = Object.entries(childConfig)
80
+ .filter(([name]) => !name.includes('.'))
81
+ .map(([name, config]) => ({
82
+ name,
83
+ normalize: makeBigIntInputNormalizer(config, getChildDataTypeConfig(childConfig, name, config.type)),
84
+ }))
85
+ .filter((child) => (child.normalize != null));
86
+ if (children.length === 0)
87
+ return undefined;
88
+ return (value) => {
89
+ if (value == null || typeof value !== 'object')
90
+ return value;
91
+ const copy = Array.isArray(value)
92
+ ? [...value]
93
+ : { ...value };
94
+ for (const { name, normalize } of children) {
95
+ if (name in copy)
96
+ copy[name] = normalize(copy[name]);
97
+ }
98
+ return copy;
99
+ };
100
+ }
101
+ function toGeoPoint(value) {
102
+ if (typeof value !== 'object' || value == null)
103
+ return null;
104
+ const point = value;
105
+ return structValue({ lat: Number(point.lat), lon: Number(point.lon) });
106
+ }
107
+ /**
108
+ * Returns the converter for one field.
109
+ *
110
+ * Null and undefined become null. `coerceToType` skips nils via `callIfNotNil`, so the
111
+ * converter must not turn a nil into an empty value either (such as a `[NULL]` list or a
112
+ * struct of nulls).
113
+ */
114
+ export function makeValueConverter(fieldConfig, childConfig, options = {}) {
115
+ const type = fieldConfig.type;
116
+ const int64 = options.wideIntegers !== true;
117
+ if (fieldConfig.array) {
118
+ const element = makeValueConverter({ ...fieldConfig, array: false }, childConfig, options);
119
+ return (value) => {
120
+ if (value == null)
121
+ return null;
122
+ const items = Array.isArray(value) ? value : [value];
123
+ return listValue(items.map(element));
124
+ };
125
+ }
126
+ if (type === FieldType.Object || type === FieldType.Tuple) {
127
+ if (childConfig == null || Object.keys(childConfig).length === 0) {
128
+ // no declared shape, so the column is JSON and the value goes as text
129
+ return (value) => (value == null ? null : JSON.stringify(value));
130
+ }
131
+ const children = Object.entries(childConfig)
132
+ .filter(([name]) => !name.includes('.'))
133
+ .map(([name, config]) => ({
134
+ name,
135
+ convert: makeValueConverter(config, getChildDataTypeConfig(childConfig, name, config.type), options),
136
+ }));
137
+ return (value) => {
138
+ if (value == null)
139
+ return null;
140
+ const record = value;
141
+ return structValue(Object.fromEntries(children.map(({ name, convert }) => [name, convert(record[name])])));
142
+ };
143
+ }
144
+ if (GEO_POINT_TYPES.has(type))
145
+ return (value) => (value == null ? null : toGeoPoint(value));
146
+ if (type === FieldType.Boundary) {
147
+ return (value) => {
148
+ if (value == null)
149
+ return null;
150
+ const points = Array.isArray(value) ? value : [value];
151
+ return listValue(points.map(toGeoPoint));
152
+ };
153
+ }
154
+ if (BIG_INT_TYPES.has(type))
155
+ return (value) => (value == null ? null : toBigInt(value, int64));
156
+ if (SMALL_INT_TYPES.has(type))
157
+ return (value) => (value == null ? null : Number(value));
158
+ if (DOUBLE_TYPES.has(type))
159
+ return (value) => (value == null ? null : Number(value));
160
+ // epoch millis, or a `DateTuple` whose offset is kept; see `date-value.ts`
161
+ if (type === FieldType.Date)
162
+ return toDateValue;
163
+ // GeoJSON is a GEOMETRY column, and the binding writes one only as WKB through a vector
164
+ if (type === FieldType.GeoJSON) {
165
+ return (value) => (value == null ? null : geometryValue(geoShapeToWKB(value)));
166
+ }
167
+ // Any is a JSON column; everything else is VARCHAR/BOOLEAN and goes as is
168
+ if (type === FieldType.Any) {
169
+ return (value) => (value == null ? null : JSON.stringify(value));
170
+ }
171
+ return (value) => (value == null ? null : value);
172
+ }
173
+ //# sourceMappingURL=duck-values.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"duck-values.js","sourceRoot":"","sources":["../../../src/teal-frame/duck-values.ts"],"names":[],"mappings":"AAAA,OAAO,EACH,WAAW,EAAE,SAAS,EAAE,aAAa,EACxC,MAAM,kBAAkB,CAAC;AAC1B,OAAO,EAEH,SAAS,EACZ,MAAM,kBAAkB,CAAC;AAC1B,OAAO,EAAE,sBAAsB,EAAE,MAAM,kBAAkB,CAAC;AAC1D,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AACzC,OAAO,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAC;AAkB9C,+EAA+E;AAC/E,MAAM,aAAa,GAAwB,IAAI,GAAG,CAAS;IACvD,SAAS,CAAC,OAAO,EAAE,SAAS,CAAC,IAAI;CACpC,CAAC,CAAC;AAEH,oCAAoC;AACpC,MAAM,YAAY,GAAwB,IAAI,GAAG,CAAS;IACtD,SAAS,CAAC,KAAK,EAAE,SAAS,CAAC,MAAM,EAAE,SAAS,CAAC,MAAM,EAAE,SAAS,CAAC,MAAM;CACxE,CAAC,CAAC;AAEH,iFAAiF;AACjF,MAAM,eAAe,GAAwB,IAAI,GAAG,CAAS;IACzD,SAAS,CAAC,IAAI,EAAE,SAAS,CAAC,KAAK;CAClC,CAAC,CAAC;AAEH,MAAM,eAAe,GAAwB,IAAI,GAAG,CAAS;IACzD,SAAS,CAAC,QAAQ,EAAE,SAAS,CAAC,GAAG;CACpC,CAAC,CAAC;AAEH;;;;;;;;;;EAUE;AACF,MAAM,eAAe,GAAG,iBAAiB,CAAC;AAE1C,yFAAyF;AACzF,MAAM,SAAS,GAAG,CAAC,oBAAoB,CAAC;AACxC,MAAM,SAAS,GAAG,oBAAoB,CAAC;AAEvC,SAAS,QAAQ,CAAC,KAAc,EAAE,KAAc;IAC5C,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;QAC5B,MAAM,KAAK,GAAG,KAAK,GAAG,eAAe,CAAC,CAAC,CAAC,KAAK,GAAG,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC;QAC3D,kFAAkF;QAClF,uBAAuB;QACvB,IAAI,KAAK,IAAI,CAAC,KAAK,GAAG,SAAS,IAAI,KAAK,GAAG,SAAS,CAAC,EAAE,CAAC;YACpD,MAAM,IAAI,UAAU,CAAC,GAAG,KAAK,+CAA+C,CAAC,CAAC;QAClF,CAAC;QACD,OAAO,KAAK,CAAC;IACjB,CAAC;IACD,MAAM,GAAG,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC;IAC1B,OAAO,MAAM,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;AACjE,CAAC;AAED;;;EAGE;AACF,SAAS,cAAc,CAAC,KAAc;IAClC,OAAO,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,GAAG,eAAe,CAAC,CAAC,CAAC,KAAK,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC;AAC7F,CAAC;AAKD;;;;;;EAME;AACF,MAAM,UAAU,yBAAyB,CACrC,WAAgC,EAChC,WAAqD;IAErD,MAAM,IAAI,GAAG,WAAW,CAAC,IAAqB,CAAC;IAC/C,MAAM,OAAO,GAAG,IAAI,KAAK,SAAS,CAAC,IAAI;QACnC,CAAC,CAAC,cAAc;QAChB,CAAC,CAAC,eAAe,CAAC,IAAI,EAAE,WAAW,CAAC,CAAC;IAEzC,IAAI,OAAO,IAAI,IAAI;QAAE,OAAO,SAAS,CAAC;IACtC,IAAI,CAAC,WAAW,CAAC,KAAK;QAAE,OAAO,OAAO,CAAC;IACvC,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC;AACnF,CAAC;AAED,oFAAoF;AACpF,SAAS,eAAe,CACpB,IAAmB,EACnB,WAAqD;IAErD,IAAI,CAAC,IAAI,KAAK,SAAS,CAAC,MAAM,IAAI,IAAI,KAAK,SAAS,CAAC,KAAK,CAAC,IAAI,WAAW,IAAI,IAAI,EAAE,CAAC;QACjF,OAAO,SAAS,CAAC;IACrB,CAAC;IACD,MAAM,QAAQ,GAAG,MAAM,CAAC,OAAO,CAAC,WAAW,CAAC;SACvC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,EAAE,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC;SACvC,GAAG,CAAC,CAAC,CAAC,IAAI,EAAE,MAAM,CAAC,EAAE,EAAE,CAAC,CAAC;QACtB,IAAI;QACJ,SAAS,EAAE,yBAAyB,CAChC,MAAM,EACN,sBAAsB,CAAC,WAAW,EAAE,IAAI,EAAE,MAAM,CAAC,IAAiB,CAAC,CACtE;KACJ,CAAC,CAAC;SACF,MAAM,CAAC,CAAC,KAAK,EAAyD,EAAE,CAAC,CACtE,KAAK,CAAC,SAAS,IAAI,IAAI,CAC1B,CAAC,CAAC;IAEP,IAAI,QAAQ,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,SAAS,CAAC;IAE5C,OAAO,CAAC,KAAK,EAAE,EAAE;QACb,IAAI,KAAK,IAAI,IAAI,IAAI,OAAO,KAAK,KAAK,QAAQ;YAAE,OAAO,KAAK,CAAC;QAC7D,MAAM,IAAI,GAA4B,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC;YACtD,CAAC,CAAC,CAAC,GAAG,KAAK,CAAuC;YAClD,CAAC,CAAC,EAAE,GAAG,KAAgC,EAAE,CAAC;QAC9C,KAAK,MAAM,EAAE,IAAI,EAAE,SAAS,EAAE,IAAI,QAAQ,EAAE,CAAC;YACzC,IAAI,IAAI,IAAI,IAAI;gBAAE,IAAI,CAAC,IAAI,CAAC,GAAG,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;QACzD,CAAC;QACD,OAAO,IAAI,CAAC;IAChB,CAAC,CAAC;AACN,CAAC;AAED,SAAS,UAAU,CAAC,KAAc;IAC9B,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,IAAI,IAAI;QAAE,OAAO,IAAI,CAAC;IAC5D,MAAM,KAAK,GAAG,KAAyC,CAAC;IACxD,OAAO,WAAW,CAAC,EAAE,GAAG,EAAE,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE,GAAG,EAAE,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;AAC3E,CAAC;AAYD;;;;;;EAME;AACF,MAAM,UAAU,kBAAkB,CAC9B,WAAgC,EAChC,WAAqD,EACrD,UAAiC,EAAE;IAEnC,MAAM,IAAI,GAAG,WAAW,CAAC,IAAqB,CAAC;IAC/C,MAAM,KAAK,GAAG,OAAO,CAAC,YAAY,KAAK,IAAI,CAAC;IAE5C,IAAI,WAAW,CAAC,KAAK,EAAE,CAAC;QACpB,MAAM,OAAO,GAAG,kBAAkB,CAAC,EAAE,GAAG,WAAW,EAAE,KAAK,EAAE,KAAK,EAAE,EAAE,WAAW,EAAE,OAAO,CAAC,CAAC;QAC3F,OAAO,CAAC,KAAK,EAAE,EAAE;YACb,IAAI,KAAK,IAAI,IAAI;gBAAE,OAAO,IAAI,CAAC;YAC/B,MAAM,KAAK,GAAG,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC;YACrD,OAAO,SAAS,CAAC,KAAK,CAAC,GAAG,CAAC,OAAO,CAAY,CAAC,CAAC;QACpD,CAAC,CAAC;IACN,CAAC;IAED,IAAI,IAAI,KAAK,SAAS,CAAC,MAAM,IAAI,IAAI,KAAK,SAAS,CAAC,KAAK,EAAE,CAAC;QACxD,IAAI,WAAW,IAAI,IAAI,IAAI,MAAM,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YAC/D,sEAAsE;YACtE,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC,KAAK,IAAI,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC;QACrE,CAAC;QACD,MAAM,QAAQ,GAAG,MAAM,CAAC,OAAO,CAAC,WAAW,CAAC;aACvC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,EAAE,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC;aACvC,GAAG,CAAC,CAAC,CAAC,IAAI,EAAE,MAAM,CAAC,EAAE,EAAE,CAAC,CAAC;YACtB,IAAI;YACJ,OAAO,EAAE,kBAAkB,CACvB,MAAM,EACN,sBAAsB,CAAC,WAAW,EAAE,IAAI,EAAE,MAAM,CAAC,IAAiB,CAAC,EACnE,OAAO,CACV;SACJ,CAAC,CAAC,CAAC;QACR,OAAO,CAAC,KAAK,EAAE,EAAE;YACb,IAAI,KAAK,IAAI,IAAI;gBAAE,OAAO,IAAI,CAAC;YAC/B,MAAM,MAAM,GAAG,KAAgC,CAAC;YAChD,OAAO,WAAW,CAAC,MAAM,CAAC,WAAW,CACjC,QAAQ,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,EAAE,EAAE,CAAC,CAAC,IAAI,EAAE,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAC5C,CAAC,CAAC;QAChC,CAAC,CAAC;IACN,CAAC;IAED,IAAI,eAAe,CAAC,GAAG,CAAC,IAAI,CAAC;QAAE,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC,KAAK,IAAI,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC,CAAC;IAE5F,IAAI,IAAI,KAAK,SAAS,CAAC,QAAQ,EAAE,CAAC;QAC9B,OAAO,CAAC,KAAK,EAAE,EAAE;YACb,IAAI,KAAK,IAAI,IAAI;gBAAE,OAAO,IAAI,CAAC;YAC/B,MAAM,MAAM,GAAG,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC;YACtD,OAAO,SAAS,CAAC,MAAM,CAAC,GAAG,CAAC,UAAU,CAAY,CAAC,CAAC;QACxD,CAAC,CAAC;IACN,CAAC;IAED,IAAI,aAAa,CAAC,GAAG,CAAC,IAAI,CAAC;QAAE,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC,KAAK,IAAI,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,QAAQ,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC,CAAC;IAC/F,IAAI,eAAe,CAAC,GAAG,CAAC,IAAI,CAAC;QAAE,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC,KAAK,IAAI,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC;IACxF,IAAI,YAAY,CAAC,GAAG,CAAC,IAAI,CAAC;QAAE,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC,KAAK,IAAI,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC;IACrF,2EAA2E;IAC3E,IAAI,IAAI,KAAK,SAAS,CAAC,IAAI;QAAE,OAAO,WAAW,CAAC;IAEhD,wFAAwF;IACxF,IAAI,IAAI,KAAK,SAAS,CAAC,OAAO,EAAE,CAAC;QAC7B,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC,KAAK,IAAI,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,aAAa,CAAC,aAAa,CAAC,KAAiB,CAAC,CAAC,CAAC,CAAC;IAC/F,CAAC;IAED,0EAA0E;IAC1E,IAAI,IAAI,KAAK,SAAS,CAAC,GAAG,EAAE,CAAC;QACzB,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC,KAAK,IAAI,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC;IACrE,CAAC;IAED,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC,KAAK,IAAI,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC;AACrD,CAAC"}
@@ -0,0 +1,38 @@
1
+ import { AppendFailure, CoercionFailure, ExtensionFailure } from './interfaces.js';
2
+ /**
3
+ * Errors thrown by the DuckDB frame.
4
+ *
5
+ * They are classes rather than plain `Error`s so they can carry context: a coercion failure
6
+ * lists each failing field with an example value, and an append failure reports what is left
7
+ * in the table after the rollback.
8
+ */
9
+ /** Raised by strict mode when a value does not fit its declared field type. */
10
+ export declare class CoercionFailureError extends Error {
11
+ readonly failures: readonly CoercionFailure[];
12
+ constructor(message: string, failures: readonly CoercionFailure[]);
13
+ }
14
+ /**
15
+ * Thrown when an `append` fails and is rolled back.
16
+ *
17
+ * An append runs in a transaction, so a failure leaves the table as it was. The message says
18
+ * how many rows remain, so a caller building one table from many payloads knows its earlier
19
+ * payloads are intact. The underlying error is kept as `cause`.
20
+ *
21
+ * `fromRecords` does not use this error: it has no earlier table to report on, and it throws
22
+ * what `DataFrame` throws.
23
+ */
24
+ export declare class AppendError extends Error {
25
+ readonly failure: AppendFailure;
26
+ constructor(failure: AppendFailure, cause: unknown);
27
+ }
28
+ /**
29
+ * Thrown when required DuckDB extensions cannot be loaded as the database opens.
30
+ *
31
+ * Failing at startup gives a clear message. Otherwise the first query that needs the
32
+ * extension fails with a DuckDB autoload error that does not explain how to fix it.
33
+ */
34
+ export declare class DuckExtensionError extends Error {
35
+ readonly failure: ExtensionFailure;
36
+ constructor(failure: ExtensionFailure);
37
+ }
38
+ //# sourceMappingURL=errors.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"errors.d.ts","sourceRoot":"","sources":["../../../src/teal-frame/errors.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,eAAe,EAAE,gBAAgB,EAAE,MAAM,iBAAiB,CAAC;AAEnF;;;;;;EAME;AAEF,+EAA+E;AAC/E,qBAAa,oBAAqB,SAAQ,KAAK;IACd,QAAQ,CAAC,QAAQ,EAAE,SAAS,eAAe,EAAE;gBAA9D,OAAO,EAAE,MAAM,EAAW,QAAQ,EAAE,SAAS,eAAe,EAAE;CAI7E;AAED;;;;;;;;;EASE;AACF,qBAAa,WAAY,SAAQ,KAAK;IACtB,QAAQ,CAAC,OAAO,EAAE,aAAa;gBAAtB,OAAO,EAAE,aAAa,EAAE,KAAK,EAAE,OAAO;CAa9D;AAED;;;;;EAKE;AACF,qBAAa,kBAAmB,SAAQ,KAAK;IAC7B,QAAQ,CAAC,OAAO,EAAE,gBAAgB;gBAAzB,OAAO,EAAE,gBAAgB;CAgBjD"}
@@ -0,0 +1,63 @@
1
+ /**
2
+ * Errors thrown by the DuckDB frame.
3
+ *
4
+ * They are classes rather than plain `Error`s so they can carry context: a coercion failure
5
+ * lists each failing field with an example value, and an append failure reports what is left
6
+ * in the table after the rollback.
7
+ */
8
+ /** Raised by strict mode when a value does not fit its declared field type. */
9
+ export class CoercionFailureError extends Error {
10
+ failures;
11
+ constructor(message, failures) {
12
+ super(message);
13
+ this.failures = failures;
14
+ this.name = 'CoercionFailureError';
15
+ }
16
+ }
17
+ /**
18
+ * Thrown when an `append` fails and is rolled back.
19
+ *
20
+ * An append runs in a transaction, so a failure leaves the table as it was. The message says
21
+ * how many rows remain, so a caller building one table from many payloads knows its earlier
22
+ * payloads are intact. The underlying error is kept as `cause`.
23
+ *
24
+ * `fromRecords` does not use this error: it has no earlier table to report on, and it throws
25
+ * what `DataFrame` throws.
26
+ */
27
+ export class AppendError extends Error {
28
+ failure;
29
+ constructor(failure, cause) {
30
+ const reason = cause instanceof Error ? cause.message : String(cause);
31
+ const survived = failure.rowsRemaining == null
32
+ ? 'the table could not be counted afterwards, so its contents are in doubt'
33
+ : `the table is unchanged and still has ${failure.rowsRemaining} row(s)`;
34
+ super(`appending ${failure.describedSource} to table "${failure.table}" failed`
35
+ + ` - it was rolled back, so ${survived}. Cause: ${reason}`, { cause });
36
+ this.failure = failure;
37
+ this.name = 'AppendError';
38
+ }
39
+ }
40
+ /**
41
+ * Thrown when required DuckDB extensions cannot be loaded as the database opens.
42
+ *
43
+ * Failing at startup gives a clear message. Otherwise the first query that needs the
44
+ * extension fails with a DuckDB autoload error that does not explain how to fix it.
45
+ */
46
+ export class DuckExtensionError extends Error {
47
+ failure;
48
+ constructor(failure) {
49
+ const names = failure.missing.map(({ name }) => name).join(', ');
50
+ const details = failure.missing
51
+ .map(({ name, reason, error }) => ` ${name} (${reason}): ${error}`)
52
+ .join('\n');
53
+ const fix = failure.autoinstall
54
+ ? 'the download failed, so this machine cannot reach the extension repository'
55
+ : 'autoinstall is off, so they must be installed when the image is built:'
56
+ + ` \`duckdb-extensions install --dir ${failure.directory}\``;
57
+ super(`DuckDB extension(s) ${names} could not be loaded (duckdb ${failure.version},`
58
+ + ` ${failure.platform}, directory ${failure.directory}) - ${fix}\n${details}`);
59
+ this.failure = failure;
60
+ this.name = 'DuckExtensionError';
61
+ }
62
+ }
63
+ //# sourceMappingURL=errors.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"errors.js","sourceRoot":"","sources":["../../../src/teal-frame/errors.ts"],"names":[],"mappings":"AAEA;;;;;;EAME;AAEF,+EAA+E;AAC/E,MAAM,OAAO,oBAAqB,SAAQ,KAAK;IACL;IAAtC,YAAY,OAAe,EAAW,QAAoC;QACtE,KAAK,CAAC,OAAO,CAAC,CAAC;QADmB,aAAQ,GAAR,QAAQ,CAA4B;QAEtE,IAAI,CAAC,IAAI,GAAG,sBAAsB,CAAC;IACvC,CAAC;CACJ;AAED;;;;;;;;;EASE;AACF,MAAM,OAAO,WAAY,SAAQ,KAAK;IACb;IAArB,YAAqB,OAAsB,EAAE,KAAc;QACvD,MAAM,MAAM,GAAG,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;QACtE,MAAM,QAAQ,GAAG,OAAO,CAAC,aAAa,IAAI,IAAI;YAC1C,CAAC,CAAC,yEAAyE;YAC3E,CAAC,CAAC,wCAAwC,OAAO,CAAC,aAAa,SAAS,CAAC;QAE7E,KAAK,CACD,aAAa,OAAO,CAAC,eAAe,cAAc,OAAO,CAAC,KAAK,UAAU;cACvE,6BAA6B,QAAQ,YAAY,MAAM,EAAE,EAC3D,EAAE,KAAK,EAAE,CACZ,CAAC;QAVe,YAAO,GAAP,OAAO,CAAe;QAWvC,IAAI,CAAC,IAAI,GAAG,aAAa,CAAC;IAC9B,CAAC;CACJ;AAED;;;;;EAKE;AACF,MAAM,OAAO,kBAAmB,SAAQ,KAAK;IACpB;IAArB,YAAqB,OAAyB;QAC1C,MAAM,KAAK,GAAG,OAAO,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,EAAE,EAAE,EAAE,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACjE,MAAM,OAAO,GAAG,OAAO,CAAC,OAAO;aAC1B,GAAG,CAAC,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,EAAE,EAAE,CAAC,KAAK,IAAI,KAAK,MAAM,MAAM,KAAK,EAAE,CAAC;aACnE,IAAI,CAAC,IAAI,CAAC,CAAC;QAChB,MAAM,GAAG,GAAG,OAAO,CAAC,WAAW;YAC3B,CAAC,CAAC,4EAA4E;YAC9E,CAAC,CAAC,wEAAwE;kBACpE,sCAAsC,OAAO,CAAC,SAAS,IAAI,CAAC;QAEtE,KAAK,CACD,uBAAuB,KAAK,gCAAgC,OAAO,CAAC,OAAO,GAAG;cAC5E,IAAI,OAAO,CAAC,QAAQ,eAAe,OAAO,CAAC,SAAS,OAAO,GAAG,KAAK,OAAO,EAAE,CACjF,CAAC;QAbe,YAAO,GAAP,OAAO,CAAkB;QAc1C,IAAI,CAAC,IAAI,GAAG,oBAAoB,CAAC;IACrC,CAAC;CACJ"}
@@ -0,0 +1,29 @@
1
+ import { FrameConfig } from './interfaces.js';
2
+ /**
3
+ * SQL for the `@expandValues` directive, which turns each array element into its own output
4
+ * row. There are two modes:
5
+ *
6
+ * - `correlate: true` zips the lists by position: a row produces as many rows as its longest
7
+ * list, and shorter lists are padded with null.
8
+ * - `correlate: false` stacks the lists: a row produces as many rows as its list lengths add
9
+ * up to. Each field gets its own block of rows, with the other expanded fields null there.
10
+ *
11
+ * In both modes, a row whose expanded lists are all null or empty is kept as one row with those
12
+ * fields null (a plain `unnest` would drop it). Fields that are not expanded are copied onto
13
+ * every output row. Blocks follow the frame's column order, not the order of `fields`. The
14
+ * expanded fields come out with `array: false`.
15
+ *
16
+ * It is a single SELECT with no UNION ALL, so row order is kept. Each row unnests a list of
17
+ * `{ k, i }` pairs (which field, which position), and each expanded column is `field[i]` where
18
+ * `k` selects it. The pairs have the same type whatever the fields hold, so no element type
19
+ * has to be spelled out.
20
+ */
21
+ export interface ExpandValuesOptions {
22
+ /** `true` zips the lists by position; `false` stacks one block of rows per field. */
23
+ readonly correlate: boolean;
24
+ }
25
+ export declare function expandValuesSQL(from: string, columns: readonly string[], config: FrameConfig, fields: readonly string[], options: ExpandValuesOptions): {
26
+ sql: string;
27
+ config: FrameConfig;
28
+ };
29
+ //# sourceMappingURL=expand-values.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"expand-values.d.ts","sourceRoot":"","sources":["../../../src/teal-frame/expand-values.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAC;AAE9C;;;;;;;;;;;;;;;;;;EAkBE;AAEF,MAAM,WAAW,mBAAmB;IAChC,qFAAqF;IACrF,QAAQ,CAAC,SAAS,EAAE,OAAO,CAAC;CAC/B;AAgCD,wBAAgB,eAAe,CAC3B,IAAI,EAAE,MAAM,EACZ,OAAO,EAAE,SAAS,MAAM,EAAE,EAC1B,MAAM,EAAE,WAAW,EACnB,MAAM,EAAE,SAAS,MAAM,EAAE,EACzB,OAAO,EAAE,mBAAmB,GAC7B;IAAE,GAAG,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,WAAW,CAAA;CAAE,CA6BtC"}
@@ -0,0 +1,53 @@
1
+ import { TSError } from '@terascope/core-utils';
2
+ import { quoteIdentifier } from '@terascope/sql-builder';
3
+ const PAIR = '__teal_expand';
4
+ function invalid(field) {
5
+ return new TSError(`Invalid use of @expandValues on field "${field}", expected array value`, {
6
+ statusCode: 400,
7
+ context: { safe: true },
8
+ });
9
+ }
10
+ /** The list of `{ k, i }` pairs one input row expands into. */
11
+ function pairs(expanded, correlate) {
12
+ const length = (field) => `coalesce(len(${quoteIdentifier(field)}), 0)`;
13
+ // a row with nothing to expand still produces one row: field -1, position 0, null everywhere
14
+ const placeholder = `[{'k': -1, 'i': 0}]`;
15
+ if (correlate) {
16
+ const longest = expanded.length === 1
17
+ ? length(expanded[0])
18
+ : `greatest(${expanded.map(length).join(', ')})`;
19
+ return `CASE WHEN ${longest} = 0 THEN ${placeholder}`
20
+ + ` ELSE list_transform(range(1, ${longest} + 1), lambda i : {'k': 0, 'i': i}) END`;
21
+ }
22
+ const blocks = expanded.map((field, k) => (`list_transform(range(1, ${length(field)} + 1), lambda i : {'k': ${k}, 'i': i})`));
23
+ const all = blocks.length === 1 ? blocks[0] : `list_concat(${blocks.join(', ')})`;
24
+ return `CASE WHEN len(${all}) = 0 THEN ${placeholder} ELSE ${all} END`;
25
+ }
26
+ export function expandValuesSQL(from, columns, config, fields, options) {
27
+ const declared = (config.fields ?? {});
28
+ for (const field of fields) {
29
+ if (!columns.includes(field)) {
30
+ throw new TSError(`Unknown column "${field}" in @expandValues`, {
31
+ statusCode: 400,
32
+ context: { safe: true },
33
+ });
34
+ }
35
+ if (declared[field]?.array !== true)
36
+ throw invalid(field);
37
+ }
38
+ const wanted = new Set(fields);
39
+ const expanded = columns.filter((column) => wanted.has(column));
40
+ const pick = (column) => {
41
+ const k = expanded.indexOf(column);
42
+ const ref = quoteIdentifier(column);
43
+ if (k === -1)
44
+ return ref;
45
+ const which = options.correlate ? `${PAIR}.k = 0` : `${PAIR}.k = ${k}`;
46
+ return `CASE WHEN ${which} THEN ${ref}[${PAIR}.i] END AS ${ref}`;
47
+ };
48
+ const inner = `SELECT *, unnest(${pairs(expanded, options.correlate)}) AS ${PAIR} FROM ${from}`;
49
+ const sql = `SELECT ${columns.map(pick).join(', ')} FROM (${inner})`;
50
+ const fieldsOut = Object.fromEntries(Object.entries(declared).map(([name, field]) => [name, wanted.has(name) ? { ...field, array: false } : field]));
51
+ return { sql, config: { ...config, fields: fieldsOut } };
52
+ }
53
+ //# sourceMappingURL=expand-values.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"expand-values.js","sourceRoot":"","sources":["../../../src/teal-frame/expand-values.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,58 @@
1
+ import { DataTypeConfig, ReadonlyDataTypeConfig } from '@terascope/types';
2
+ import { SerializeOptions } from '../vector/interfaces.js';
3
+ /**
4
+ * How an export renders fields and nulls: `DataFrame`'s `SerializeOptions`, with the same
5
+ * meaning, plus `removeNullFields` as a shorthand for two common presets. See
6
+ * {@link resolveRules}.
7
+ */
8
+ export interface JsonExportOptions extends SerializeOptions {
9
+ /**
10
+ * Selects a preset: `true` omits null fields and empty objects, `false` writes null fields
11
+ * as `null`. Explicit `SerializeOptions` flags override the preset.
12
+ */
13
+ removeNullFields?: boolean;
14
+ }
15
+ /**
16
+ * The seven `SerializeOptions` flags, resolved. See {@link resolveRules}.
17
+ */
18
+ interface Rules {
19
+ useNullForUndefined: boolean;
20
+ skipNilValues: boolean;
21
+ skipEmptyArrays: boolean;
22
+ skipNilListValues: boolean;
23
+ skipNilObjectValues: boolean;
24
+ skipEmptyObjects: boolean;
25
+ skipDuplicateObjects: boolean;
26
+ }
27
+ /**
28
+ * Resolves the rules an export follows.
29
+ *
30
+ * If any `SerializeOptions` flag is given, the flags mean exactly what they mean to
31
+ * `DataFrame.toJSON`, and an unset flag is false. `removeNullFields` selects a preset that
32
+ * explicit flags override. With neither, the default is the `removeNullFields: true` preset.
33
+ */
34
+ export declare function resolveRules(options?: JsonExportOptions): Rules;
35
+ /**
36
+ * SQL rendering one LIST column's elements as JSON text (see `TealFrame.listValues`), and
37
+ * whether the elements are objects, which decides whether `skipNilObjectValues` applies.
38
+ */
39
+ export declare function buildJsonListElements(config: DataTypeConfig | ReadonlyDataTypeConfig, column: string, options?: JsonExportOptions): {
40
+ sql: string;
41
+ isObject: boolean;
42
+ };
43
+ /**
44
+ * The predicate for the rows an export writes, or undefined when it writes all of them. It is
45
+ * separate from {@link buildJsonExpression} so the filter never evaluates the rendered row.
46
+ */
47
+ export declare function buildJsonRowFilter(config: DataTypeConfig | ReadonlyDataTypeConfig, options?: JsonExportOptions): string | undefined;
48
+ /**
49
+ * A SQL expression producing one JSON string per row, byte-identical to `DataFrame.toJSON` with
50
+ * the same options, or NULL for a row that `skipEmptyObjects` drops.
51
+ *
52
+ * Two things are left to the caller: removing duplicate rows under `skipDuplicateObjects`,
53
+ * which compares whole rendered rows in order and is done on the stream (`TealFrame.ndjson`),
54
+ * and filtering rows, which uses {@link buildJsonRowFilter}.
55
+ */
56
+ export declare function buildJsonExpression(config: DataTypeConfig | ReadonlyDataTypeConfig, options?: JsonExportOptions): string;
57
+ export {};
58
+ //# sourceMappingURL=export-json.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"export-json.d.ts","sourceRoot":"","sources":["../../../src/teal-frame/export-json.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,sBAAsB,EAA6B,MAAM,kBAAkB,CAAC;AAErG,OAAO,EAAE,gBAAgB,EAAE,MAAM,yBAAyB,CAAC;AA0D3D;;;;EAIE;AACF,MAAM,WAAW,iBAAkB,SAAQ,gBAAgB;IACvD;;;MAGE;IACF,gBAAgB,CAAC,EAAE,OAAO,CAAC;CAC9B;AAoDD;;EAEE;AACF,UAAU,KAAK;IACX,mBAAmB,EAAE,OAAO,CAAC;IAC7B,aAAa,EAAE,OAAO,CAAC;IACvB,eAAe,EAAE,OAAO,CAAC;IACzB,iBAAiB,EAAE,OAAO,CAAC;IAC3B,mBAAmB,EAAE,OAAO,CAAC;IAC7B,gBAAgB,EAAE,OAAO,CAAC;IAC1B,oBAAoB,EAAE,OAAO,CAAC;CACjC;AA4BD;;;;;;EAME;AACF,wBAAgB,YAAY,CAAC,OAAO,GAAE,iBAAsB,GAAG,KAAK,CAOnE;AAmQD;;;EAGE;AACF,wBAAgB,qBAAqB,CACjC,MAAM,EAAE,cAAc,GAAG,sBAAsB,EAC/C,MAAM,EAAE,MAAM,EACd,OAAO,GAAE,iBAAsB,GAChC;IAAE,GAAG,EAAE,MAAM,CAAC;IAAC,QAAQ,EAAE,OAAO,CAAA;CAAE,CASpC;AAED;;;EAGE;AACF,wBAAgB,kBAAkB,CAC9B,MAAM,EAAE,cAAc,GAAG,sBAAsB,EAC/C,OAAO,GAAE,iBAAsB,GAChC,MAAM,GAAG,SAAS,CAGpB;AAED;;;;;;;EAOE;AACF,wBAAgB,mBAAmB,CAC/B,MAAM,EAAE,cAAc,GAAG,sBAAsB,EAC/C,OAAO,GAAE,iBAAsB,GAChC,MAAM,CAMR"}