@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.
- 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,575 @@
|
|
|
1
|
+
import { SQLDialectName } from '@terascope/types';
|
|
2
|
+
import { DataType } from '@terascope/data-types';
|
|
3
|
+
import { getSQLDialect, groupByClause, quoteIdentifier, quoteLiteral, toSQLSort, wholeNumber } from '@terascope/sql-builder';
|
|
4
|
+
import { appendInTransaction } from './append.js';
|
|
5
|
+
import { getContext } from './database.js';
|
|
6
|
+
import { AppendError } from './errors.js';
|
|
7
|
+
import { createTable, nextTableName } from './table.js';
|
|
8
|
+
import { joinSQL, selectList } from './clauses.js';
|
|
9
|
+
import { readParquetSource } from './sources.js';
|
|
10
|
+
import { assertOrderSafe } from './order-safety.js';
|
|
11
|
+
import { resolveRules } from './export-json.js';
|
|
12
|
+
import * as output from './output.js';
|
|
13
|
+
import { makeRowShapers } from './row-shape.js';
|
|
14
|
+
import { expandValuesSQL } from './expand-values.js';
|
|
15
|
+
import { deepSelectSQL, emptySkippedObjects } from './deep-select.js';
|
|
16
|
+
import { distinctLines, parseLines, writeLines } from './line-stream.js';
|
|
17
|
+
/**
|
|
18
|
+
* The DuckDB dialect, shared with `@terascope/xlucene-translator`.
|
|
19
|
+
*
|
|
20
|
+
* `ORDER BY` and `LIMIT`/`OFFSET` are rendered by the dialect, so a sort built by a frame and
|
|
21
|
+
* a sort in a statement from `QueryAccess.restrictSQLQuery` place nulls the same way.
|
|
22
|
+
*/
|
|
23
|
+
const dialect = getSQLDialect(SQLDialectName.duckdb);
|
|
24
|
+
/**
|
|
25
|
+
* A frame whose rows live in DuckDB.
|
|
26
|
+
*
|
|
27
|
+
* TealFrame has its own API; it does not wrap or replace `DataFrame`. Its methods fall into
|
|
28
|
+
* three groups:
|
|
29
|
+
*
|
|
30
|
+
* 1. **Compose a statement:** `filter`, `select`, `orderBy`, `limit`, `distinct`, `join`,
|
|
31
|
+
* `deepSelect`, `pruneEmptyObjects`, `expandValues` and `removeEmptyRows`. Each returns a
|
|
32
|
+
* new frame over one more SQL step. Nothing runs yet.
|
|
33
|
+
* 2. **Run an existing statement:** `query` (instance) and `fromSQL` (static).
|
|
34
|
+
* 3. **Consume:** `rows`, `size`, `ndjson`, `writeNDJSON`, `writeParquet`, `listValues` and
|
|
35
|
+
* `countEmptyRows`. These execute the statement and produce output.
|
|
36
|
+
*
|
|
37
|
+
* `filter` and `select` are clause builders, not a search API: `filter` is the `WHERE` clause
|
|
38
|
+
* and `select` is the `SELECT` list, just as `orderBy` is the `ORDER BY`. They exist for
|
|
39
|
+
* callers that build a query one step at a time. For example, `tealFrameAdapter` returns an
|
|
40
|
+
* expression for one function on one column, and a chain of transforms becomes a chain of
|
|
41
|
+
* `select` calls that compose into one statement evaluated in a single pass.
|
|
42
|
+
*
|
|
43
|
+
* If you already have a complete statement, such as one from `QueryAccess`, pass it to
|
|
44
|
+
* `query` whole. Rebuilding a restricted statement from `filter` and `select` can drop a
|
|
45
|
+
* field restriction.
|
|
46
|
+
*/
|
|
47
|
+
export class TealFrame {
|
|
48
|
+
ctx;
|
|
49
|
+
config;
|
|
50
|
+
source;
|
|
51
|
+
columns;
|
|
52
|
+
constructor(ctx, config,
|
|
53
|
+
/**
|
|
54
|
+
* Not readonly: `append` may promote a relation to a table, because a frame manages
|
|
55
|
+
* its own storage. Every other operation returns a new frame and leaves this one
|
|
56
|
+
* unchanged.
|
|
57
|
+
*/
|
|
58
|
+
source, columns) {
|
|
59
|
+
this.ctx = ctx;
|
|
60
|
+
this.config = config;
|
|
61
|
+
this.source = source;
|
|
62
|
+
this.columns = columns;
|
|
63
|
+
}
|
|
64
|
+
/** The in-flight promotion of a relation to a table, shared by concurrent appends. */
|
|
65
|
+
promotion;
|
|
66
|
+
/** True when the rows are in a real table rather than recomputed per reference. */
|
|
67
|
+
get isMaterialized() {
|
|
68
|
+
return this.source.kind === 'table';
|
|
69
|
+
}
|
|
70
|
+
/**
|
|
71
|
+
* True when this frame's rows come out in a defined order.
|
|
72
|
+
*
|
|
73
|
+
* Set by `orderBy` and kept by the operators that preserve order. Operations that would
|
|
74
|
+
* discard the order check it and throw.
|
|
75
|
+
*/
|
|
76
|
+
get isOrdered() {
|
|
77
|
+
return this.source.kind === 'relation' && this.source.ordered === true;
|
|
78
|
+
}
|
|
79
|
+
/** Refuses an operation that would silently discard an ordering - see `order-safety.ts`. */
|
|
80
|
+
assertOrderSafe(operation, other) {
|
|
81
|
+
assertOrderSafe(operation, this.isOrdered || other?.isOrdered === true);
|
|
82
|
+
}
|
|
83
|
+
/** A new relation-backed frame over `sql` on the same database. */
|
|
84
|
+
derive(sql, { config = this.config, columns = this.columns, ordered } = {}) {
|
|
85
|
+
return new TealFrame(this.ctx, config, { kind: 'relation', sql, ordered }, columns);
|
|
86
|
+
}
|
|
87
|
+
/**
|
|
88
|
+
* SQL naming this frame's rows, usable directly in a `FROM` clause.
|
|
89
|
+
*
|
|
90
|
+
* For a materialized frame this is its quoted table name; for a relation it is a
|
|
91
|
+
* parenthesized subquery, so composed frames reach DuckDB's optimizer as a single
|
|
92
|
+
* statement.
|
|
93
|
+
*/
|
|
94
|
+
get from() {
|
|
95
|
+
return this.source.kind === 'table'
|
|
96
|
+
? quoteIdentifier(this.source.table)
|
|
97
|
+
: `(${this.source.sql})`;
|
|
98
|
+
}
|
|
99
|
+
/**
|
|
100
|
+
* Returns a frame over the rows of a complete SQL statement.
|
|
101
|
+
*
|
|
102
|
+
* Use it to run a statement from `QueryAccess.restrictSQLQuery`, which is a finished
|
|
103
|
+
* `SELECT` that already carries the field restrictions:
|
|
104
|
+
*
|
|
105
|
+
* ```ts
|
|
106
|
+
* const sql = await access.restrictSQLQuery(query, { params: frame.searchParams(size) });
|
|
107
|
+
* for await (const row of frame.query(sql).rows()) { ... }
|
|
108
|
+
* ```
|
|
109
|
+
*
|
|
110
|
+
* The statement runs only when rows are requested, and it composes with other operations:
|
|
111
|
+
* `frame.query(sql).limit(10)` is one statement.
|
|
112
|
+
*
|
|
113
|
+
* `config` defaults to this frame's config. Pass the right config when the statement's
|
|
114
|
+
* `SELECT` list produces different fields. If the statement references its source more
|
|
115
|
+
* than once, materialize this frame first; see `searchParams`.
|
|
116
|
+
*
|
|
117
|
+
* @param sql A complete SQL statement.
|
|
118
|
+
* @param config The field types the statement produces. Defaults to this frame's config.
|
|
119
|
+
* @param columns The output column names. Defaults to the top-level fields of `config`.
|
|
120
|
+
*/
|
|
121
|
+
query(sql, config = this.config, columns) {
|
|
122
|
+
if (!sql.trim()) {
|
|
123
|
+
throw new TypeError('query requires a SQL statement');
|
|
124
|
+
}
|
|
125
|
+
return this.derive(sql, { config, columns: columns ?? columnsOf(config) });
|
|
126
|
+
}
|
|
127
|
+
/**
|
|
128
|
+
* Runs SQL and returns positional rows, with values as DuckDB renders them to JSON. This is
|
|
129
|
+
* for inspection, not for reading data; use `query(sql).rows()` to read data.
|
|
130
|
+
*
|
|
131
|
+
* Unlike `query`, it needs no `DataTypeConfig`, so it can run catalog queries such as
|
|
132
|
+
* `DESCRIBE`. It also skips the conversion to output values, so it shows what DuckDB
|
|
133
|
+
* actually stores.
|
|
134
|
+
*
|
|
135
|
+
* @internal
|
|
136
|
+
*/
|
|
137
|
+
rawRows(sql) {
|
|
138
|
+
return this.ctx.rows(sql);
|
|
139
|
+
}
|
|
140
|
+
/**
|
|
141
|
+
* The `SQLSearchParams` that name this frame as the source of a `QueryAccess` statement.
|
|
142
|
+
*
|
|
143
|
+
* A materialized frame reports `table`, which is quoted as an identifier. A relation-backed
|
|
144
|
+
* frame reports `relation`, its SQL used verbatim.
|
|
145
|
+
*
|
|
146
|
+
* Prefer a table when the generated statement may reference its source more than once
|
|
147
|
+
* (a self-join, a correlated subquery, a `UNION`). Each reference to a relation re-runs the
|
|
148
|
+
* whole subquery, while a table is read directly. Call `materialize()` first in that case.
|
|
149
|
+
*
|
|
150
|
+
* @param size The page size, rendered as `LIMIT`.
|
|
151
|
+
* @param from The page start, rendered as `OFFSET`.
|
|
152
|
+
*/
|
|
153
|
+
searchParams(size, from) {
|
|
154
|
+
const source = this.source.kind === 'table'
|
|
155
|
+
? { table: this.source.table }
|
|
156
|
+
: { relation: this.from };
|
|
157
|
+
return {
|
|
158
|
+
...source,
|
|
159
|
+
...(size != null && { size }),
|
|
160
|
+
...(from != null && { from }),
|
|
161
|
+
};
|
|
162
|
+
}
|
|
163
|
+
/** The backing table name, when this frame is materialized. */
|
|
164
|
+
get table() {
|
|
165
|
+
return this.source.kind === 'table' ? this.source.table : undefined;
|
|
166
|
+
}
|
|
167
|
+
/**
|
|
168
|
+
* Creates an empty frame backed by a new table. This is the usual way to make a frame;
|
|
169
|
+
* add rows with `append`.
|
|
170
|
+
*/
|
|
171
|
+
static async create(config, options = {}) {
|
|
172
|
+
const context = await getContext(options.database);
|
|
173
|
+
const { table, columns } = await createTable(context, config, options.name);
|
|
174
|
+
return new TealFrame(context, config, { kind: 'table', table }, columns);
|
|
175
|
+
}
|
|
176
|
+
/**
|
|
177
|
+
* Adds rows to this frame, from parsed records or from Parquet files, and returns the
|
|
178
|
+
* number of rows added.
|
|
179
|
+
*
|
|
180
|
+
* Records are coerced to the frame's field types; Parquet is already typed and is not.
|
|
181
|
+
*
|
|
182
|
+
* If the frame is a relation, it is first promoted to a table in place. Frames already
|
|
183
|
+
* derived from it keep the SQL they captured and are unaffected.
|
|
184
|
+
*
|
|
185
|
+
* The append runs in a transaction, so a failed batch leaves the table exactly as it was.
|
|
186
|
+
* When a table is assembled from many batches, a bad one cannot corrupt those already in it.
|
|
187
|
+
*
|
|
188
|
+
* **Finish appending before deriving other frames from this one.** Derived frames read the
|
|
189
|
+
* table by name, so a later append changes their results too.
|
|
190
|
+
*/
|
|
191
|
+
async append(source, options = {}) {
|
|
192
|
+
await this.ensureTable();
|
|
193
|
+
const table = this.source.kind === 'table' ? this.source.table : '';
|
|
194
|
+
// on its own connection and in a transaction; see `appendInTransaction`
|
|
195
|
+
return appendInTransaction(this.ctx.instance, this.config, table, source, options);
|
|
196
|
+
}
|
|
197
|
+
/**
|
|
198
|
+
* Promotes a relation to a table in place, so this frame has storage to append to.
|
|
199
|
+
*
|
|
200
|
+
* The promotion is shared, so two concurrent appends do not each create a table and split
|
|
201
|
+
* the rows between them.
|
|
202
|
+
*/
|
|
203
|
+
async ensureTable() {
|
|
204
|
+
if (this.source.kind === 'table')
|
|
205
|
+
return;
|
|
206
|
+
this.promotion ??= this.promoteToTable();
|
|
207
|
+
await this.promotion;
|
|
208
|
+
}
|
|
209
|
+
async promoteToTable() {
|
|
210
|
+
const table = nextTableName('appendable');
|
|
211
|
+
await this.ctx.run(`CREATE OR REPLACE TABLE ${quoteIdentifier(table)} AS SELECT * FROM ${this.from}`);
|
|
212
|
+
this.source = { kind: 'table', table };
|
|
213
|
+
}
|
|
214
|
+
/**
|
|
215
|
+
* Creates a frame from parsed JS records, such as Elasticsearch documents.
|
|
216
|
+
*
|
|
217
|
+
* Each value is coerced to its field type. In `strict` mode (the default) the first value
|
|
218
|
+
* that does not fit throws a `CoercionFailureError`, as `DataFrame`'s builder does. In
|
|
219
|
+
* `lenient` mode the value is stored as null and each failing field is recorded with a count
|
|
220
|
+
* and an example value.
|
|
221
|
+
*
|
|
222
|
+
* If the records cannot be added, the new table is dropped before the error is thrown.
|
|
223
|
+
*/
|
|
224
|
+
static async fromRecords(config, records, options = {}) {
|
|
225
|
+
const frame = await TealFrame.create(config, options);
|
|
226
|
+
try {
|
|
227
|
+
await frame.append({ records }, { mode: options.mode });
|
|
228
|
+
}
|
|
229
|
+
catch (err) {
|
|
230
|
+
// No frame is returned, so no caller could drop the table; drop it here. A plain
|
|
231
|
+
// `append` does not do this, because there the caller holds the frame and the
|
|
232
|
+
// table may hold earlier batches.
|
|
233
|
+
await frame.destroy();
|
|
234
|
+
// Unwrapped: nothing survived, so `AppendError`'s context adds nothing, and this
|
|
235
|
+
// throws what `DataFrame` throws, a `CoercionFailureError`.
|
|
236
|
+
throw err instanceof AppendError ? err.cause : err;
|
|
237
|
+
}
|
|
238
|
+
return frame;
|
|
239
|
+
}
|
|
240
|
+
/**
|
|
241
|
+
* Creates a frame over Parquet files, without coercing their values.
|
|
242
|
+
*
|
|
243
|
+
* Parquet carries its own schema, so column types are already enforced; the values are
|
|
244
|
+
* expected to have been validated when the files were written.
|
|
245
|
+
*
|
|
246
|
+
* @param path One path, a list of paths, or a glob. Several files read as one relation.
|
|
247
|
+
*/
|
|
248
|
+
static async fromParquet(config, path, options = {}) {
|
|
249
|
+
const context = await getContext(options.database);
|
|
250
|
+
// relation-backed: Parquet is queried in place, so nothing is copied until rows are
|
|
251
|
+
// requested. `materialize()` turns it into one table.
|
|
252
|
+
const sql = `SELECT * FROM ${readParquetSource(path)}`;
|
|
253
|
+
return new TealFrame(context, config, { kind: 'relation', sql }, columnsOf(config));
|
|
254
|
+
}
|
|
255
|
+
/**
|
|
256
|
+
* Creates a frame over a complete SQL statement whose source is named in the SQL itself,
|
|
257
|
+
* such as `read_parquet([...])` or an existing table.
|
|
258
|
+
*
|
|
259
|
+
* Use the instance method `query()` instead when the statement was built against an
|
|
260
|
+
* existing frame.
|
|
261
|
+
*
|
|
262
|
+
* ```ts
|
|
263
|
+
* const sql = await access.restrictSQLQuery(query, {
|
|
264
|
+
* params: { relation: `read_parquet(${...})`, size: 100 }
|
|
265
|
+
* });
|
|
266
|
+
* const frame = await TealFrame.fromSQL(sql, config);
|
|
267
|
+
* ```
|
|
268
|
+
*
|
|
269
|
+
* Nothing runs until rows are requested. The statement is not validated, so any error
|
|
270
|
+
* comes from DuckDB when it executes.
|
|
271
|
+
*/
|
|
272
|
+
static async fromSQL(sql, config, options = {}) {
|
|
273
|
+
if (!sql.trim()) {
|
|
274
|
+
throw new TypeError('fromSQL requires a SQL statement');
|
|
275
|
+
}
|
|
276
|
+
const context = await getContext(options.database);
|
|
277
|
+
return new TealFrame(context, config, { kind: 'relation', sql }, columnsOf(config));
|
|
278
|
+
}
|
|
279
|
+
/**
|
|
280
|
+
* Copies this frame's rows into a new table and returns a new frame over it. The original
|
|
281
|
+
* frame is unchanged. A frame that is already a table is returned as is.
|
|
282
|
+
*
|
|
283
|
+
* A relation is recomputed every time it is referenced, so materializing pays off when the
|
|
284
|
+
* relation is expensive and used more than once. For a single use it is slower, and a
|
|
285
|
+
* cheap relation over a table never needs it.
|
|
286
|
+
*/
|
|
287
|
+
async materialize(name) {
|
|
288
|
+
if (this.isMaterialized)
|
|
289
|
+
return this;
|
|
290
|
+
const table = nextTableName(name ?? 'materialized');
|
|
291
|
+
await this.ctx.run(`CREATE OR REPLACE TABLE ${quoteIdentifier(table)} AS SELECT * FROM ${this.from}`);
|
|
292
|
+
return new TealFrame(this.ctx, this.config, { kind: 'table', table }, this.columns);
|
|
293
|
+
}
|
|
294
|
+
/**
|
|
295
|
+
* Sets the `SELECT` list, returning a new frame.
|
|
296
|
+
*
|
|
297
|
+
* Every column-level operation is a projection: applying a transform or validation,
|
|
298
|
+
* renaming, dropping, or adding a derived column. Chained `select` calls compose into one
|
|
299
|
+
* statement evaluated in a single pass, where `DataFrame` makes a pass per function.
|
|
300
|
+
* Expressions may be native SQL or calls to registered UDFs.
|
|
301
|
+
*
|
|
302
|
+
* To run a complete statement, use `query` instead.
|
|
303
|
+
*
|
|
304
|
+
* @param expressions A map of `{ outputName: sqlExpression }`, or a verbatim `SELECT` list.
|
|
305
|
+
* @param options The result's config and column names, and an optional `groupBy`. Grouping
|
|
306
|
+
* an ordered frame throws, because it would discard the order.
|
|
307
|
+
*/
|
|
308
|
+
select(expressions, options = {}) {
|
|
309
|
+
const { config = this.config, groupBy } = options;
|
|
310
|
+
const { list, names } = selectList(expressions, options.columns);
|
|
311
|
+
if (groupBy?.length)
|
|
312
|
+
this.assertOrderSafe('select with groupBy');
|
|
313
|
+
const sql = joinSQL(`SELECT ${list} FROM ${this.from}`, groupByClause(groupBy));
|
|
314
|
+
return this.derive(sql, { config, columns: names, ordered: this.isOrdered });
|
|
315
|
+
}
|
|
316
|
+
/**
|
|
317
|
+
* Joins another frame, returning a new frame.
|
|
318
|
+
*
|
|
319
|
+
* Either side may be a table or a relation. Both sides are aliased (`a` and `b` by
|
|
320
|
+
* default), because two frames often share column names; write `on` and `select` in terms
|
|
321
|
+
* of those aliases. `groupBy` lets a join and an aggregation run as one statement.
|
|
322
|
+
*
|
|
323
|
+
* Both frames must be in the same database, and neither may be ordered, because a join
|
|
324
|
+
* does not keep row order.
|
|
325
|
+
*/
|
|
326
|
+
join(other, options) {
|
|
327
|
+
if (other.ctx !== this.ctx) {
|
|
328
|
+
throw new TypeError('join requires both frames to be in the same database:'
|
|
329
|
+
+ ' they are in different databases, so neither can see the other\'s tables');
|
|
330
|
+
}
|
|
331
|
+
this.assertOrderSafe('join', other);
|
|
332
|
+
const { list, names } = selectList(options.select, options.columns);
|
|
333
|
+
const as = options.as ?? 'a';
|
|
334
|
+
const otherAs = options.otherAs ?? 'b';
|
|
335
|
+
const type = (options.type ?? 'inner').toUpperCase();
|
|
336
|
+
const sql = joinSQL(`SELECT ${list}`
|
|
337
|
+
+ ` FROM ${this.from} AS ${quoteIdentifier(as)}`
|
|
338
|
+
+ ` ${type} JOIN ${other.from} AS ${quoteIdentifier(otherAs)}`
|
|
339
|
+
+ ` ON ${options.on}`, groupByClause(options.groupBy));
|
|
340
|
+
return this.derive(sql, { config: options.config, columns: names });
|
|
341
|
+
}
|
|
342
|
+
/**
|
|
343
|
+
* Adds a `WHERE` clause, returning a new frame.
|
|
344
|
+
*
|
|
345
|
+
* The predicate is raw SQL, so the caller must quote identifiers itself: a field named
|
|
346
|
+
* `group` needs `filter('"group" = \'y\'')`. To run a complete statement, such as one
|
|
347
|
+
* from `QueryAccess`, use `query` instead.
|
|
348
|
+
*
|
|
349
|
+
* A filter keeps row order, so a sorted frame stays sorted.
|
|
350
|
+
*/
|
|
351
|
+
filter(predicate) {
|
|
352
|
+
return this.derive(`SELECT * FROM ${this.from} WHERE ${predicate}`, {
|
|
353
|
+
ordered: this.isOrdered,
|
|
354
|
+
});
|
|
355
|
+
}
|
|
356
|
+
/**
|
|
357
|
+
* Removes duplicate rows, comparing every column (`SELECT DISTINCT *`). Returns a new
|
|
358
|
+
* frame.
|
|
359
|
+
*
|
|
360
|
+
* It works on list and object columns, and treats nulls as equal, so rows that are null in
|
|
361
|
+
* the same column collapse into one.
|
|
362
|
+
*
|
|
363
|
+
* `DISTINCT` does not keep row order, so it throws on an ordered frame and its result is
|
|
364
|
+
* unordered. Remove duplicates first, then sort.
|
|
365
|
+
*/
|
|
366
|
+
distinct() {
|
|
367
|
+
this.assertOrderSafe('distinct');
|
|
368
|
+
return this.derive(`SELECT DISTINCT * FROM ${this.from}`);
|
|
369
|
+
}
|
|
370
|
+
/**
|
|
371
|
+
* Adds an `ORDER BY`, returning a new frame.
|
|
372
|
+
*
|
|
373
|
+
* The sort wraps the current relation in a subquery. DuckDB's optimizer flattens the
|
|
374
|
+
* nesting, so `.orderBy(x).limit(10)` runs as a single top-N query. The order of calls
|
|
375
|
+
* means what it says:
|
|
376
|
+
*
|
|
377
|
+
* | chain | means |
|
|
378
|
+
* |---|---|
|
|
379
|
+
* | `.orderBy(x).limit(10)` | the top 10 by x |
|
|
380
|
+
* | `.limit(10).orderBy(x)` | an arbitrary 10, sorted |
|
|
381
|
+
* | `.orderBy(x).filter(p).limit(10)` | the top 10 of the matching rows |
|
|
382
|
+
* | `.orderBy(x).limit(10).filter(p)` | the top 10, then filtered - may yield fewer |
|
|
383
|
+
*
|
|
384
|
+
* `select`, `filter` and `limit` may follow a sort. `join`, `distinct` and a grouping
|
|
385
|
+
* `select` throw on a sorted frame, because they would discard the order. `materialize()`
|
|
386
|
+
* drops the order, because a table has none.
|
|
387
|
+
*
|
|
388
|
+
* Nulls sort as in `DataFrame`: first when ascending, last when descending.
|
|
389
|
+
*
|
|
390
|
+
* **Ties are not ordered deterministically.** DuckDB sorts in parallel and is not stable,
|
|
391
|
+
* so rows with equal sort values can come back in a different order on each run, and
|
|
392
|
+
* paging over them can repeat or skip rows. `DataFrame` sorts with the stable
|
|
393
|
+
* `Array#sort`. A caller that pages must end `sort` with a unique field.
|
|
394
|
+
*
|
|
395
|
+
* @param sort The sort terms, at least one.
|
|
396
|
+
*/
|
|
397
|
+
orderBy(sort) {
|
|
398
|
+
if (sort.length === 0) {
|
|
399
|
+
throw new TypeError('orderBy requires at least one sort term');
|
|
400
|
+
}
|
|
401
|
+
const terms = dialect.orderBy(sort.map(toSQLSort));
|
|
402
|
+
return this.derive(`SELECT * FROM ${this.from} ORDER BY ${terms}`, { ordered: true });
|
|
403
|
+
}
|
|
404
|
+
/**
|
|
405
|
+
* Adds `LIMIT` and `OFFSET`, returning a new frame.
|
|
406
|
+
*
|
|
407
|
+
* Either bound may be given alone; with neither, the frame is returned unchanged, so
|
|
408
|
+
* optional paging values can be passed straight through.
|
|
409
|
+
*
|
|
410
|
+
* Prefer `limit` to stopping early in `rows()`. DuckDB stops reading once an unsorted
|
|
411
|
+
* limit is satisfied, and for a sorted one keeps only the top `count` rows instead of
|
|
412
|
+
* sorting everything. Breaking out of `rows()` stops only the JS consumer.
|
|
413
|
+
*
|
|
414
|
+
* A limit keeps row order. Note that `size()` on a limited frame counts the page, not the
|
|
415
|
+
* total; call `size()` on the frame before the limit to get the total.
|
|
416
|
+
*
|
|
417
|
+
* @param count The maximum number of rows (`LIMIT`).
|
|
418
|
+
* @param offset The number of rows to skip (`OFFSET`).
|
|
419
|
+
*/
|
|
420
|
+
limit(count, offset) {
|
|
421
|
+
if (count == null && offset == null)
|
|
422
|
+
return this;
|
|
423
|
+
// validated here so the error names this method's parameters; the dialect's own
|
|
424
|
+
// error would name `size` and `from`
|
|
425
|
+
if (count != null)
|
|
426
|
+
wholeNumber(count, 'limit\'s count');
|
|
427
|
+
if (offset != null)
|
|
428
|
+
wholeNumber(offset, 'limit\'s offset');
|
|
429
|
+
return this.derive(joinSQL(`SELECT * FROM ${this.from}`, dialect.limitOffset(count, offset)), { ordered: this.isOrdered });
|
|
430
|
+
}
|
|
431
|
+
/** Counts the frame's rows. */
|
|
432
|
+
async size() {
|
|
433
|
+
return Number(await this.ctx.scalar(`SELECT count(*) FROM ${this.from}`) ?? 0);
|
|
434
|
+
}
|
|
435
|
+
/**
|
|
436
|
+
* Writes the frame to a Parquet file compressed with zstd, for moving data between
|
|
437
|
+
* processes.
|
|
438
|
+
*
|
|
439
|
+
* Parquet's built-in zstd compression is much faster than gzipping JSON output and
|
|
440
|
+
* produces a smaller file.
|
|
441
|
+
*/
|
|
442
|
+
async writeParquet(path) {
|
|
443
|
+
await output.writeParquet(this.ctx, this.from, this.config, path);
|
|
444
|
+
}
|
|
445
|
+
/**
|
|
446
|
+
* Writes the frame to a file as ldjson, one JSON object per line.
|
|
447
|
+
*
|
|
448
|
+
* DuckDB writes the file, so rows never become JS objects and this is much faster than
|
|
449
|
+
* serializing `rows()`.
|
|
450
|
+
*
|
|
451
|
+
* The output is byte-identical to `DataFrame.toJSON` with the same `SerializeOptions`,
|
|
452
|
+
* including ISO 8601 dates and integers past `MAX_SAFE_INTEGER` written as strings. See
|
|
453
|
+
* `export-json.ts`.
|
|
454
|
+
*
|
|
455
|
+
* With no options, null fields and empty objects are omitted (`removeNullFields: true`).
|
|
456
|
+
* Any explicit `SerializeOptions` flag means exactly what it means to `DataFrame`.
|
|
457
|
+
*
|
|
458
|
+
* The promise resolves once the whole file is written. Use `ndjson()` to stream the lines
|
|
459
|
+
* instead, for example to upload them as they are produced.
|
|
460
|
+
*/
|
|
461
|
+
async writeNDJSON(path, options = {}) {
|
|
462
|
+
// removing duplicate rows keeps the first of each in stream order, which a COPY
|
|
463
|
+
// cannot express, so that option writes through the stream instead
|
|
464
|
+
if (resolveRules(options).skipDuplicateObjects) {
|
|
465
|
+
await writeLines(path, this.ndjson(options));
|
|
466
|
+
return;
|
|
467
|
+
}
|
|
468
|
+
await this.ctx.run(`COPY (${output.jsonLinesSQL(this.from, this.config, options)}) TO ${quoteLiteral(path)}`
|
|
469
|
+
+ ' (FORMAT CSV, HEADER false, QUOTE \'\', ESCAPE \'\', DELIMITER \'\u0007\')');
|
|
470
|
+
}
|
|
471
|
+
/**
|
|
472
|
+
* Streams the frame as ldjson lines, byte-identical to what `writeNDJSON` writes.
|
|
473
|
+
*
|
|
474
|
+
* DuckDB renders each line, so JavaScript only passes strings along. A caller can upload
|
|
475
|
+
* the lines as they arrive and never hold the whole result in memory.
|
|
476
|
+
*/
|
|
477
|
+
ndjson(options = {}) {
|
|
478
|
+
const lines = this.ctx.streamColumnStrings(output.jsonLinesSQL(this.from, this.config, options));
|
|
479
|
+
return resolveRules(options).skipDuplicateObjects ? distinctLines(lines) : lines;
|
|
480
|
+
}
|
|
481
|
+
/**
|
|
482
|
+
* Streams the frame's rows as JS objects.
|
|
483
|
+
*
|
|
484
|
+
* With `options`, it yields what `DataFrame.rows(true, options)` yields, by parsing the
|
|
485
|
+
* lines `ndjson(options)` produces. Without options, it yields every column, with a nil
|
|
486
|
+
* value as `null`.
|
|
487
|
+
*
|
|
488
|
+
* There is no `toArray()` or `getColumn()`: the data lives in DuckDB, so column-level work
|
|
489
|
+
* belongs in SQL, and a result may be too large to hold as an array.
|
|
490
|
+
*/
|
|
491
|
+
rows(options) {
|
|
492
|
+
if (options != null)
|
|
493
|
+
return parseLines(this.ndjson(options));
|
|
494
|
+
return this.ctx.streamRowObjects(`SELECT * FROM ${this.from}`, makeRowShapers(this.config));
|
|
495
|
+
}
|
|
496
|
+
/**
|
|
497
|
+
* Streams the elements of a list column in the first row, as
|
|
498
|
+
* `ListVector.getRowIterator(0, true, options)` yields them.
|
|
499
|
+
*
|
|
500
|
+
* Useful for a one-row frame whose single list column holds the real result. Each element
|
|
501
|
+
* is rendered by the same rules as `ndjson(options)`. A nil element is yielded as `null`
|
|
502
|
+
* under `useNullForUndefined`, as `undefined` otherwise, and skipped under
|
|
503
|
+
* `skipNilListValues` (or `skipNilObjectValues` for object elements). As in `DataFrame`,
|
|
504
|
+
* nothing is yielded under `skipEmptyArrays` when the column is empty, and
|
|
505
|
+
* `skipDuplicateObjects` is not supported.
|
|
506
|
+
*/
|
|
507
|
+
listValues(column, options = {}) {
|
|
508
|
+
return output.listValues(this.ctx, this.from, this.config, column, options);
|
|
509
|
+
}
|
|
510
|
+
/**
|
|
511
|
+
* Keeps only the selected fields, as `DataFrame.deepSelect` does. Dotted paths select
|
|
512
|
+
* fields inside nested objects, and names that do not exist are ignored. See
|
|
513
|
+
* `deep-select.ts`.
|
|
514
|
+
*/
|
|
515
|
+
deepSelect(fields) {
|
|
516
|
+
const { sql, config, columns } = deepSelectSQL(this.from, this.columns, this.config, fields);
|
|
517
|
+
return this.derive(sql, { config, columns, ordered: this.isOrdered });
|
|
518
|
+
}
|
|
519
|
+
/**
|
|
520
|
+
* Drops every Object column marked `_skip_if_empty` that has no declared child fields left,
|
|
521
|
+
* typically after `deepSelect`. Decided from the config alone; no rows are read.
|
|
522
|
+
*/
|
|
523
|
+
pruneEmptyObjects() {
|
|
524
|
+
const dropped = new Set(emptySkippedObjects(this.config));
|
|
525
|
+
if (dropped.size === 0)
|
|
526
|
+
return this;
|
|
527
|
+
const columns = this.columns.filter((column) => !dropped.has(column));
|
|
528
|
+
const fields = Object.fromEntries(Object.entries(this.config.fields ?? {})
|
|
529
|
+
.filter(([name]) => !dropped.has(name.split('.', 1)[0])));
|
|
530
|
+
const config = { ...this.config, fields };
|
|
531
|
+
const sql = columns.length
|
|
532
|
+
? `SELECT ${columns.map(quoteIdentifier).join(', ')} FROM ${this.from}`
|
|
533
|
+
: `SELECT * FROM ${this.from} LIMIT 0`;
|
|
534
|
+
return this.derive(sql, { config, columns, ordered: this.isOrdered });
|
|
535
|
+
}
|
|
536
|
+
/**
|
|
537
|
+
* Expands array fields into one row per element, as the `@expandValues` directive does.
|
|
538
|
+
* See `expand-values.ts` for the two modes. Row order is kept, and so is a row with nothing
|
|
539
|
+
* to expand. The expanded fields become `array: false`.
|
|
540
|
+
*/
|
|
541
|
+
expandValues(fields, options) {
|
|
542
|
+
const { sql, config } = expandValuesSQL(this.from, this.columns, this.config, fields, options);
|
|
543
|
+
return this.derive(sql, { config, ordered: this.isOrdered });
|
|
544
|
+
}
|
|
545
|
+
/**
|
|
546
|
+
* Counts the rows where every column is null, as `DataFrame.countEmptyRows` does. A row
|
|
547
|
+
* holding `{}` or `[]` is not empty, because the stored value is tested, not its JSON form.
|
|
548
|
+
*/
|
|
549
|
+
async countEmptyRows() {
|
|
550
|
+
return Number(await this.ctx.scalar(`SELECT count(*) FROM ${this.from} WHERE ${this.emptyRow()}`) ?? 0);
|
|
551
|
+
}
|
|
552
|
+
/** Keeps the rows that are not empty, in order, as `DataFrame.removeEmptyRows` does. */
|
|
553
|
+
removeEmptyRows() {
|
|
554
|
+
return this.filter(`NOT (${this.emptyRow()})`);
|
|
555
|
+
}
|
|
556
|
+
emptyRow() {
|
|
557
|
+
return this.columns.map((column) => `${quoteIdentifier(column)} IS NULL`).join(' AND ');
|
|
558
|
+
}
|
|
559
|
+
/**
|
|
560
|
+
* Drops the backing table, if this frame has one. A relation has nothing to drop.
|
|
561
|
+
*
|
|
562
|
+
* Call it only once no frame derived from this one is still in use, because derived
|
|
563
|
+
* frames read the table by name.
|
|
564
|
+
*/
|
|
565
|
+
async destroy() {
|
|
566
|
+
if (this.source.kind === 'table') {
|
|
567
|
+
await this.ctx.run(`DROP TABLE IF EXISTS ${quoteIdentifier(this.source.table)}`);
|
|
568
|
+
}
|
|
569
|
+
}
|
|
570
|
+
}
|
|
571
|
+
/** A config's top-level columns, as `toDuckDB` lays them out. */
|
|
572
|
+
function columnsOf(config) {
|
|
573
|
+
return Object.keys(new DataType(config).toDuckDB());
|
|
574
|
+
}
|
|
575
|
+
//# sourceMappingURL=TealFrame.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"TealFrame.js","sourceRoot":"","sources":["../../../src/teal-frame/TealFrame.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
import { DuckDBConnection, DuckDBInstance } from '@duckdb/node-api';
|
|
2
|
+
import { AppendOptions, AppendSource, FrameConfig } from './interfaces.js';
|
|
3
|
+
/**
|
|
4
|
+
* Loads rows into a frame's table. Used by `TealFrame.append` and `fromRecords`.
|
|
5
|
+
*
|
|
6
|
+
* Records arrive as JS objects, are coerced with `coerceToType` (the same function
|
|
7
|
+
* `DataFrame`'s builder uses) and are appended as typed values, with no JSON round trip.
|
|
8
|
+
* Because the coercion code is shared, field semantics match `DataFrame` exactly.
|
|
9
|
+
*
|
|
10
|
+
* These are free functions because none of them needs the frame. Each takes the append's own
|
|
11
|
+
* connection (see `appendInTransaction`), the table name and the input.
|
|
12
|
+
*/
|
|
13
|
+
/** Counts a table's rows without throwing. Used while reporting a failure, where a second
|
|
14
|
+
* error would hide the original one. */
|
|
15
|
+
export declare function countQuietly(connection: DuckDBConnection, table: string): Promise<number | undefined>;
|
|
16
|
+
/**
|
|
17
|
+
* Appends Parquet files with `INSERT ... BY NAME`.
|
|
18
|
+
*
|
|
19
|
+
* Columns are matched by name because a positional `INSERT ... SELECT *` fails when a file's
|
|
20
|
+
* column order differs from the table's, and separately produced files may not agree on order.
|
|
21
|
+
*
|
|
22
|
+
* No coercion is needed: Parquet is typed, and the values were coerced by `fromRecords` when
|
|
23
|
+
* the file was written.
|
|
24
|
+
*/
|
|
25
|
+
export declare function appendParquet(connection: DuckDBConnection, table: string, paths: string | readonly string[]): Promise<number>;
|
|
26
|
+
/**
|
|
27
|
+
* Coerces records with `coerceToType` and appends them through a typed DuckDB appender.
|
|
28
|
+
*
|
|
29
|
+
* `strict` (the default) throws on the first bad value, as `DataFrame`'s builder does.
|
|
30
|
+
* `lenient` stores null instead and collects each failing field with a count and an example.
|
|
31
|
+
*/
|
|
32
|
+
export declare function appendRecords(connection: DuckDBConnection, config: FrameConfig, table: string, records: readonly Record<string, unknown>[], options: AppendOptions): Promise<number>;
|
|
33
|
+
/**
|
|
34
|
+
* Runs one `TealFrame.append` as an atomic transaction on its own connection.
|
|
35
|
+
*
|
|
36
|
+
* **The separate connection is required for correctness.** A DuckDB transaction belongs to a
|
|
37
|
+
* connection, and the shared connection is used by the whole process. If two appends shared it,
|
|
38
|
+
* the second `BEGIN` would throw, its `ROLLBACK` would discard the first append's rows, and every
|
|
39
|
+
* later statement would fail with `Current transaction is aborted`.
|
|
40
|
+
*
|
|
41
|
+
* With one connection per append, concurrent appends to the same table are safe: DuckDB's MVCC
|
|
42
|
+
* lets appends proceed without write conflicts.
|
|
43
|
+
*/
|
|
44
|
+
export declare function appendInTransaction(instance: DuckDBInstance, config: FrameConfig, table: string, source: AppendSource, options: AppendOptions): Promise<number>;
|
|
45
|
+
//# sourceMappingURL=append.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"append.d.ts","sourceRoot":"","sources":["../../../src/teal-frame/append.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAmB,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAMrF,OAAO,EACH,aAAa,EAAE,YAAY,EAAmB,WAAW,EAC5D,MAAM,iBAAiB,CAAC;AAEzB;;;;;;;;;EASE;AAEF;wCACwC;AACxC,wBAAsB,YAAY,CAC9B,UAAU,EAAE,gBAAgB,EAAE,KAAK,EAAE,MAAM,GAC5C,OAAO,CAAC,MAAM,GAAG,SAAS,CAAC,CAU7B;AAED;;;;;;;;EAQE;AACF,wBAAsB,aAAa,CAC/B,UAAU,EAAE,gBAAgB,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,SAAS,MAAM,EAAE,GAC/E,OAAO,CAAC,MAAM,CAAC,CAOjB;AAED;;;;;EAKE;AACF,wBAAsB,aAAa,CAC/B,UAAU,EAAE,gBAAgB,EAC5B,MAAM,EAAE,WAAW,EACnB,KAAK,EAAE,MAAM,EACb,OAAO,EAAE,SAAS,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,EAC3C,OAAO,EAAE,aAAa,GACvB,OAAO,CAAC,MAAM,CAAC,CA2DjB;AAED;;;;;;;;;;EAUE;AACF,wBAAsB,mBAAmB,CACrC,QAAQ,EAAE,cAAc,EACxB,MAAM,EAAE,WAAW,EACnB,KAAK,EAAE,MAAM,EACb,MAAM,EAAE,YAAY,EACpB,OAAO,EAAE,aAAa,GACvB,OAAO,CAAC,MAAM,CAAC,CA2BjB"}
|