@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,136 @@
1
+ import { DuckDBDataChunk } from '@duckdb/node-api';
2
+ import { quoteIdentifier } from '@terascope/sql-builder';
3
+ import { MAX_CHUNK_ROWS } from './DuckContext.js';
4
+ import { AppendError, CoercionFailureError } from './errors.js';
5
+ import { describeSource, readParquetSource } from './sources.js';
6
+ import { buildPlan } from './table.js';
7
+ /**
8
+ * Loads rows into a frame's table. Used by `TealFrame.append` and `fromRecords`.
9
+ *
10
+ * Records arrive as JS objects, are coerced with `coerceToType` (the same function
11
+ * `DataFrame`'s builder uses) and are appended as typed values, with no JSON round trip.
12
+ * Because the coercion code is shared, field semantics match `DataFrame` exactly.
13
+ *
14
+ * These are free functions because none of them needs the frame. Each takes the append's own
15
+ * connection (see `appendInTransaction`), the table name and the input.
16
+ */
17
+ /** Counts a table's rows without throwing. Used while reporting a failure, where a second
18
+ * error would hide the original one. */
19
+ export async function countQuietly(connection, table) {
20
+ try {
21
+ const result = await connection.run(`SELECT count(*) FROM ${quoteIdentifier(table)}`);
22
+ const rows = await result.getRowsJson();
23
+ return Number(rows[0]?.[0] ?? 0);
24
+ }
25
+ catch {
26
+ return undefined;
27
+ }
28
+ }
29
+ /**
30
+ * Appends Parquet files with `INSERT ... BY NAME`.
31
+ *
32
+ * Columns are matched by name because a positional `INSERT ... SELECT *` fails when a file's
33
+ * column order differs from the table's, and separately produced files may not agree on order.
34
+ *
35
+ * No coercion is needed: Parquet is typed, and the values were coerced by `fromRecords` when
36
+ * the file was written.
37
+ */
38
+ export async function appendParquet(connection, table, paths) {
39
+ const result = await connection.run(`INSERT INTO ${quoteIdentifier(table)} BY NAME`
40
+ + ` SELECT * FROM ${readParquetSource(paths)}`);
41
+ const rows = await result.getRowsJson();
42
+ return Number(rows[0]?.[0] ?? 0);
43
+ }
44
+ /**
45
+ * Coerces records with `coerceToType` and appends them through a typed DuckDB appender.
46
+ *
47
+ * `strict` (the default) throws on the first bad value, as `DataFrame`'s builder does.
48
+ * `lenient` stores null instead and collects each failing field with a count and an example.
49
+ */
50
+ export async function appendRecords(connection, config, table, records, options) {
51
+ const plan = buildPlan(config);
52
+ const lenient = (options.mode ?? 'strict') === 'lenient';
53
+ const failures = new Map();
54
+ /** Records one failure. In strict mode this throws immediately. */
55
+ const recordFailure = (name, fieldType, value) => {
56
+ const existing = failures.get(name);
57
+ if (existing) {
58
+ existing.failedCount += 1;
59
+ }
60
+ else {
61
+ failures.set(name, {
62
+ field: name,
63
+ fieldType,
64
+ failedCount: 1,
65
+ exampleValue: String(value),
66
+ });
67
+ }
68
+ if (!lenient) {
69
+ throw new CoercionFailureError(`coercion failed for field ${name} (${fieldType}):`
70
+ + ` ${JSON.stringify(String(value))}`, [...failures.values()]);
71
+ }
72
+ return null;
73
+ };
74
+ const appender = await connection.createAppender(table);
75
+ const chunkTypes = (await connection.run(`SELECT * FROM ${quoteIdentifier(table)} LIMIT 0`)).columnTypes();
76
+ try {
77
+ for (let offset = 0; offset < records.length; offset += MAX_CHUNK_ROWS) {
78
+ const window = records.slice(offset, offset + MAX_CHUNK_ROWS);
79
+ const chunk = DuckDBDataChunk.create(chunkTypes, window.length);
80
+ chunk.setColumns(plan.map(({ name, fieldType, coerce, convert }) => (window.map((record) => {
81
+ try {
82
+ return convert(coerce(record[name]));
83
+ }
84
+ catch {
85
+ return recordFailure(name, fieldType, record[name]);
86
+ }
87
+ }))));
88
+ appender.appendDataChunk(chunk);
89
+ }
90
+ appender.flushSync();
91
+ }
92
+ finally {
93
+ // close on failure too, so the rollback does not run while the appender is open
94
+ appender.closeSync();
95
+ }
96
+ return records.length;
97
+ }
98
+ /**
99
+ * Runs one `TealFrame.append` as an atomic transaction on its own connection.
100
+ *
101
+ * **The separate connection is required for correctness.** A DuckDB transaction belongs to a
102
+ * connection, and the shared connection is used by the whole process. If two appends shared it,
103
+ * the second `BEGIN` would throw, its `ROLLBACK` would discard the first append's rows, and every
104
+ * later statement would fail with `Current transaction is aborted`.
105
+ *
106
+ * With one connection per append, concurrent appends to the same table are safe: DuckDB's MVCC
107
+ * lets appends proceed without write conflicts.
108
+ */
109
+ export async function appendInTransaction(instance, config, table, source, options) {
110
+ const connection = await instance.connect();
111
+ try {
112
+ await connection.run('BEGIN TRANSACTION');
113
+ try {
114
+ const added = source.records === undefined
115
+ ? await appendParquet(connection, table, source.parquet)
116
+ : await appendRecords(connection, config, table, source.records, options);
117
+ await connection.run('COMMIT');
118
+ return added;
119
+ }
120
+ catch (err) {
121
+ await connection.run('ROLLBACK');
122
+ throw new AppendError({
123
+ table,
124
+ source: source.records === undefined ? 'parquet' : 'records',
125
+ describedSource: describeSource(source),
126
+ // counted after the rollback, so it reports what is left; a successful
127
+ // append never pays for the count
128
+ rowsRemaining: await countQuietly(connection, table),
129
+ }, err);
130
+ }
131
+ }
132
+ finally {
133
+ connection.disconnectSync();
134
+ }
135
+ }
136
+ //# sourceMappingURL=append.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"append.js","sourceRoot":"","sources":["../../../src/teal-frame/append.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,22 @@
1
+ import { SelectList } from './interfaces.js';
2
+ /**
3
+ * SQL clause helpers specific to the frame.
4
+ *
5
+ * `ORDER BY`, `GROUP BY` and `LIMIT`/`OFFSET` come from `@terascope/sql-builder` so that
6
+ * translated statements render them the same way. Only the projection is built here.
7
+ */
8
+ /**
9
+ * Builds a `SELECT` list and the column names it produces.
10
+ *
11
+ * With a map, the keys are the column names and each expression is aliased to its key.
12
+ * A verbatim string cannot be turned back into column names without parsing SQL
13
+ * (`struct_pack(...) AS "nested"` and `a.*` are both valid), so it must come with
14
+ * `columns`. `QueryAccess.restrictSQLParts` returns both.
15
+ */
16
+ export declare function selectList(select: SelectList, columns?: readonly string[]): {
17
+ list: string;
18
+ names: readonly string[];
19
+ };
20
+ /** Joins SQL fragments with a single space, dropping the ones that are empty. */
21
+ export declare function joinSQL(...parts: readonly string[]): string;
22
+ //# sourceMappingURL=clauses.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"clauses.d.ts","sourceRoot":"","sources":["../../../src/teal-frame/clauses.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAE7C;;;;;EAKE;AAEF;;;;;;;EAOE;AACF,wBAAgB,UAAU,CACtB,MAAM,EAAE,UAAU,EAClB,OAAO,CAAC,EAAE,SAAS,MAAM,EAAE,GAC5B;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,SAAS,MAAM,EAAE,CAAA;CAAE,CAwB5C;AAED,iFAAiF;AACjF,wBAAgB,OAAO,CAAC,GAAG,KAAK,EAAE,SAAS,MAAM,EAAE,GAAG,MAAM,CAE3D"}
@@ -0,0 +1,41 @@
1
+ import { quoteIdentifier } from '@terascope/sql-builder';
2
+ /**
3
+ * SQL clause helpers specific to the frame.
4
+ *
5
+ * `ORDER BY`, `GROUP BY` and `LIMIT`/`OFFSET` come from `@terascope/sql-builder` so that
6
+ * translated statements render them the same way. Only the projection is built here.
7
+ */
8
+ /**
9
+ * Builds a `SELECT` list and the column names it produces.
10
+ *
11
+ * With a map, the keys are the column names and each expression is aliased to its key.
12
+ * A verbatim string cannot be turned back into column names without parsing SQL
13
+ * (`struct_pack(...) AS "nested"` and `a.*` are both valid), so it must come with
14
+ * `columns`. `QueryAccess.restrictSQLParts` returns both.
15
+ */
16
+ export function selectList(select, columns) {
17
+ if (typeof select === 'string') {
18
+ if (!select.trim()) {
19
+ throw new TypeError('a verbatim SELECT list cannot be empty');
20
+ }
21
+ if (columns == null) {
22
+ throw new TypeError('a verbatim SELECT list needs its `columns`, because a SELECT list cannot be'
23
+ + ' parsed back into column names - QueryAccess.restrictSQLParts returns them'
24
+ + ' beside it');
25
+ }
26
+ return { list: select, names: columns };
27
+ }
28
+ const names = Object.keys(select);
29
+ if (names.length === 0) {
30
+ throw new TypeError('select requires at least one expression');
31
+ }
32
+ return {
33
+ list: names.map((name) => `${select[name]} AS ${quoteIdentifier(name)}`).join(', '),
34
+ names,
35
+ };
36
+ }
37
+ /** Joins SQL fragments with a single space, dropping the ones that are empty. */
38
+ export function joinSQL(...parts) {
39
+ return parts.filter(Boolean).join(' ');
40
+ }
41
+ //# sourceMappingURL=clauses.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"clauses.js","sourceRoot":"","sources":["../../../src/teal-frame/clauses.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AAGzD;;;;;EAKE;AAEF;;;;;;;EAOE;AACF,MAAM,UAAU,UAAU,CACtB,MAAkB,EAClB,OAA2B;IAE3B,IAAI,OAAO,MAAM,KAAK,QAAQ,EAAE,CAAC;QAC7B,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE,EAAE,CAAC;YACjB,MAAM,IAAI,SAAS,CAAC,wCAAwC,CAAC,CAAC;QAClE,CAAC;QACD,IAAI,OAAO,IAAI,IAAI,EAAE,CAAC;YAClB,MAAM,IAAI,SAAS,CACf,6EAA6E;kBAC3E,4EAA4E;kBAC5E,YAAY,CACjB,CAAC;QACN,CAAC;QACD,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,EAAE,CAAC;IAC5C,CAAC;IAED,MAAM,KAAK,GAAG,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;IAClC,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACrB,MAAM,IAAI,SAAS,CAAC,yCAAyC,CAAC,CAAC;IACnE,CAAC;IAED,OAAO;QACH,IAAI,EAAE,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,GAAG,MAAM,CAAC,IAAI,CAAC,OAAO,eAAe,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC;QACnF,KAAK;KACR,CAAC;AACN,CAAC;AAED,iFAAiF;AACjF,MAAM,UAAU,OAAO,CAAC,GAAG,KAAwB;IAC/C,OAAO,KAAK,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AAC3C,CAAC"}
@@ -0,0 +1,46 @@
1
+ import { DuckContext } from './DuckContext.js';
2
+ import { ScalarFunctionSpec } from './scalar-function.js';
3
+ import { DuckDatabaseOptions } from './interfaces.js';
4
+ /**
5
+ * Returns the context for a database path, creating it on first use and caching it per path.
6
+ *
7
+ * `:memory:` is the process-wide default. Any other path is a file-backed database, which is
8
+ * also how a test gets an isolated catalog.
9
+ */
10
+ export declare function getContext(database?: string): Promise<DuckContext>;
11
+ /**
12
+ * Opens or reconfigures a database, and resolves once the settings are applied.
13
+ *
14
+ * Call it once at startup, for example to give DuckDB a directory to spill to:
15
+ * `configureDuckDatabase({ tempDirectory: '/var/tmp/duck', memoryLimit: '48GB' })`.
16
+ * Calling it on a database that is already open updates the settings in place.
17
+ */
18
+ export declare function configureDuckDatabase(options?: DuckDatabaseOptions): Promise<void>;
19
+ /**
20
+ * Registers a scalar function (UDF) so SQL can call a data-mate function's JavaScript
21
+ * implementation.
22
+ *
23
+ * This is how a data-mate function without a native SQL translation runs inside a query.
24
+ * Calling the JavaScript implementation guarantees the same results as `DataFrame`, whereas
25
+ * DuckDB's own casts and functions often differ from it on edge cases.
26
+ *
27
+ * Registration is instance-wide, so the function is available to every frame and every
28
+ * stream on that database. Returns the function's name.
29
+ */
30
+ export declare function registerScalarFunction(spec: ScalarFunctionSpec & {
31
+ database?: string;
32
+ }): Promise<string>;
33
+ /**
34
+ * The number of scalar functions registered on a database.
35
+ *
36
+ * DuckDB cannot unregister a function, so this grows with the functions and data types in use
37
+ * (never with their arguments; see `scalar-function.ts`). A long-running process may want to
38
+ * report it as a metric.
39
+ */
40
+ export declare function registeredFunctionCount(database?: string): Promise<number>;
41
+ /**
42
+ * Closes a cached database and removes it from the cache. Intended for test teardown; a
43
+ * process that is exiting does not need to call it.
44
+ */
45
+ export declare function closeDuckDatabase(database?: string): Promise<void>;
46
+ //# sourceMappingURL=database.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"database.d.ts","sourceRoot":"","sources":["../../../src/teal-frame/database.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAC/C,OAAO,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AAC1D,OAAO,EAAE,mBAAmB,EAAwB,MAAM,iBAAiB,CAAC;AAI5E;;;;;EAKE;AACF,wBAAgB,UAAU,CAAC,QAAQ,SAAa,GAAG,OAAO,CAAC,WAAW,CAAC,CAEtE;AAuBD;;;;;;EAME;AACF,wBAAsB,qBAAqB,CACvC,OAAO,GAAE,mBAAwB,GAClC,OAAO,CAAC,IAAI,CAAC,CAUf;AAED;;;;;;;;;;EAUE;AACF,wBAAsB,sBAAsB,CACxC,IAAI,EAAE,kBAAkB,GAAG;IAAE,QAAQ,CAAC,EAAE,MAAM,CAAA;CAAE,GACjD,OAAO,CAAC,MAAM,CAAC,CAIjB;AAED;;;;;;EAME;AACF,wBAAsB,uBAAuB,CAAC,QAAQ,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAEhF;AAED;;;EAGE;AACF,wBAAsB,iBAAiB,CAAC,QAAQ,SAAa,GAAG,OAAO,CAAC,IAAI,CAAC,CAc5E"}
@@ -0,0 +1,91 @@
1
+ import { DuckContext } from './DuckContext.js';
2
+ const contexts = new Map();
3
+ /**
4
+ * Returns the context for a database path, creating it on first use and caching it per path.
5
+ *
6
+ * `:memory:` is the process-wide default. Any other path is a file-backed database, which is
7
+ * also how a test gets an isolated catalog.
8
+ */
9
+ export function getContext(database = ':memory:') {
10
+ return contexts.get(database) ?? openContext(database);
11
+ }
12
+ /**
13
+ * Opens and caches a context, and removes it from the cache if opening fails.
14
+ *
15
+ * Otherwise a failed open would stay cached, and every later call for that database would
16
+ * rethrow the same error for the life of the process. A failure such as a missing extension
17
+ * must be retryable once its cause is fixed.
18
+ */
19
+ function openContext(database, settings = {}) {
20
+ const created = DuckContext.create(database, settings);
21
+ contexts.set(database, created);
22
+ // This only handles a branch; every caller awaiting `created` still receives the rejection.
23
+ created.catch(() => {
24
+ if (contexts.get(database) === created)
25
+ contexts.delete(database);
26
+ });
27
+ return created;
28
+ }
29
+ /**
30
+ * Opens or reconfigures a database, and resolves once the settings are applied.
31
+ *
32
+ * Call it once at startup, for example to give DuckDB a directory to spill to:
33
+ * `configureDuckDatabase({ tempDirectory: '/var/tmp/duck', memoryLimit: '48GB' })`.
34
+ * Calling it on a database that is already open updates the settings in place.
35
+ */
36
+ export async function configureDuckDatabase(options = {}) {
37
+ const { database, ...settings } = options;
38
+ const existing = contexts.get(database ?? ':memory:');
39
+ if (existing) {
40
+ await (await existing).applySettings(settings);
41
+ return;
42
+ }
43
+ await openContext(database ?? ':memory:', settings);
44
+ }
45
+ /**
46
+ * Registers a scalar function (UDF) so SQL can call a data-mate function's JavaScript
47
+ * implementation.
48
+ *
49
+ * This is how a data-mate function without a native SQL translation runs inside a query.
50
+ * Calling the JavaScript implementation guarantees the same results as `DataFrame`, whereas
51
+ * DuckDB's own casts and functions often differ from it on edge cases.
52
+ *
53
+ * Registration is instance-wide, so the function is available to every frame and every
54
+ * stream on that database. Returns the function's name.
55
+ */
56
+ export async function registerScalarFunction(spec) {
57
+ const { database, ...fnSpec } = spec;
58
+ (await getContext(database)).registerFunction(fnSpec);
59
+ return fnSpec.name;
60
+ }
61
+ /**
62
+ * The number of scalar functions registered on a database.
63
+ *
64
+ * DuckDB cannot unregister a function, so this grows with the functions and data types in use
65
+ * (never with their arguments; see `scalar-function.ts`). A long-running process may want to
66
+ * report it as a metric.
67
+ */
68
+ export async function registeredFunctionCount(database) {
69
+ return (await getContext(database)).functionCount;
70
+ }
71
+ /**
72
+ * Closes a cached database and removes it from the cache. Intended for test teardown; a
73
+ * process that is exiting does not need to call it.
74
+ */
75
+ export async function closeDuckDatabase(database = ':memory:') {
76
+ const context = contexts.get(database);
77
+ if (!context)
78
+ return;
79
+ contexts.delete(database);
80
+ let opened;
81
+ try {
82
+ opened = await context;
83
+ }
84
+ catch {
85
+ // The open failed: its error went to the caller that opened it, and `create` already
86
+ // closed the instance, so there is nothing left to close.
87
+ return;
88
+ }
89
+ opened.disconnect();
90
+ }
91
+ //# sourceMappingURL=database.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"database.js","sourceRoot":"","sources":["../../../src/teal-frame/database.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAI/C,MAAM,QAAQ,GAAG,IAAI,GAAG,EAAgC,CAAC;AAEzD;;;;;EAKE;AACF,MAAM,UAAU,UAAU,CAAC,QAAQ,GAAG,UAAU;IAC5C,OAAO,QAAQ,CAAC,GAAG,CAAC,QAAQ,CAAC,IAAI,WAAW,CAAC,QAAQ,CAAC,CAAC;AAC3D,CAAC;AAED;;;;;;EAME;AACF,SAAS,WAAW,CAChB,QAAgB,EAChB,WAAiC,EAAE;IAEnC,MAAM,OAAO,GAAG,WAAW,CAAC,MAAM,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAC;IACvD,QAAQ,CAAC,GAAG,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;IAEhC,4FAA4F;IAC5F,OAAO,CAAC,KAAK,CAAC,GAAG,EAAE;QACf,IAAI,QAAQ,CAAC,GAAG,CAAC,QAAQ,CAAC,KAAK,OAAO;YAAE,QAAQ,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;IACtE,CAAC,CAAC,CAAC;IACH,OAAO,OAAO,CAAC;AACnB,CAAC;AAED;;;;;;EAME;AACF,MAAM,CAAC,KAAK,UAAU,qBAAqB,CACvC,UAA+B,EAAE;IAEjC,MAAM,EAAE,QAAQ,EAAE,GAAG,QAAQ,EAAE,GAAG,OAAO,CAAC;IAC1C,MAAM,QAAQ,GAAG,QAAQ,CAAC,GAAG,CAAC,QAAQ,IAAI,UAAU,CAAC,CAAC;IAEtD,IAAI,QAAQ,EAAE,CAAC;QACX,MAAM,CAAC,MAAM,QAAQ,CAAC,CAAC,aAAa,CAAC,QAAQ,CAAC,CAAC;QAC/C,OAAO;IACX,CAAC;IAED,MAAM,WAAW,CAAC,QAAQ,IAAI,UAAU,EAAE,QAAQ,CAAC,CAAC;AACxD,CAAC;AAED;;;;;;;;;;EAUE;AACF,MAAM,CAAC,KAAK,UAAU,sBAAsB,CACxC,IAAgD;IAEhD,MAAM,EAAE,QAAQ,EAAE,GAAG,MAAM,EAAE,GAAG,IAAI,CAAC;IACrC,CAAC,MAAM,UAAU,CAAC,QAAQ,CAAC,CAAC,CAAC,gBAAgB,CAAC,MAAM,CAAC,CAAC;IACtD,OAAO,MAAM,CAAC,IAAI,CAAC;AACvB,CAAC;AAED;;;;;;EAME;AACF,MAAM,CAAC,KAAK,UAAU,uBAAuB,CAAC,QAAiB;IAC3D,OAAO,CAAC,MAAM,UAAU,CAAC,QAAQ,CAAC,CAAC,CAAC,aAAa,CAAC;AACtD,CAAC;AAED;;;EAGE;AACF,MAAM,CAAC,KAAK,UAAU,iBAAiB,CAAC,QAAQ,GAAG,UAAU;IACzD,MAAM,OAAO,GAAG,QAAQ,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;IACvC,IAAI,CAAC,OAAO;QAAE,OAAO;IACrB,QAAQ,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;IAE1B,IAAI,MAAmB,CAAC;IACxB,IAAI,CAAC;QACD,MAAM,GAAG,MAAM,OAAO,CAAC;IAC3B,CAAC;IAAC,MAAM,CAAC;QACL,qFAAqF;QACrF,0DAA0D;QAC1D,OAAO;IACX,CAAC;IACD,MAAM,CAAC,UAAU,EAAE,CAAC;AACxB,CAAC"}
@@ -0,0 +1,55 @@
1
+ import { DuckDBStructValue } from '@duckdb/node-api';
2
+ /**
3
+ * How TealFrame stores a `Date` field, matching what `DataFrame` holds.
4
+ *
5
+ * `DataFrame` stores epoch milliseconds, or a `DateTuple` (`[epochMillis, offsetMinutes]`) once
6
+ * `setTimezone`, `toTimeZone` or `toTimeZoneUsingLocation` has attached a display offset. The
7
+ * choice is made per value. Here every `Date` column has one type:
8
+ *
9
+ * STRUCT(ms BIGINT, tz_offset SMALLINT) tz_offset is NULL unless an offset was set
10
+ *
11
+ * With one shape for every date, readers never need to know whether an earlier step attached an
12
+ * offset. A date without an offset renders with a `Z` suffix.
13
+ *
14
+ * Compared with a TIMESTAMP column, the file is about a third smaller (milliseconds compress
15
+ * better than microseconds) and range filters and writes are faster. Date functions pay a small
16
+ * cost for the per-row offset check.
17
+ *
18
+ * DuckDB does not treat a number as a date (`hour(BIGINT)` does not bind and there is no
19
+ * BIGINT to TIMESTAMP cast), so every date expression wraps the member in `epoch_ms(...)`.
20
+ */
21
+ export declare const DATE_MS = "ms";
22
+ export declare const DATE_OFFSET = "tz_offset";
23
+ export declare const DATE_TYPE: import("@duckdb/node-api").DuckDBStructType;
24
+ /**
25
+ * Converts a JS date value to the struct. Accepts epoch millis (what `coerceToType` produces for
26
+ * a plain date) or a `DateTuple`, whose offset is kept.
27
+ */
28
+ export declare function toDateValue(value: unknown): DuckDBStructValue | null;
29
+ /** Converts the struct back to `DataFrame`'s form: a `DateTuple`, or plain epoch millis. */
30
+ export declare function fromDateValue(value: unknown): unknown;
31
+ /**
32
+ * Renders a plain `{ ms, tz_offset }` object (the struct after `toPlainValue`) the way
33
+ * `DataFrame`'s `toISO8601` renders the same value. Other values are returned unchanged.
34
+ */
35
+ export declare function renderPlainDate(value: unknown): unknown;
36
+ /** SQL for the instant as a TIMESTAMP, for date functions that ignore the offset. */
37
+ export declare function instantSQL(accessor: string): string;
38
+ /**
39
+ * SQL for the local wall time as a TIMESTAMP: the instant shifted by the offset, or the instant
40
+ * itself when there is none. This matches `getValidDateWithTimezone`, which `DataFrame`'s date
41
+ * functions use on a `DateTuple`. The per-row offset check is a single `coalesce`.
42
+ */
43
+ export declare function localSQL(accessor: string): string;
44
+ /**
45
+ * SQL that turns a TIMESTAMP back into a date value with no offset. In `DataFrame`, a date
46
+ * function that returns a date also returns plain epoch millis, even for tuple input.
47
+ */
48
+ export declare function fromTimestampSQL(expression: string): string;
49
+ /**
50
+ * SQL that renders the date as JSON text, byte-for-byte equal to `toISO8601`. A missing or zero
51
+ * offset renders as UTC with a `Z`; any other offset renders the local wall time followed by
52
+ * `+HH:MM` or `-HH:MM`.
53
+ */
54
+ export declare function dateJson(accessor: string): string;
55
+ //# sourceMappingURL=date-value.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"date-value.d.ts","sourceRoot":"","sources":["../../../src/teal-frame/date-value.ts"],"names":[],"mappings":"AAAA,OAAO,EACuB,iBAAiB,EAC9C,MAAM,kBAAkB,CAAC;AAI1B;;;;;;;;;;;;;;;;;;EAkBE;AAEF,eAAO,MAAM,OAAO,OAAO,CAAC;AAC5B,eAAO,MAAM,WAAW,cAAc,CAAC;AAKvC,eAAO,MAAM,SAAS,6CAAyD,CAAC;AAEhF;;;EAGE;AACF,wBAAgB,WAAW,CAAC,KAAK,EAAE,OAAO,GAAG,iBAAiB,GAAG,IAAI,CASpE;AAED,4FAA4F;AAC5F,wBAAgB,aAAa,CAAC,KAAK,EAAE,OAAO,GAAG,OAAO,CAQrD;AAED;;;EAGE;AACF,wBAAgB,eAAe,CAAC,KAAK,EAAE,OAAO,GAAG,OAAO,CASvD;AAED,qFAAqF;AACrF,wBAAgB,UAAU,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,CAEnD;AAED;;;;EAIE;AACF,wBAAgB,QAAQ,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,CAEjD;AAED;;;EAGE;AACF,wBAAgB,gBAAgB,CAAC,UAAU,EAAE,MAAM,GAAG,MAAM,CAG3D;AAED;;;;EAIE;AACF,wBAAgB,QAAQ,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,CAWjD"}
@@ -0,0 +1,106 @@
1
+ import { BIGINT, SMALLINT, STRUCT, structValue, } from '@duckdb/node-api';
2
+ import { isDateTuple, toISO8601 } from '@terascope/core-utils';
3
+ import { quoteLiteral } from '@terascope/sql-builder';
4
+ /**
5
+ * How TealFrame stores a `Date` field, matching what `DataFrame` holds.
6
+ *
7
+ * `DataFrame` stores epoch milliseconds, or a `DateTuple` (`[epochMillis, offsetMinutes]`) once
8
+ * `setTimezone`, `toTimeZone` or `toTimeZoneUsingLocation` has attached a display offset. The
9
+ * choice is made per value. Here every `Date` column has one type:
10
+ *
11
+ * STRUCT(ms BIGINT, tz_offset SMALLINT) tz_offset is NULL unless an offset was set
12
+ *
13
+ * With one shape for every date, readers never need to know whether an earlier step attached an
14
+ * offset. A date without an offset renders with a `Z` suffix.
15
+ *
16
+ * Compared with a TIMESTAMP column, the file is about a third smaller (milliseconds compress
17
+ * better than microseconds) and range filters and writes are faster. Date functions pay a small
18
+ * cost for the per-row offset check.
19
+ *
20
+ * DuckDB does not treat a number as a date (`hour(BIGINT)` does not bind and there is no
21
+ * BIGINT to TIMESTAMP cast), so every date expression wraps the member in `epoch_ms(...)`.
22
+ */
23
+ export const DATE_MS = 'ms';
24
+ export const DATE_OFFSET = 'tz_offset';
25
+ /** Milliseconds in a minute, for turning an offset into a shift. */
26
+ const MINUTE_MS = 60_000;
27
+ export const DATE_TYPE = STRUCT({ [DATE_MS]: BIGINT, [DATE_OFFSET]: SMALLINT });
28
+ /**
29
+ * Converts a JS date value to the struct. Accepts epoch millis (what `coerceToType` produces for
30
+ * a plain date) or a `DateTuple`, whose offset is kept.
31
+ */
32
+ export function toDateValue(value) {
33
+ if (value == null)
34
+ return null;
35
+ const [millis, offset] = isDateTuple(value) ? value : [Number(value), null];
36
+ if (!Number.isFinite(millis))
37
+ return null;
38
+ return structValue({
39
+ [DATE_MS]: BigInt(Math.trunc(millis)),
40
+ [DATE_OFFSET]: offset,
41
+ });
42
+ }
43
+ /** Converts the struct back to `DataFrame`'s form: a `DateTuple`, or plain epoch millis. */
44
+ export function fromDateValue(value) {
45
+ const entries = value?.entries;
46
+ if (entries == null)
47
+ return value;
48
+ const millis = entries[DATE_MS];
49
+ if (millis == null)
50
+ return null;
51
+ const offset = entries[DATE_OFFSET];
52
+ return offset == null ? Number(millis) : [Number(millis), Number(offset)];
53
+ }
54
+ /**
55
+ * Renders a plain `{ ms, tz_offset }` object (the struct after `toPlainValue`) the way
56
+ * `DataFrame`'s `toISO8601` renders the same value. Other values are returned unchanged.
57
+ */
58
+ export function renderPlainDate(value) {
59
+ if (value == null || typeof value !== 'object' || Array.isArray(value))
60
+ return value;
61
+ const record = value;
62
+ if (!(DATE_MS in record))
63
+ return value;
64
+ const millis = record[DATE_MS];
65
+ if (millis == null)
66
+ return null;
67
+ const offset = record[DATE_OFFSET];
68
+ return toISO8601(offset == null ? Number(millis) : [Number(millis), Number(offset)]);
69
+ }
70
+ /** SQL for the instant as a TIMESTAMP, for date functions that ignore the offset. */
71
+ export function instantSQL(accessor) {
72
+ return `epoch_ms(${accessor}.${DATE_MS})`;
73
+ }
74
+ /**
75
+ * SQL for the local wall time as a TIMESTAMP: the instant shifted by the offset, or the instant
76
+ * itself when there is none. This matches `getValidDateWithTimezone`, which `DataFrame`'s date
77
+ * functions use on a `DateTuple`. The per-row offset check is a single `coalesce`.
78
+ */
79
+ export function localSQL(accessor) {
80
+ return `epoch_ms(${accessor}.${DATE_MS} + coalesce(${accessor}.${DATE_OFFSET}, 0) * ${MINUTE_MS})`;
81
+ }
82
+ /**
83
+ * SQL that turns a TIMESTAMP back into a date value with no offset. In `DataFrame`, a date
84
+ * function that returns a date also returns plain epoch millis, even for tuple input.
85
+ */
86
+ export function fromTimestampSQL(expression) {
87
+ return `CASE WHEN (${expression}) IS NULL THEN NULL ELSE`
88
+ + ` {'${DATE_MS}': epoch_ms(${expression}), '${DATE_OFFSET}': NULL::SMALLINT} END`;
89
+ }
90
+ /**
91
+ * SQL that renders the date as JSON text, byte-for-byte equal to `toISO8601`. A missing or zero
92
+ * offset renders as UTC with a `Z`; any other offset renders the local wall time followed by
93
+ * `+HH:MM` or `-HH:MM`.
94
+ */
95
+ export function dateJson(accessor) {
96
+ const offset = `${accessor}.${DATE_OFFSET}`;
97
+ const utc = `strftime(${instantSQL(accessor)}, ${quoteLiteral('%Y-%m-%dT%H:%M:%S.%gZ')})`;
98
+ const local = `strftime(${localSQL(accessor)}, ${quoteLiteral('%Y-%m-%dT%H:%M:%S.%g')})`;
99
+ const sign = `CASE WHEN ${offset} < 0 THEN '-' ELSE '+' END`;
100
+ const pad = (part) => `lpad(CAST(${part} AS VARCHAR), 2, '0')`;
101
+ const zone = `${sign} || ${pad(`abs(${offset}) // 60`)} || ':' || ${pad(`abs(${offset}) % 60`)}`;
102
+ return `to_json(CASE WHEN ${accessor}.${DATE_MS} IS NULL THEN NULL`
103
+ + ` WHEN coalesce(${offset}, 0) = 0 THEN ${utc}`
104
+ + ` ELSE ${local} || ${zone} END)::VARCHAR`;
105
+ }
106
+ //# sourceMappingURL=date-value.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"date-value.js","sourceRoot":"","sources":["../../../src/teal-frame/date-value.ts"],"names":[],"mappings":"AAAA,OAAO,EACH,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAqB,WAAW,GAC3D,MAAM,kBAAkB,CAAC;AAC1B,OAAO,EAAE,WAAW,EAAE,SAAS,EAAE,MAAM,uBAAuB,CAAC;AAC/D,OAAO,EAAE,YAAY,EAAE,MAAM,wBAAwB,CAAC;AAEtD;;;;;;;;;;;;;;;;;;EAkBE;AAEF,MAAM,CAAC,MAAM,OAAO,GAAG,IAAI,CAAC;AAC5B,MAAM,CAAC,MAAM,WAAW,GAAG,WAAW,CAAC;AAEvC,oEAAoE;AACpE,MAAM,SAAS,GAAG,MAAM,CAAC;AAEzB,MAAM,CAAC,MAAM,SAAS,GAAG,MAAM,CAAC,EAAE,CAAC,OAAO,CAAC,EAAE,MAAM,EAAE,CAAC,WAAW,CAAC,EAAE,QAAQ,EAAE,CAAC,CAAC;AAEhF;;;EAGE;AACF,MAAM,UAAU,WAAW,CAAC,KAAc;IACtC,IAAI,KAAK,IAAI,IAAI;QAAE,OAAO,IAAI,CAAC;IAC/B,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,WAAW,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,IAAI,CAAC,CAAC;IAC5E,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC;QAAE,OAAO,IAAI,CAAC;IAE1C,OAAO,WAAW,CAAC;QACf,CAAC,OAAO,CAAC,EAAE,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;QACrC,CAAC,WAAW,CAAC,EAAE,MAAM;KACxB,CAAC,CAAC;AACP,CAAC;AAED,4FAA4F;AAC5F,MAAM,UAAU,aAAa,CAAC,KAAc;IACxC,MAAM,OAAO,GAAI,KAAsD,EAAE,OAAO,CAAC;IACjF,IAAI,OAAO,IAAI,IAAI;QAAE,OAAO,KAAK,CAAC;IAElC,MAAM,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;IAChC,IAAI,MAAM,IAAI,IAAI;QAAE,OAAO,IAAI,CAAC;IAChC,MAAM,MAAM,GAAG,OAAO,CAAC,WAAW,CAAC,CAAC;IACpC,OAAO,MAAM,IAAI,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC;AAC9E,CAAC;AAED;;;EAGE;AACF,MAAM,UAAU,eAAe,CAAC,KAAc;IAC1C,IAAI,KAAK,IAAI,IAAI,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC;QAAE,OAAO,KAAK,CAAC;IACrF,MAAM,MAAM,GAAG,KAAgC,CAAC;IAChD,IAAI,CAAC,CAAC,OAAO,IAAI,MAAM,CAAC;QAAE,OAAO,KAAK,CAAC;IAEvC,MAAM,MAAM,GAAG,MAAM,CAAC,OAAO,CAAC,CAAC;IAC/B,IAAI,MAAM,IAAI,IAAI;QAAE,OAAO,IAAI,CAAC;IAChC,MAAM,MAAM,GAAG,MAAM,CAAC,WAAW,CAAC,CAAC;IACnC,OAAO,SAAS,CAAC,MAAM,IAAI,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;AACzF,CAAC;AAED,qFAAqF;AACrF,MAAM,UAAU,UAAU,CAAC,QAAgB;IACvC,OAAO,YAAY,QAAQ,IAAI,OAAO,GAAG,CAAC;AAC9C,CAAC;AAED;;;;EAIE;AACF,MAAM,UAAU,QAAQ,CAAC,QAAgB;IACrC,OAAO,YAAY,QAAQ,IAAI,OAAO,eAAe,QAAQ,IAAI,WAAW,UAAU,SAAS,GAAG,CAAC;AACvG,CAAC;AAED;;;EAGE;AACF,MAAM,UAAU,gBAAgB,CAAC,UAAkB;IAC/C,OAAO,cAAc,UAAU,0BAA0B;UACnD,MAAM,OAAO,eAAe,UAAU,OAAO,WAAW,wBAAwB,CAAC;AAC3F,CAAC;AAED;;;;EAIE;AACF,MAAM,UAAU,QAAQ,CAAC,QAAgB;IACrC,MAAM,MAAM,GAAG,GAAG,QAAQ,IAAI,WAAW,EAAE,CAAC;IAC5C,MAAM,GAAG,GAAG,YAAY,UAAU,CAAC,QAAQ,CAAC,KAAK,YAAY,CAAC,uBAAuB,CAAC,GAAG,CAAC;IAC1F,MAAM,KAAK,GAAG,YAAY,QAAQ,CAAC,QAAQ,CAAC,KAAK,YAAY,CAAC,sBAAsB,CAAC,GAAG,CAAC;IACzF,MAAM,IAAI,GAAG,aAAa,MAAM,4BAA4B,CAAC;IAC7D,MAAM,GAAG,GAAG,CAAC,IAAY,EAAE,EAAE,CAAC,aAAa,IAAI,uBAAuB,CAAC;IACvE,MAAM,IAAI,GAAG,GAAG,IAAI,OAAO,GAAG,CAAC,OAAO,MAAM,SAAS,CAAC,cAAc,GAAG,CAAC,OAAO,MAAM,QAAQ,CAAC,EAAE,CAAC;IAEjG,OAAO,qBAAqB,QAAQ,IAAI,OAAO,oBAAoB;UAC7D,kBAAkB,MAAM,iBAAiB,GAAG,EAAE;UAC9C,SAAS,KAAK,OAAO,IAAI,gBAAgB,CAAC;AACpD,CAAC"}
@@ -0,0 +1,8 @@
1
+ import { FrameConfig } from './interfaces.js';
2
+ export declare function deepSelectSQL(from: string, columns: readonly string[], config: FrameConfig, selectors: readonly string[]): {
3
+ sql: string;
4
+ config: FrameConfig;
5
+ columns: string[];
6
+ };
7
+ export declare function emptySkippedObjects(config: FrameConfig): string[];
8
+ //# sourceMappingURL=deep-select.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"deep-select.d.ts","sourceRoot":"","sources":["../../../src/teal-frame/deep-select.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAC;AAsH9C,wBAAgB,aAAa,CACzB,IAAI,EAAE,MAAM,EACZ,OAAO,EAAE,SAAS,MAAM,EAAE,EAC1B,MAAM,EAAE,WAAW,EACnB,SAAS,EAAE,SAAS,MAAM,EAAE,GAC7B;IAAE,GAAG,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,WAAW,CAAC;IAAC,OAAO,EAAE,MAAM,EAAE,CAAA;CAAE,CA+BzD;AAWD,wBAAgB,mBAAmB,CAAC,MAAM,EAAE,WAAW,GAAG,MAAM,EAAE,CAQjE"}