@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
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"replaceLiteral.js","sourceRoot":"","sources":["../../../../src/function-configs/string/replaceLiteral.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAC7C,OAAO,EACmB,WAAW,EAAE,sBAAsB,EAC9B,0BAA0B,GACxD,MAAM,kBAAkB,CAAC;
|
|
1
|
+
{"version":3,"file":"replaceLiteral.js","sourceRoot":"","sources":["../../../../src/function-configs/string/replaceLiteral.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAC7C,OAAO,EACmB,WAAW,EAAE,sBAAsB,EAC9B,0BAA0B,GACxD,MAAM,kBAAkB,CAAC;AAC1B,OAAO,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAO/C,MAAM,QAAQ,GAAoD;IAC9D;QACI,IAAI,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE;QACvC,MAAM,EAAE,EAAE,OAAO,EAAE,CAAC,EAAE,MAAM,EAAE,EAAE,SAAS,EAAE,EAAE,IAAI,EAAE,SAAS,CAAC,MAAM,EAAE,EAAE,EAAE;QACzE,KAAK,EAAE,WAAW;QAClB,KAAK,EAAE,QAAQ;QACf,MAAM,EAAE,QAAQ;KACnB;IACD;QACI,IAAI,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE;QACvC,MAAM,EAAE,EAAE,OAAO,EAAE,CAAC,EAAE,MAAM,EAAE,EAAE,SAAS,EAAE,EAAE,IAAI,EAAE,SAAS,CAAC,MAAM,EAAE,EAAE,EAAE;QACzE,KAAK,EAAE,WAAW;QAClB,KAAK,EAAE,QAAQ;QACf,MAAM,EAAE,QAAQ;QAChB,WAAW,EAAE,8CAA8C;KAC9D;CACJ,CAAC;AAEF,MAAM,CAAC,MAAM,oBAAoB,GAA6C;IAC1E,IAAI,EAAE,gBAAgB;IACtB,IAAI,EAAE,sBAAsB,CAAC,eAAe;IAC5C,YAAY,EAAE,WAAW,CAAC,iBAAiB;IAC3C,QAAQ,EAAE,0BAA0B,CAAC,MAAM;IAC3C,WAAW,EAAE,wEAAwE;IACrF,QAAQ;IACR,MAAM,CAAC,EAAE,IAAI,EAAE,EAAE,OAAO,EAAE,MAAM,EAAE,EAAE;QAChC,OAAO,CAAC,KAAc,EAAE,EAAE,CAAC,SAAS,CAAC,KAAe,EAAE,MAAM,EAAE,OAAO,CAAC,CAAC;IAC3E,CAAC;IACD;;;;;;;;;;;MAWE;IACF,GAAG,EAAE;QACD,UAAU,EAAE,CAAC,EAAE,KAAK,EAAE,IAAI,EAAE,EAAE,EAAE;YAC5B,MAAM,MAAM,GAAG,UAAU,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;YACvC,MAAM,EAAE,GAAG,YAAY,MAAM,OAAO,KAAK,GAAG,CAAC;YAC7C,OAAO,aAAa,EAAE,aAAa,KAAK,EAAE;kBACpC,mBAAmB,KAAK,QAAQ,EAAE,YAAY,UAAU,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE;kBACxE,iBAAiB,KAAK,KAAK,EAAE,aAAa,MAAM,QAAQ,CAAC;QACnE,CAAC;KACJ;IACD,OAAO,EAAE,CAAC,SAAS,CAAC,MAAM,CAAC;IAC3B,eAAe,EAAE;QACb,MAAM,EAAE;YACJ,IAAI,EAAE,SAAS,CAAC,MAAM;YACtB,KAAK,EAAE,KAAK;YACZ,WAAW,EAAE,sCAAsC;SACtD;QACD,OAAO,EAAE;YACL,IAAI,EAAE,SAAS,CAAC,MAAM;YACtB,KAAK,EAAE,KAAK;YACZ,WAAW,EAAE,mDAAmD;SACnE;KACJ;IACD,kBAAkB,EAAE,CAAC,QAAQ,EAAE,SAAS,CAAC;CAC5C,CAAC;AAEF,SAAS,SAAS,CAAC,KAAa,EAAE,MAAc,EAAE,MAAc;IAC5D,OAAO,KAAK,CAAC,OAAO,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;AACzC,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"replaceRegex.d.ts","sourceRoot":"","sources":["../../../../src/function-configs/string/replaceRegex.ts"],"names":[],"mappings":"AAEA,OAAO,EACH,oBAAoB,EAEvB,MAAM,kBAAkB,CAAC;
|
|
1
|
+
{"version":3,"file":"replaceRegex.d.ts","sourceRoot":"","sources":["../../../../src/function-configs/string/replaceRegex.ts"],"names":[],"mappings":"AAEA,OAAO,EACH,oBAAoB,EAEvB,MAAM,kBAAkB,CAAC;AAI1B,MAAM,WAAW,gBAAgB;IAC7B,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,MAAM,CAAC;IAChB,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,MAAM,CAAC,EAAE,OAAO,CAAC;CACpB;AAmCD,eAAO,MAAM,kBAAkB,EAAE,oBAAoB,CAAC,gBAAgB,CAkFrE,CAAC"}
|
|
@@ -1,6 +1,8 @@
|
|
|
1
1
|
import { isString, isRegExpLike } from '@terascope/core-utils';
|
|
2
2
|
import { FieldType } from '@terascope/types';
|
|
3
3
|
import { ProcessMode, FunctionDefinitionType, FunctionDefinitionCategory, } from '../interfaces.js';
|
|
4
|
+
import { sqlLiteral } from '../sql-helpers.js';
|
|
5
|
+
import { hasPortableEscapes, isLiteralReplacement, isRe2Safe, withClassGuard } from './sql-regex-utils.js';
|
|
4
6
|
const examples = [
|
|
5
7
|
{
|
|
6
8
|
args: { regex: 's|e', replace: 'd' },
|
|
@@ -43,6 +45,38 @@ export const replaceRegexConfig = {
|
|
|
43
45
|
return (input) => replaceFn(input, replace, regex, ignoreCase, global);
|
|
44
46
|
},
|
|
45
47
|
examples,
|
|
48
|
+
/**
|
|
49
|
+
* `regexp_replace`, guarded on both the pattern and the replacement.
|
|
50
|
+
*
|
|
51
|
+
* RE2 has no lookaround or backreferences and errors on them, and `$1` is a capture group in
|
|
52
|
+
* JavaScript but literal text in DuckDB. Patterns and replacements that use either keep the
|
|
53
|
+
* UDF; see `sql-regex-utils.ts`.
|
|
54
|
+
*/
|
|
55
|
+
sql: {
|
|
56
|
+
/**
|
|
57
|
+
* A pattern that compiles in both engines can still match different characters.
|
|
58
|
+
* JavaScript's `\s` matches 20 characters that RE2's does not (vertical tab, NBSP, the `Zs`
|
|
59
|
+
* spaces, U+2028, U+2029 and the BOM), `\S` differs on the same 20, and `.` differs on CR,
|
|
60
|
+
* U+2028 and U+2029. `\w`, `\d` and `\b` agree.
|
|
61
|
+
*
|
|
62
|
+
* Patterns using `.`, `\s`, `\S` or a negated class are therefore guarded per value rather
|
|
63
|
+
* than rejected, since rejecting every pattern with a `.` would exclude most patterns.
|
|
64
|
+
* Values containing one of the differing characters, or an astral character, go to the UDF;
|
|
65
|
+
* everything else uses `regexp_replace`. See `withClassGuard`.
|
|
66
|
+
*/
|
|
67
|
+
needs_udf_fallback: true,
|
|
68
|
+
applies: (args) => typeof args.regex === 'string'
|
|
69
|
+
&& isRe2Safe(args.regex)
|
|
70
|
+
&& hasPortableEscapes(args.regex)
|
|
71
|
+
&& isLiteralReplacement(String(args.replace ?? '')),
|
|
72
|
+
expression: ({ value, args, udf }) => {
|
|
73
|
+
const flags = `${args.ignoreCase ? 'i' : ''}${args.global ? 'g' : ''}`;
|
|
74
|
+
const rest = flags ? `, ${sqlLiteral(flags)}` : '';
|
|
75
|
+
const native = `regexp_replace(${value}, ${sqlLiteral(args.regex)},`
|
|
76
|
+
+ ` ${sqlLiteral(String(args.replace ?? ''))}${rest})`;
|
|
77
|
+
return withClassGuard(args.regex, value, native, udf);
|
|
78
|
+
},
|
|
79
|
+
},
|
|
46
80
|
accepts: [FieldType.String],
|
|
47
81
|
argument_schema: {
|
|
48
82
|
regex: {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"replaceRegex.js","sourceRoot":"","sources":["../../../../src/function-configs/string/replaceRegex.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,YAAY,EAAE,MAAM,uBAAuB,CAAC;AAC/D,OAAO,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAC7C,OAAO,EACmB,WAAW,EAAE,sBAAsB,EAC9B,0BAA0B,GACxD,MAAM,kBAAkB,CAAC;
|
|
1
|
+
{"version":3,"file":"replaceRegex.js","sourceRoot":"","sources":["../../../../src/function-configs/string/replaceRegex.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"reverse.d.ts","sourceRoot":"","sources":["../../../../src/function-configs/string/reverse.ts"],"names":[],"mappings":"AAEA,OAAO,EACH,oBAAoB,EAKvB,MAAM,kBAAkB,CAAC;
|
|
1
|
+
{"version":3,"file":"reverse.d.ts","sourceRoot":"","sources":["../../../../src/function-configs/string/reverse.ts"],"names":[],"mappings":"AAEA,OAAO,EACH,oBAAoB,EAKvB,MAAM,kBAAkB,CAAC;AA6E1B,eAAO,MAAM,aAAa,EAAE,oBA0B3B,CAAC"}
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import { getTypeOf, isString } from '@terascope/core-utils';
|
|
2
2
|
import { FieldType } from '@terascope/types';
|
|
3
3
|
import { ProcessMode, FunctionDefinitionType, FunctionDefinitionCategory } from '../interfaces.js';
|
|
4
|
+
import { sqlLiteral, NEEDS_GRAPHEME_REVERSE } from '../sql-helpers.js';
|
|
4
5
|
/**
|
|
5
6
|
* Strings containing a surrogate pair, a combining mark, or a zero-width joiner cannot
|
|
6
7
|
* be reversed one UTF-16 code unit at a time:
|
|
@@ -75,6 +76,21 @@ export const reverseConfig = {
|
|
|
75
76
|
create() {
|
|
76
77
|
return _reverse;
|
|
77
78
|
},
|
|
79
|
+
/**
|
|
80
|
+
* `reverse()` for strings that do not need grapheme segmentation, the UDF for those that do,
|
|
81
|
+
* and NULL for the empty string, which is what `_reverse` returns.
|
|
82
|
+
*
|
|
83
|
+
* The guard matches the same strings as `NEEDS_SEGMENTATION` above: an astral code point, a
|
|
84
|
+
* zero-width joiner or a combining mark. RE2 supports `\p{M}` and `\x{...}`, so it matches the
|
|
85
|
+
* same strings as the JavaScript regex. The segmentation path is about 11x slower, and this
|
|
86
|
+
* keeps it to the values that need it.
|
|
87
|
+
*/
|
|
88
|
+
sql: {
|
|
89
|
+
needs_udf_fallback: true,
|
|
90
|
+
expression: ({ value, udf }) => `CASE WHEN ${value} = '' THEN NULL`
|
|
91
|
+
+ ` WHEN regexp_matches(${value}, ${sqlLiteral(NEEDS_GRAPHEME_REVERSE)})`
|
|
92
|
+
+ ` THEN ${udf(value)} ELSE reverse(${value}) END`,
|
|
93
|
+
},
|
|
78
94
|
accepts: [FieldType.String],
|
|
79
95
|
};
|
|
80
96
|
//# sourceMappingURL=reverse.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"reverse.js","sourceRoot":"","sources":["../../../../src/function-configs/string/reverse.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,QAAQ,EAAE,MAAM,uBAAuB,CAAC;AAC5D,OAAO,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAC7C,OAAO,EAEH,WAAW,EACX,sBAAsB,EACtB,0BAA0B,EAE7B,MAAM,kBAAkB,CAAC;
|
|
1
|
+
{"version":3,"file":"reverse.js","sourceRoot":"","sources":["../../../../src/function-configs/string/reverse.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"split.d.ts","sourceRoot":"","sources":["../../../../src/function-configs/string/split.ts"],"names":[],"mappings":"AACA,OAAO,EACH,oBAAoB,EAEvB,MAAM,kBAAkB,CAAC;
|
|
1
|
+
{"version":3,"file":"split.d.ts","sourceRoot":"","sources":["../../../../src/function-configs/string/split.ts"],"names":[],"mappings":"AACA,OAAO,EACH,oBAAoB,EAEvB,MAAM,kBAAkB,CAAC;AAG1B,MAAM,WAAW,SAAS;IACtB,SAAS,CAAC,EAAE,MAAM,CAAC;CACtB;AAkCD,eAAO,MAAM,WAAW,EAAE,oBAAoB,CAAC,SAAS,CAsCvD,CAAC"}
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import { FieldType } from '@terascope/types';
|
|
2
2
|
import { ProcessMode, FunctionDefinitionType, FunctionDefinitionCategory, } from '../interfaces.js';
|
|
3
|
+
import { sqlLiteral } from '../sql-helpers.js';
|
|
3
4
|
const examples = [
|
|
4
5
|
{
|
|
5
6
|
args: {},
|
|
@@ -41,6 +42,18 @@ export const splitConfig = {
|
|
|
41
42
|
create({ args: { delimiter = '' } }) {
|
|
42
43
|
return splitFn(delimiter);
|
|
43
44
|
},
|
|
45
|
+
/**
|
|
46
|
+
* `string_split`, for a non-empty delimiter only.
|
|
47
|
+
*
|
|
48
|
+
* The default delimiter is `''`, and `String(x).split('')` splits into UTF-16 code units, which
|
|
49
|
+
* can produce lone surrogates for astral input. `string_split` with an empty delimiter does
|
|
50
|
+
* not, so that case keeps the UDF.
|
|
51
|
+
*/
|
|
52
|
+
sql: {
|
|
53
|
+
applies: (args) => typeof args.delimiter === 'string' && args.delimiter !== '',
|
|
54
|
+
expression: ({ value, args }) => `string_split(${value},`
|
|
55
|
+
+ ` ${sqlLiteral(args.delimiter)})`,
|
|
56
|
+
},
|
|
44
57
|
accepts: [FieldType.String],
|
|
45
58
|
argument_schema: {
|
|
46
59
|
delimiter: {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"split.js","sourceRoot":"","sources":["../../../../src/function-configs/string/split.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAC7C,OAAO,EACmB,WAAW,EAAE,sBAAsB,EAC9B,0BAA0B,GACxD,MAAM,kBAAkB,CAAC;
|
|
1
|
+
{"version":3,"file":"split.js","sourceRoot":"","sources":["../../../../src/function-configs/string/split.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,91 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Where DuckDB's regex engine (RE2) and JavaScript's differ.
|
|
3
|
+
*
|
|
4
|
+
* Some differences stop RE2 from compiling a pattern, which fails loudly. Others compile in both
|
|
5
|
+
* engines but match different characters, which silently returns a different answer. The helpers
|
|
6
|
+
* here detect both.
|
|
7
|
+
*/
|
|
8
|
+
/**
|
|
9
|
+
* Whether a regex can be handed to RE2, DuckDB's engine.
|
|
10
|
+
*
|
|
11
|
+
* RE2 has no lookaround and no backreferences, and the query errors if a pattern uses them.
|
|
12
|
+
* Anything containing `(?=`, `(?!`, `(?<=`, `(?<!` or a backreference like `\1` keeps the UDF.
|
|
13
|
+
*
|
|
14
|
+
* Named groups `(?<name>...)` are excluded by the same `(?<` test. RE2 supports them as
|
|
15
|
+
* `(?P<name>...)`, so this is stricter than necessary, which is the safe direction.
|
|
16
|
+
*/
|
|
17
|
+
export declare function isRe2Safe(pattern: string): boolean;
|
|
18
|
+
/**
|
|
19
|
+
* Whether a replacement string is a plain literal.
|
|
20
|
+
*
|
|
21
|
+
* `$1` is a capture group in JavaScript but literal text in DuckDB, which uses `\1`: `'abc'` with
|
|
22
|
+
* `/(a)(b)/g` and `'$2$1'` gives `'bac'` in JavaScript and `'$2$1c'` in DuckDB. `$&`, `` $` ``,
|
|
23
|
+
* `$'` and `$$` also have meanings, so any replacement containing `$` keeps the UDF.
|
|
24
|
+
*/
|
|
25
|
+
export declare function isLiteralReplacement(replace: string): boolean;
|
|
26
|
+
/**
|
|
27
|
+
* Every character where RE2's `\s`, `\S` and `.` disagree with JavaScript's, as an RE2 class.
|
|
28
|
+
*
|
|
29
|
+
* A pattern that passes `isRe2Safe` can still match different characters in the two engines:
|
|
30
|
+
*
|
|
31
|
+
* - `\s` differs on 20 characters. JavaScript's `\s` includes vertical tab, NBSP, the whole `Zs`
|
|
32
|
+
* category, U+2028, U+2029 and the BOM; RE2's is exactly `[\t\n\f\r ]`. `\S` differs on the same
|
|
33
|
+
* 20.
|
|
34
|
+
* - `.` differs on 3. JavaScript's `.` excludes CR, U+2028 and U+2029 as well as LF; RE2's excludes
|
|
35
|
+
* only LF.
|
|
36
|
+
* - `\w`, `\d` and `\b` agree, because both engines are ASCII-only there.
|
|
37
|
+
*
|
|
38
|
+
* Astral input is a separate problem. A pattern that matches any character (`.`, `\S`, a negated
|
|
39
|
+
* class) consumes one UTF-16 code unit in JavaScript and one code point in RE2, so `/\S/g` makes
|
|
40
|
+
* two replacements per astral character in JavaScript and one in SQL. Translating the class cannot
|
|
41
|
+
* fix that, so `withClassGuard` combines this class with `HAS_ASTRAL`.
|
|
42
|
+
*
|
|
43
|
+
* The guard is applied to the value, not the pattern: a value containing none of these characters
|
|
44
|
+
* takes the native path, and one that does keeps the UDF.
|
|
45
|
+
*/
|
|
46
|
+
export declare const RE2_CLASS_DIVERGENCE: string;
|
|
47
|
+
/**
|
|
48
|
+
* Whether a pattern contains a class whose meaning differs between the engines.
|
|
49
|
+
*
|
|
50
|
+
* Only `.`, `\s`, `\S` and negated classes do; see `RE2_CLASS_DIVERGENCE`. A `.` inside a character
|
|
51
|
+
* class (`[.]`) is a literal dot, but detecting that requires parsing the pattern, so any `.`
|
|
52
|
+
* triggers the guard. Over-guarding costs a UDF call for unusual values; under-guarding returns a
|
|
53
|
+
* wrong answer.
|
|
54
|
+
*/
|
|
55
|
+
export declare function needsClassGuard(pattern: string): boolean;
|
|
56
|
+
/**
|
|
57
|
+
* Whether a pattern's escapes mean the same thing in both engines.
|
|
58
|
+
*
|
|
59
|
+
* `\p{...}` and `\P{...}` are Unicode property escapes in RE2, but in JavaScript only under the `u`
|
|
60
|
+
* flag. Without it `\p` is an identity escape, so `/\p{L}/` matches the literal text `p{L}`.
|
|
61
|
+
* `\u{...}` behaves the same way. Neither errors, so patterns using them keep the UDF.
|
|
62
|
+
*/
|
|
63
|
+
export declare function hasPortableEscapes(pattern: string): boolean;
|
|
64
|
+
/**
|
|
65
|
+
* Wraps a native regex expression in the per-value class guard, when the pattern needs it.
|
|
66
|
+
*
|
|
67
|
+
* Values the engine differences cannot affect, which is nearly all real text, use the native
|
|
68
|
+
* expression; the rest use the UDF.
|
|
69
|
+
*/
|
|
70
|
+
export declare function withClassGuard(pattern: string, value: string, native: string, udf: (v: string) => string): string;
|
|
71
|
+
/** A literal, escaped for use inside an RE2 pattern. */
|
|
72
|
+
export declare function re2Literal(value: string): string;
|
|
73
|
+
/**
|
|
74
|
+
* How many capture groups a pattern has, or null if JavaScript cannot compile it.
|
|
75
|
+
*
|
|
76
|
+
* `matchAll` collects every group of every match, while `regexp_extract_all` takes one group index,
|
|
77
|
+
* so more than one group has no native form. The count comes from compiling `pattern|`, which
|
|
78
|
+
* matches the empty string and so reports the group count whether or not the pattern itself
|
|
79
|
+
* matches.
|
|
80
|
+
*/
|
|
81
|
+
export declare function countGroups(pattern: string): number | null;
|
|
82
|
+
/**
|
|
83
|
+
* `JS_WHITESPACE` as an RE2 character class, generated from the code points.
|
|
84
|
+
*
|
|
85
|
+
* Several `core-utils` regexes use `\s`, and RE2's `\s` is narrower than JavaScript's (see
|
|
86
|
+
* `RE2_CLASS_DIVERGENCE`). When the pattern is one of ours, copied from `core-utils` rather than
|
|
87
|
+
* supplied by a caller, this class replaces `\s` so the pattern means what it means in JavaScript.
|
|
88
|
+
* Generating it from `JS_WHITESPACE` keeps the two in sync.
|
|
89
|
+
*/
|
|
90
|
+
export declare const JS_WHITESPACE_CLASS: string;
|
|
91
|
+
//# sourceMappingURL=sql-regex-utils.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"sql-regex-utils.d.ts","sourceRoot":"","sources":["../../../../src/function-configs/string/sql-regex-utils.ts"],"names":[],"mappings":"AAEA;;;;;;EAME;AACF;;;;;;;;EAQE;AACF,wBAAgB,SAAS,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAIlD;AACD;;;;;;EAME;AACF,wBAAgB,oBAAoB,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAE7D;AACD;;;;;;;;;;;;;;;;;;;EAmBE;AACF,eAAO,MAAM,oBAAoB,QAC8B,CAAC;AAChE;;;;;;;EAOE;AACF,wBAAgB,eAAe,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAExD;AACD;;;;;;EAME;AACF,wBAAgB,kBAAkB,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAE3D;AACD;;;;;EAKE;AACF,wBAAgB,cAAc,CAC1B,OAAO,EAAE,MAAM,EACf,KAAK,EAAE,MAAM,EACb,MAAM,EAAE,MAAM,EACd,GAAG,EAAE,CAAC,CAAC,EAAE,MAAM,KAAK,MAAM,GAC3B,MAAM,CAKR;AACD,wDAAwD;AACxD,wBAAgB,UAAU,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAEhD;AACD;;;;;;;EAOE;AACF,wBAAgB,WAAW,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAO1D;AACD;;;;;;;EAOE;AACF,eAAO,MAAM,mBAAmB,QAEhB,CAAC"}
|
|
@@ -0,0 +1,123 @@
|
|
|
1
|
+
import { HAS_ASTRAL, JS_WHITESPACE, sqlLiteral } from '../sql-helpers.js';
|
|
2
|
+
/**
|
|
3
|
+
* Where DuckDB's regex engine (RE2) and JavaScript's differ.
|
|
4
|
+
*
|
|
5
|
+
* Some differences stop RE2 from compiling a pattern, which fails loudly. Others compile in both
|
|
6
|
+
* engines but match different characters, which silently returns a different answer. The helpers
|
|
7
|
+
* here detect both.
|
|
8
|
+
*/
|
|
9
|
+
/**
|
|
10
|
+
* Whether a regex can be handed to RE2, DuckDB's engine.
|
|
11
|
+
*
|
|
12
|
+
* RE2 has no lookaround and no backreferences, and the query errors if a pattern uses them.
|
|
13
|
+
* Anything containing `(?=`, `(?!`, `(?<=`, `(?<!` or a backreference like `\1` keeps the UDF.
|
|
14
|
+
*
|
|
15
|
+
* Named groups `(?<name>...)` are excluded by the same `(?<` test. RE2 supports them as
|
|
16
|
+
* `(?P<name>...)`, so this is stricter than necessary, which is the safe direction.
|
|
17
|
+
*/
|
|
18
|
+
export function isRe2Safe(pattern) {
|
|
19
|
+
if (/\(\?[=!]/.test(pattern))
|
|
20
|
+
return false;
|
|
21
|
+
if (/\(\?</.test(pattern))
|
|
22
|
+
return false;
|
|
23
|
+
return !/\\[1-9]/.test(pattern);
|
|
24
|
+
}
|
|
25
|
+
/**
|
|
26
|
+
* Whether a replacement string is a plain literal.
|
|
27
|
+
*
|
|
28
|
+
* `$1` is a capture group in JavaScript but literal text in DuckDB, which uses `\1`: `'abc'` with
|
|
29
|
+
* `/(a)(b)/g` and `'$2$1'` gives `'bac'` in JavaScript and `'$2$1c'` in DuckDB. `$&`, `` $` ``,
|
|
30
|
+
* `$'` and `$$` also have meanings, so any replacement containing `$` keeps the UDF.
|
|
31
|
+
*/
|
|
32
|
+
export function isLiteralReplacement(replace) {
|
|
33
|
+
return !replace.includes('$');
|
|
34
|
+
}
|
|
35
|
+
/**
|
|
36
|
+
* Every character where RE2's `\s`, `\S` and `.` disagree with JavaScript's, as an RE2 class.
|
|
37
|
+
*
|
|
38
|
+
* A pattern that passes `isRe2Safe` can still match different characters in the two engines:
|
|
39
|
+
*
|
|
40
|
+
* - `\s` differs on 20 characters. JavaScript's `\s` includes vertical tab, NBSP, the whole `Zs`
|
|
41
|
+
* category, U+2028, U+2029 and the BOM; RE2's is exactly `[\t\n\f\r ]`. `\S` differs on the same
|
|
42
|
+
* 20.
|
|
43
|
+
* - `.` differs on 3. JavaScript's `.` excludes CR, U+2028 and U+2029 as well as LF; RE2's excludes
|
|
44
|
+
* only LF.
|
|
45
|
+
* - `\w`, `\d` and `\b` agree, because both engines are ASCII-only there.
|
|
46
|
+
*
|
|
47
|
+
* Astral input is a separate problem. A pattern that matches any character (`.`, `\S`, a negated
|
|
48
|
+
* class) consumes one UTF-16 code unit in JavaScript and one code point in RE2, so `/\S/g` makes
|
|
49
|
+
* two replacements per astral character in JavaScript and one in SQL. Translating the class cannot
|
|
50
|
+
* fix that, so `withClassGuard` combines this class with `HAS_ASTRAL`.
|
|
51
|
+
*
|
|
52
|
+
* The guard is applied to the value, not the pattern: a value containing none of these characters
|
|
53
|
+
* takes the native path, and one that does keeps the UDF.
|
|
54
|
+
*/
|
|
55
|
+
export const RE2_CLASS_DIVERGENCE = '[\\x{0b}\\x{0d}\\x{a0}\\x{1680}\\x{2000}-\\x{200a}'
|
|
56
|
+
+ '\\x{2028}\\x{2029}\\x{202f}\\x{205f}\\x{3000}\\x{feff}]';
|
|
57
|
+
/**
|
|
58
|
+
* Whether a pattern contains a class whose meaning differs between the engines.
|
|
59
|
+
*
|
|
60
|
+
* Only `.`, `\s`, `\S` and negated classes do; see `RE2_CLASS_DIVERGENCE`. A `.` inside a character
|
|
61
|
+
* class (`[.]`) is a literal dot, but detecting that requires parsing the pattern, so any `.`
|
|
62
|
+
* triggers the guard. Over-guarding costs a UDF call for unusual values; under-guarding returns a
|
|
63
|
+
* wrong answer.
|
|
64
|
+
*/
|
|
65
|
+
export function needsClassGuard(pattern) {
|
|
66
|
+
return /\\[sS]/.test(pattern) || pattern.includes('.') || pattern.includes('[^');
|
|
67
|
+
}
|
|
68
|
+
/**
|
|
69
|
+
* Whether a pattern's escapes mean the same thing in both engines.
|
|
70
|
+
*
|
|
71
|
+
* `\p{...}` and `\P{...}` are Unicode property escapes in RE2, but in JavaScript only under the `u`
|
|
72
|
+
* flag. Without it `\p` is an identity escape, so `/\p{L}/` matches the literal text `p{L}`.
|
|
73
|
+
* `\u{...}` behaves the same way. Neither errors, so patterns using them keep the UDF.
|
|
74
|
+
*/
|
|
75
|
+
export function hasPortableEscapes(pattern) {
|
|
76
|
+
return !/\\[pP]\{/.test(pattern) && !/\\u\{/.test(pattern);
|
|
77
|
+
}
|
|
78
|
+
/**
|
|
79
|
+
* Wraps a native regex expression in the per-value class guard, when the pattern needs it.
|
|
80
|
+
*
|
|
81
|
+
* Values the engine differences cannot affect, which is nearly all real text, use the native
|
|
82
|
+
* expression; the rest use the UDF.
|
|
83
|
+
*/
|
|
84
|
+
export function withClassGuard(pattern, value, native, udf) {
|
|
85
|
+
if (!needsClassGuard(pattern))
|
|
86
|
+
return native;
|
|
87
|
+
const guard = `${RE2_CLASS_DIVERGENCE.slice(0, -1)}${HAS_ASTRAL.slice(1)}`;
|
|
88
|
+
return `CASE WHEN regexp_matches(${value}, ${sqlLiteral(guard)})`
|
|
89
|
+
+ ` THEN ${udf(value)} ELSE ${native} END`;
|
|
90
|
+
}
|
|
91
|
+
/** A literal, escaped for use inside an RE2 pattern. */
|
|
92
|
+
export function re2Literal(value) {
|
|
93
|
+
return value.replace(/[.*+?^${}()|[\]\\]/g, '\\$&');
|
|
94
|
+
}
|
|
95
|
+
/**
|
|
96
|
+
* How many capture groups a pattern has, or null if JavaScript cannot compile it.
|
|
97
|
+
*
|
|
98
|
+
* `matchAll` collects every group of every match, while `regexp_extract_all` takes one group index,
|
|
99
|
+
* so more than one group has no native form. The count comes from compiling `pattern|`, which
|
|
100
|
+
* matches the empty string and so reports the group count whether or not the pattern itself
|
|
101
|
+
* matches.
|
|
102
|
+
*/
|
|
103
|
+
export function countGroups(pattern) {
|
|
104
|
+
try {
|
|
105
|
+
const probe = new RegExp(`${pattern}|`).exec('');
|
|
106
|
+
return probe ? probe.length - 1 : null;
|
|
107
|
+
}
|
|
108
|
+
catch {
|
|
109
|
+
return null;
|
|
110
|
+
}
|
|
111
|
+
}
|
|
112
|
+
/**
|
|
113
|
+
* `JS_WHITESPACE` as an RE2 character class, generated from the code points.
|
|
114
|
+
*
|
|
115
|
+
* Several `core-utils` regexes use `\s`, and RE2's `\s` is narrower than JavaScript's (see
|
|
116
|
+
* `RE2_CLASS_DIVERGENCE`). When the pattern is one of ours, copied from `core-utils` rather than
|
|
117
|
+
* supplied by a caller, this class replaces `\s` so the pattern means what it means in JavaScript.
|
|
118
|
+
* Generating it from `JS_WHITESPACE` keeps the two in sync.
|
|
119
|
+
*/
|
|
120
|
+
export const JS_WHITESPACE_CLASS = `[${[...JS_WHITESPACE]
|
|
121
|
+
.map((char) => `\\x{${char.codePointAt(0).toString(16).padStart(2, '0')}}`)
|
|
122
|
+
.join('')}]`;
|
|
123
|
+
//# sourceMappingURL=sql-regex-utils.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"sql-regex-utils.js","sourceRoot":"","sources":["../../../../src/function-configs/string/sql-regex-utils.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,aAAa,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAE1E;;;;;;EAME;AACF;;;;;;;;EAQE;AACF,MAAM,UAAU,SAAS,CAAC,OAAe;IACrC,IAAI,UAAU,CAAC,IAAI,CAAC,OAAO,CAAC;QAAE,OAAO,KAAK,CAAC;IAC3C,IAAI,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC;QAAE,OAAO,KAAK,CAAC;IACxC,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;AACpC,CAAC;AACD;;;;;;EAME;AACF,MAAM,UAAU,oBAAoB,CAAC,OAAe;IAChD,OAAO,CAAC,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC;AAClC,CAAC;AACD;;;;;;;;;;;;;;;;;;;EAmBE;AACF,MAAM,CAAC,MAAM,oBAAoB,GAAG,oDAAoD;MAClF,yDAAyD,CAAC;AAChE;;;;;;;EAOE;AACF,MAAM,UAAU,eAAe,CAAC,OAAe;IAC3C,OAAO,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;AACrF,CAAC;AACD;;;;;;EAME;AACF,MAAM,UAAU,kBAAkB,CAAC,OAAe;IAC9C,OAAO,CAAC,UAAU,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;AAC/D,CAAC;AACD;;;;;EAKE;AACF,MAAM,UAAU,cAAc,CAC1B,OAAe,EACf,KAAa,EACb,MAAc,EACd,GAA0B;IAE1B,IAAI,CAAC,eAAe,CAAC,OAAO,CAAC;QAAE,OAAO,MAAM,CAAC;IAC7C,MAAM,KAAK,GAAG,GAAG,oBAAoB,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,UAAU,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC;IAC3E,OAAO,4BAA4B,KAAK,KAAK,UAAU,CAAC,KAAK,CAAC,GAAG;UAC3D,SAAS,GAAG,CAAC,KAAK,CAAC,SAAS,MAAM,MAAM,CAAC;AACnD,CAAC;AACD,wDAAwD;AACxD,MAAM,UAAU,UAAU,CAAC,KAAa;IACpC,OAAO,KAAK,CAAC,OAAO,CAAC,qBAAqB,EAAE,MAAM,CAAC,CAAC;AACxD,CAAC;AACD;;;;;;;EAOE;AACF,MAAM,UAAU,WAAW,CAAC,OAAe;IACvC,IAAI,CAAC;QACD,MAAM,KAAK,GAAG,IAAI,MAAM,CAAC,GAAG,OAAO,GAAG,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QACjD,OAAO,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;IAC3C,CAAC;IAAC,MAAM,CAAC;QACL,OAAO,IAAI,CAAC;IAChB,CAAC;AACL,CAAC;AACD;;;;;;;EAOE;AACF,MAAM,CAAC,MAAM,mBAAmB,GAAG,IAAI,CAAC,GAAG,aAAa,CAAC;KACpD,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,OAAO,IAAI,CAAC,WAAW,CAAC,CAAC,CAAE,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,GAAG,CAAC;KAC3E,IAAI,CAAC,EAAE,CAAC,GAAG,CAAC"}
|
|
@@ -0,0 +1,191 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Helpers shared by the SQL expressions on the string function configs.
|
|
3
|
+
*/
|
|
4
|
+
/**
|
|
5
|
+
* `validator.isAlpha`'s `en-US` alphabet, as an RE2 pattern.
|
|
6
|
+
*
|
|
7
|
+
* Other locales use different letter sets, and several cannot be written as a simple class, so the
|
|
8
|
+
* functions using this handle only the default locale.
|
|
9
|
+
*/
|
|
10
|
+
export declare const ALPHA_LOCALES = "^[A-Za-z]+$";
|
|
11
|
+
/** `validator.isAlphanumeric`'s `en-US` set. */
|
|
12
|
+
export declare const ALPHANUMERIC_LOCALES = "^[0-9A-Za-z]+$";
|
|
13
|
+
/** True when no locale was given, so `validator`'s `en-US` default applies. */
|
|
14
|
+
export declare function defaultLocale(locale: unknown): boolean;
|
|
15
|
+
/**
|
|
16
|
+
* `encodeURIComponent`, built from `url_encode` plus the five characters it over-escapes.
|
|
17
|
+
*
|
|
18
|
+
* `url_encode` percent-escapes `!`, `'`, `(`, `)` and `*`, which `encodeURIComponent` leaves alone.
|
|
19
|
+
* Unescaping them afterwards is safe: a literal `%` in the input is already `%25` by then, so a
|
|
20
|
+
* `%21` in the output can only come from a real `!`.
|
|
21
|
+
*/
|
|
22
|
+
export declare function encodeURIComponentSql(value: string): string;
|
|
23
|
+
/**
|
|
24
|
+
* `validator.isHash`'s length table, copied from its source. The check is only `^[a-fA-F0-9]{N}$`.
|
|
25
|
+
*/
|
|
26
|
+
export declare const HASH_LENGTHS: Record<string, number>;
|
|
27
|
+
export declare function uuidPattern(version: unknown): string | null;
|
|
28
|
+
/**
|
|
29
|
+
* lodash's test for which word splitter to use. The case converters run in SQL only when it does
|
|
30
|
+
* not match.
|
|
31
|
+
*
|
|
32
|
+
* `_.camelCase` and the other converters run `words(deburr(string).replace(/['’]/g, ''))`, and
|
|
33
|
+
* `words` picks one of two algorithms:
|
|
34
|
+
*
|
|
35
|
+
* ```js
|
|
36
|
+
* var reHasUnicodeWord = /[a-z][A-Z]|[A-Z]{2}[a-z]|[0-9][a-zA-Z]|[a-zA-Z][0-9]|[^a-zA-Z0-9 ]/;
|
|
37
|
+
* var reAsciiWord = /[^\x00-\x2f\x3a-\x40\x5b-\x60\x7b-\x7f]+/g;
|
|
38
|
+
* ```
|
|
39
|
+
*
|
|
40
|
+
* When `reHasUnicodeWord` does not match, the result is `string.match(reAsciiWord)`, which splits
|
|
41
|
+
* on ASCII punctuation only, and SQL reproduces that exactly. The other algorithm handles case
|
|
42
|
+
* transitions, digit/letter boundaries, acronyms like `XMLHttpRequest` and combining marks, and
|
|
43
|
+
* keeps the UDF.
|
|
44
|
+
*
|
|
45
|
+
* `deburr` does nothing to input this guard admits, which contains only `[a-zA-Z0-9 ]`.
|
|
46
|
+
*/
|
|
47
|
+
export declare const HAS_UNICODE_WORD = "[a-z][A-Z]|[A-Z]{2}[a-z]|[0-9][a-zA-Z]|[a-zA-Z][0-9]|[^a-zA-Z0-9 ]";
|
|
48
|
+
/**
|
|
49
|
+
* A case conversion over the ASCII word list.
|
|
50
|
+
*
|
|
51
|
+
* `join` is the separator between words; `first` and `rest` say how each word is cased. An empty
|
|
52
|
+
* word list gives `''`, which is what `_.camelCase('')` and `_.camelCase('---')` return.
|
|
53
|
+
*/
|
|
54
|
+
export declare function caseConvertSql(value: string, options: {
|
|
55
|
+
join: string;
|
|
56
|
+
first: (word: string) => string;
|
|
57
|
+
rest: (word: string) => string;
|
|
58
|
+
}): string;
|
|
59
|
+
/** `word[0].toUpperCase() + word.slice(1).toLowerCase()`, which is lodash's `capitalize`. */
|
|
60
|
+
export declare function capitalizeSql(word: string): string;
|
|
61
|
+
/**
|
|
62
|
+
* `_.upperFirst`: the first character uppercased and the rest left as is.
|
|
63
|
+
*
|
|
64
|
+
* This is not `capitalize`, which also lowercases the rest. `_.startCase` uses this one, which is
|
|
65
|
+
* why `startCase('HELLO WORLD')` is `'HELLO WORLD'` and not `'Hello World'`.
|
|
66
|
+
*/
|
|
67
|
+
export declare function upperFirstSql(word: string): string;
|
|
68
|
+
/**
|
|
69
|
+
* Base64 validation per RFC 4648 with padding, `validator.isBase64`'s default.
|
|
70
|
+
*
|
|
71
|
+
* ```js
|
|
72
|
+
* var base64WithPadding = /^[A-Za-z0-9+/]+={0,2}$/;
|
|
73
|
+
* if (str === '') return true;
|
|
74
|
+
* if (options.padding && str.length % 4 !== 0) return false;
|
|
75
|
+
* ```
|
|
76
|
+
*
|
|
77
|
+
* This intentionally does not reproduce `core-utils`' `isBase64`, which also requires a UTF-8 round
|
|
78
|
+
* trip to be lossless. `toString('utf8')` replaces every invalid byte with U+FFFD, so that check
|
|
79
|
+
* accepts only base64 of UTF-8 text and rejects most base64-encoded binary.
|
|
80
|
+
*/
|
|
81
|
+
export declare function isBase64Sql(value: string): string;
|
|
82
|
+
/**
|
|
83
|
+
* `validator.isFQDN` with its default options, for ASCII input.
|
|
84
|
+
*
|
|
85
|
+
* The function has no TLD list, which is what makes it expressible in SQL. With the defaults
|
|
86
|
+
* (`require_tld`, no underscores, no trailing dot, no wildcard, no numeric TLD, max length
|
|
87
|
+
* enforced) the algorithm is:
|
|
88
|
+
*
|
|
89
|
+
* 1. at least two dot-separated parts;
|
|
90
|
+
* 2. the last part matches `/^([a-z…]{2,}|xn[a-z0-9-]{2,})$/i`, contains no whitespace and is not
|
|
91
|
+
* all digits;
|
|
92
|
+
* 3. every part is 1-63 characters, matches `/^[a-z_0-9-]+$/i`, has no full-width character, and
|
|
93
|
+
* neither starts nor ends with `-`; and with `allow_underscores` false, contains no `_`.
|
|
94
|
+
*
|
|
95
|
+
* Non-ASCII input keeps the UDF. `validator`'s character classes run to `\u{ffff}` and include a
|
|
96
|
+
* full-width exclusion, which is not worth reproducing.
|
|
97
|
+
*/
|
|
98
|
+
export declare function isFQDNSql(value: string, udf: (v: string) => string): string;
|
|
99
|
+
/**
|
|
100
|
+
* A hash or byte encoding of a string in SQL, shared by `encode` and `createID`.
|
|
101
|
+
*
|
|
102
|
+
* Returns null for a combination DuckDB cannot express, which is what the callers' `applies` check.
|
|
103
|
+
* The results match `node:crypto` and `Buffer` byte for byte, including for empty, non-ASCII,
|
|
104
|
+
* astral and combining-mark input:
|
|
105
|
+
*
|
|
106
|
+
* - `md5`, `sha1` and `sha256` return a lowercase hex digest, matching
|
|
107
|
+
* `createHash(...).digest('hex')`. There is no `sha512` or `sha384`.
|
|
108
|
+
* - A base64 digest is `to_base64(unhex(<digest>))`.
|
|
109
|
+
* - `Buffer.from(x).toString('hex')` is `lower(hex(encode(x)))`. `hex()` is uppercase, and
|
|
110
|
+
* `encode()` is used because a VARCHAR-to-BLOB cast rejects non-ASCII.
|
|
111
|
+
* - `Buffer.from(x).toString('base64')` is `to_base64(encode(x))`.
|
|
112
|
+
*/
|
|
113
|
+
export declare const SQL_HASHES: readonly string[];
|
|
114
|
+
export declare function hashSql(algo: string, digest: string, value: string): string | null;
|
|
115
|
+
/** Whether `hashSql` has an expression for this pair, so an `applies` need not build it. */
|
|
116
|
+
export declare function hasHashSql(algo: unknown, digest: unknown): boolean;
|
|
117
|
+
/**
|
|
118
|
+
* Whether a value is a single code point (not a single UTF-16 code unit).
|
|
119
|
+
*
|
|
120
|
+
* `extract`'s marker mode compares `char === start` while iterating code points, so a
|
|
121
|
+
* multi-character marker never matches and an astral one matches as a unit.
|
|
122
|
+
*/
|
|
123
|
+
export declare function isOneCodePoint(value: unknown): boolean;
|
|
124
|
+
/**
|
|
125
|
+
* `extract`'s marker mode: the text between the first `start` and the first `end` after it.
|
|
126
|
+
*
|
|
127
|
+
* This mirrors `_subSlice`, which finds `start` and then collects characters until `end`. A second
|
|
128
|
+
* `start` before the `end` is content (`'<a<b>'` extracts `'a<b'`), an unterminated run yields
|
|
129
|
+
* null, and `'a|b|c'` with `|` for both markers extracts `'b'`.
|
|
130
|
+
*/
|
|
131
|
+
export declare function extractMarkerSql(value: string, start: string, end: string): string;
|
|
132
|
+
/**
|
|
133
|
+
* `extract`'s marker mode with `global`: every extraction, as a list.
|
|
134
|
+
*
|
|
135
|
+
* The repeated scan is a non-greedy `(?s).*?` between the two escaped markers. `(?s)` is required
|
|
136
|
+
* because the scan collects newlines and RE2's `.` does not match one without it. For example,
|
|
137
|
+
* `'a|b|c|d'` gives `['b']` and `'<>'` gives `['']`.
|
|
138
|
+
*/
|
|
139
|
+
export declare function extractMarkerAllSql(value: string, start: string, end: string): string;
|
|
140
|
+
/**
|
|
141
|
+
* `extract`'s regex mode, built from what `matchAll` does.
|
|
142
|
+
*
|
|
143
|
+
* `matchAll` forces the `g` flag and, per match, collects every capture group if the pattern has
|
|
144
|
+
* any, or the whole match otherwise. `extract` then takes the first element, or the whole list
|
|
145
|
+
* under `global`. So the SQL is `regexp_extract` at group 0 or 1, and `regexp_extract_all` for the
|
|
146
|
+
* list.
|
|
147
|
+
*
|
|
148
|
+
* The no-match case needs care. `matchAll` returns null when nothing matched, and its loop also
|
|
149
|
+
* stops on an empty match, so a pattern whose first match is empty gives null, not `''`.
|
|
150
|
+
* `regexp_extract` returns `''` for both, which `nullif` maps to null. When extracting a group, the
|
|
151
|
+
* whole match is tested first, because a group can capture the empty string inside a non-empty
|
|
152
|
+
* match.
|
|
153
|
+
*/
|
|
154
|
+
export declare function extractRegexSql(value: string, pattern: string, group: number): string;
|
|
155
|
+
/** `extract`'s regex mode with `global`: every match, or every first capture group. */
|
|
156
|
+
export declare function extractRegexAllSql(value: string, pattern: string, group: number): string;
|
|
157
|
+
/**
|
|
158
|
+
* A list expression that returns NULL rather than `[]` when nothing matched.
|
|
159
|
+
*
|
|
160
|
+
* `extract` under `global` returns null for no match in both modes, never an empty list, while
|
|
161
|
+
* `regexp_extract_all` returns `[]`.
|
|
162
|
+
*/
|
|
163
|
+
export declare function emptyToNull(list: string): string;
|
|
164
|
+
/**
|
|
165
|
+
* `isPhoneNumberLike`: strip every non-digit and check that 7 to 20 digits remain. It does not use
|
|
166
|
+
* libphonenumber.
|
|
167
|
+
*
|
|
168
|
+
* ```
|
|
169
|
+
* const testValue = toString(input).trim().replace(/\D/g, '');
|
|
170
|
+
* return inNumberRange(testValue.length, { min: 7, max: 20, inclusive: true });
|
|
171
|
+
* ```
|
|
172
|
+
*
|
|
173
|
+
* `trim()` cannot change the answer because whitespace is not a digit. `\D` is `[^0-9]` in both
|
|
174
|
+
* engines, and the remaining digits are ASCII, so `length()` counting characters agrees with
|
|
175
|
+
* JavaScript counting code units.
|
|
176
|
+
*/
|
|
177
|
+
export declare function phoneNumberLikeSql(value: string): string;
|
|
178
|
+
/**
|
|
179
|
+
* Shannon entropy without an aggregate: split into characters, count each distinct one, and sum the
|
|
180
|
+
* terms.
|
|
181
|
+
*
|
|
182
|
+
* `list_filter` over the distinct characters does the per-character counting. It is quadratic in
|
|
183
|
+
* the number of distinct characters, which for text is bounded by the alphabet rather than the
|
|
184
|
+
* string length. The result is exact.
|
|
185
|
+
*
|
|
186
|
+
* The JavaScript builds its frequency table over code points (`for (const char of input)`) but
|
|
187
|
+
* divides by `input.length`, which counts UTF-16 code units. The two differ only for astral input,
|
|
188
|
+
* so astral input keeps the UDF.
|
|
189
|
+
*/
|
|
190
|
+
export declare function shannonEntropySql(value: string): string;
|
|
191
|
+
//# sourceMappingURL=sql-utils.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"sql-utils.d.ts","sourceRoot":"","sources":["../../../../src/function-configs/string/sql-utils.ts"],"names":[],"mappings":"AAGA;;EAEE;AAEF;;;;;EAKE;AACF,eAAO,MAAM,aAAa,gBAAgB,CAAC;AAE3C,gDAAgD;AAChD,eAAO,MAAM,oBAAoB,mBAAmB,CAAC;AAErD,+EAA+E;AAC/E,wBAAgB,aAAa,CAAC,MAAM,EAAE,OAAO,GAAG,OAAO,CAEtD;AAED;;;;;;EAME;AACF,wBAAgB,qBAAqB,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAQ3D;AAED;;EAEE;AACF,eAAO,MAAM,YAAY,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAc/C,CAAC;AAYF,wBAAgB,WAAW,CAAC,OAAO,EAAE,OAAO,GAAG,MAAM,GAAG,IAAI,CAkB3D;AAED;;;;;;;;;;;;;;;;;;EAkBE;AACF,eAAO,MAAM,gBAAgB,uEAAuE,CAAC;AAOrG;;;;;EAKE;AACF,wBAAgB,cAAc,CAC1B,KAAK,EAAE,MAAM,EACb,OAAO,EAAE;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,MAAM,CAAC;IAAC,IAAI,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,MAAM,CAAA;CAAE,GAC3F,MAAM,CAMR;AAED,6FAA6F;AAC7F,wBAAgB,aAAa,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAElD;AAED;;;;;EAKE;AACF,wBAAgB,aAAa,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAElD;AAED;;;;;;;;;;;;EAYE;AACF,wBAAgB,WAAW,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAGjD;AAED;;;;;;;;;;;;;;;EAeE;AACF,wBAAgB,SAAS,CAAC,KAAK,EAAE,MAAM,EAAE,GAAG,EAAE,CAAC,CAAC,EAAE,MAAM,KAAK,MAAM,GAAG,MAAM,CAW3E;AAED;;;;;;;;;;;;;EAaE;AACF,eAAO,MAAM,UAAU,EAAE,SAAS,MAAM,EAA8B,CAAC;AAEvE,wBAAgB,OAAO,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAOlF;AAED,4FAA4F;AAC5F,wBAAgB,UAAU,CAAC,IAAI,EAAE,OAAO,EAAE,MAAM,EAAE,OAAO,GAAG,OAAO,CAIlE;AAED;;;;;EAKE;AACF,wBAAgB,cAAc,CAAC,KAAK,EAAE,OAAO,GAAG,OAAO,CAEtD;AAED;;;;;;EAME;AACF,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,GAAG,MAAM,CAMlF;AAED;;;;;;EAME;AACF,wBAAgB,mBAAmB,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,GAAG,MAAM,CAGrF;AAED;;;;;;;;;;;;;EAaE;AACF,wBAAgB,eAAe,CAC3B,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAC9C,MAAM,CAMR;AAED,uFAAuF;AACvF,wBAAgB,kBAAkB,CAC9B,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAC9C,MAAM,CAER;AAED;;;;;EAKE;AACF,wBAAgB,WAAW,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAEhD;AAED;;;;;;;;;;;;EAYE;AACF,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAExD;AAED;;;;;;;;;;;EAWE;AACF,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAYvD"}
|