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