@react-querybuilder/datetime 8.20.2 → 8.21.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (118) hide show
  1. package/dist/cjs/{getDatetimeRuleProcessorTanStackDB-cmGqMT0Q.js → getDatetimeRuleProcessorTanStackDB-CDEB9coD.js} +22 -19
  2. package/dist/cjs/getDatetimeRuleProcessorTanStackDB-CDEB9coD.js.map +1 -0
  3. package/dist/cjs/getDatetimeRuleProcessorTanStackDB-X6tZv7yV.js +2 -0
  4. package/dist/cjs/getDatetimeRuleProcessorTanStackDB-X6tZv7yV.js.map +1 -0
  5. package/dist/cjs/react-querybuilder_datetime.cjs.development.d.ts +122 -138
  6. package/dist/cjs/react-querybuilder_datetime.cjs.development.date-fns.d.ts +49 -50
  7. package/dist/cjs/react-querybuilder_datetime.cjs.development.date-fns.js +2 -2
  8. package/dist/cjs/react-querybuilder_datetime.cjs.development.dayjs.d.ts +49 -50
  9. package/dist/cjs/react-querybuilder_datetime.cjs.development.dayjs.js +2 -2
  10. package/dist/cjs/react-querybuilder_datetime.cjs.development.js +3 -2
  11. package/dist/cjs/react-querybuilder_datetime.cjs.development.js.map +1 -1
  12. package/dist/cjs/react-querybuilder_datetime.cjs.development.jsdate.d.ts +52 -53
  13. package/dist/cjs/react-querybuilder_datetime.cjs.development.jsdate.js +2 -2
  14. package/dist/cjs/react-querybuilder_datetime.cjs.development.luxon.d.ts +49 -50
  15. package/dist/cjs/react-querybuilder_datetime.cjs.development.luxon.js +2 -2
  16. package/dist/cjs/react-querybuilder_datetime.cjs.development.ui.d.ts +100 -114
  17. package/dist/cjs/react-querybuilder_datetime.cjs.development.ui.js +5 -3
  18. package/dist/cjs/react-querybuilder_datetime.cjs.development.ui.js.map +1 -1
  19. package/dist/cjs/react-querybuilder_datetime.cjs.production.d.ts +122 -138
  20. package/dist/cjs/react-querybuilder_datetime.cjs.production.date-fns.d.ts +49 -50
  21. package/dist/cjs/react-querybuilder_datetime.cjs.production.date-fns.js +1 -1
  22. package/dist/cjs/react-querybuilder_datetime.cjs.production.dayjs.d.ts +49 -50
  23. package/dist/cjs/react-querybuilder_datetime.cjs.production.dayjs.js +1 -1
  24. package/dist/cjs/react-querybuilder_datetime.cjs.production.js +1 -1
  25. package/dist/cjs/react-querybuilder_datetime.cjs.production.js.map +1 -1
  26. package/dist/cjs/react-querybuilder_datetime.cjs.production.jsdate.d.ts +52 -53
  27. package/dist/cjs/react-querybuilder_datetime.cjs.production.jsdate.js +1 -1
  28. package/dist/cjs/react-querybuilder_datetime.cjs.production.luxon.d.ts +49 -50
  29. package/dist/cjs/react-querybuilder_datetime.cjs.production.luxon.js +1 -1
  30. package/dist/cjs/react-querybuilder_datetime.cjs.production.ui.d.ts +100 -114
  31. package/dist/cjs/react-querybuilder_datetime.cjs.production.ui.js +1 -1
  32. package/dist/cjs/react-querybuilder_datetime.cjs.production.ui.js.map +1 -1
  33. package/dist/cjs/{rqbDateTimeLibraryAPI.jsdate-ioz2B1zh.js → rqbDateTimeLibraryAPI.jsdate-BuSiVdk7.js} +2 -2
  34. package/dist/cjs/{rqbDateTimeLibraryAPI.jsdate-ioz2B1zh.js.map → rqbDateTimeLibraryAPI.jsdate-BuSiVdk7.js.map} +1 -1
  35. package/dist/cjs/{rqbDateTimeLibraryAPI.jsdate-BPEcMhhr.js → rqbDateTimeLibraryAPI.jsdate-C3jJb6ip.js} +2 -2
  36. package/dist/cjs/{rqbDateTimeLibraryAPI.jsdate-BPEcMhhr.js.map → rqbDateTimeLibraryAPI.jsdate-C3jJb6ip.js.map} +1 -1
  37. package/dist/cjs/{types-Di8kFIXV.d.ts → types-BKA1aoY6.d.ts} +82 -73
  38. package/dist/cjs/utils-DdBYGWHZ.js +2 -0
  39. package/dist/cjs/utils-DdBYGWHZ.js.map +1 -0
  40. package/dist/cjs/{utils-DUePrC--.js → utils-_X97pUtk.js} +13 -1
  41. package/dist/cjs/utils-_X97pUtk.js.map +1 -0
  42. package/dist/getDatetimeRuleProcessorTanStackDB-6K1DsuEV.mjs +2 -0
  43. package/dist/getDatetimeRuleProcessorTanStackDB-6K1DsuEV.mjs.map +1 -0
  44. package/dist/{getDatetimeRuleProcessorTanStackDB-BDFJlfJh.js → getDatetimeRuleProcessorTanStackDB-BrSD2e9G.js} +22 -19
  45. package/dist/getDatetimeRuleProcessorTanStackDB-BrSD2e9G.js.map +1 -0
  46. package/dist/{getDatetimeRuleProcessorTanStackDB-B93XaPdB.mjs → getDatetimeRuleProcessorTanStackDB-DR8aYrUa.mjs} +22 -19
  47. package/dist/getDatetimeRuleProcessorTanStackDB-DR8aYrUa.mjs.map +1 -0
  48. package/dist/{objectSpread2-73AKOozq.js → objectSpread2-MqoZ2hSz.js} +13 -7
  49. package/dist/objectSpread2-MqoZ2hSz.js.map +1 -0
  50. package/dist/react-querybuilder_datetime.d.mts +122 -138
  51. package/dist/react-querybuilder_datetime.date-fns.d.mts +49 -50
  52. package/dist/react-querybuilder_datetime.date-fns.mjs +2 -2
  53. package/dist/react-querybuilder_datetime.dayjs.d.mts +49 -50
  54. package/dist/react-querybuilder_datetime.dayjs.mjs +2 -2
  55. package/dist/react-querybuilder_datetime.jsdate.d.mts +52 -53
  56. package/dist/react-querybuilder_datetime.jsdate.mjs +2 -2
  57. package/dist/react-querybuilder_datetime.legacy-esm.d.ts +122 -138
  58. package/dist/react-querybuilder_datetime.legacy-esm.date-fns.d.ts +49 -50
  59. package/dist/react-querybuilder_datetime.legacy-esm.date-fns.js +2 -2
  60. package/dist/react-querybuilder_datetime.legacy-esm.dayjs.d.ts +49 -50
  61. package/dist/react-querybuilder_datetime.legacy-esm.dayjs.js +2 -2
  62. package/dist/react-querybuilder_datetime.legacy-esm.js +3 -2
  63. package/dist/react-querybuilder_datetime.legacy-esm.js.map +1 -1
  64. package/dist/react-querybuilder_datetime.legacy-esm.jsdate.d.ts +52 -53
  65. package/dist/react-querybuilder_datetime.legacy-esm.jsdate.js +2 -2
  66. package/dist/react-querybuilder_datetime.legacy-esm.luxon.d.ts +49 -50
  67. package/dist/react-querybuilder_datetime.legacy-esm.luxon.js +2 -2
  68. package/dist/react-querybuilder_datetime.legacy-esm.ui.d.ts +100 -114
  69. package/dist/react-querybuilder_datetime.legacy-esm.ui.js +7 -5
  70. package/dist/react-querybuilder_datetime.legacy-esm.ui.js.map +1 -1
  71. package/dist/react-querybuilder_datetime.luxon.d.mts +49 -50
  72. package/dist/react-querybuilder_datetime.luxon.mjs +2 -2
  73. package/dist/react-querybuilder_datetime.mjs +3 -2
  74. package/dist/react-querybuilder_datetime.mjs.map +1 -1
  75. package/dist/react-querybuilder_datetime.production.d.mts +122 -138
  76. package/dist/react-querybuilder_datetime.production.date-fns.d.mts +49 -50
  77. package/dist/react-querybuilder_datetime.production.date-fns.mjs +1 -1
  78. package/dist/react-querybuilder_datetime.production.dayjs.d.mts +49 -50
  79. package/dist/react-querybuilder_datetime.production.dayjs.mjs +1 -1
  80. package/dist/react-querybuilder_datetime.production.jsdate.d.mts +52 -53
  81. package/dist/react-querybuilder_datetime.production.jsdate.mjs +1 -1
  82. package/dist/react-querybuilder_datetime.production.luxon.d.mts +49 -50
  83. package/dist/react-querybuilder_datetime.production.luxon.mjs +1 -1
  84. package/dist/react-querybuilder_datetime.production.mjs +1 -1
  85. package/dist/react-querybuilder_datetime.production.mjs.map +1 -1
  86. package/dist/react-querybuilder_datetime.production.ui.d.mts +100 -114
  87. package/dist/react-querybuilder_datetime.production.ui.mjs +1 -1
  88. package/dist/react-querybuilder_datetime.production.ui.mjs.map +1 -1
  89. package/dist/react-querybuilder_datetime.ui.d.mts +100 -114
  90. package/dist/react-querybuilder_datetime.ui.mjs +5 -3
  91. package/dist/react-querybuilder_datetime.ui.mjs.map +1 -1
  92. package/dist/{rqbDateTimeLibraryAPI.jsdate-CpGoQAje.js → rqbDateTimeLibraryAPI.jsdate-COp9qTw_.js} +2 -2
  93. package/dist/{rqbDateTimeLibraryAPI.jsdate-CpGoQAje.js.map → rqbDateTimeLibraryAPI.jsdate-COp9qTw_.js.map} +1 -1
  94. package/dist/{rqbDateTimeLibraryAPI.jsdate-CDOtydFq.mjs → rqbDateTimeLibraryAPI.jsdate-DxBmxW2C.mjs} +2 -2
  95. package/dist/{rqbDateTimeLibraryAPI.jsdate-CDOtydFq.mjs.map → rqbDateTimeLibraryAPI.jsdate-DxBmxW2C.mjs.map} +1 -1
  96. package/dist/{rqbDateTimeLibraryAPI.jsdate-D66yJ1hK.mjs → rqbDateTimeLibraryAPI.jsdate-WHnzblie.mjs} +2 -2
  97. package/dist/{rqbDateTimeLibraryAPI.jsdate-D66yJ1hK.mjs.map → rqbDateTimeLibraryAPI.jsdate-WHnzblie.mjs.map} +1 -1
  98. package/dist/{types-Di8kFIXV.d.mts → types-BKA1aoY6.d.mts} +82 -73
  99. package/dist/{types-Di8kFIXV.d.ts → types-BKA1aoY6.d.ts} +82 -73
  100. package/dist/{utils-BC2SALFm.mjs → utils-BAgUBdyf.mjs} +8 -2
  101. package/dist/utils-BAgUBdyf.mjs.map +1 -0
  102. package/dist/utils-DA8aluCt.mjs +2 -0
  103. package/dist/utils-DA8aluCt.mjs.map +1 -0
  104. package/package.json +16 -16
  105. package/dist/cjs/getDatetimeRuleProcessorTanStackDB-BVNfYaIj.js +0 -2
  106. package/dist/cjs/getDatetimeRuleProcessorTanStackDB-BVNfYaIj.js.map +0 -1
  107. package/dist/cjs/getDatetimeRuleProcessorTanStackDB-cmGqMT0Q.js.map +0 -1
  108. package/dist/cjs/utils-DUePrC--.js.map +0 -1
  109. package/dist/cjs/utils-jkW5R1AA.js +0 -2
  110. package/dist/cjs/utils-jkW5R1AA.js.map +0 -1
  111. package/dist/getDatetimeRuleProcessorTanStackDB-B93XaPdB.mjs.map +0 -1
  112. package/dist/getDatetimeRuleProcessorTanStackDB-BDFJlfJh.js.map +0 -1
  113. package/dist/getDatetimeRuleProcessorTanStackDB-Czg9Fbb8.mjs +0 -2
  114. package/dist/getDatetimeRuleProcessorTanStackDB-Czg9Fbb8.mjs.map +0 -1
  115. package/dist/objectSpread2-73AKOozq.js.map +0 -1
  116. package/dist/utils-BC2SALFm.mjs.map +0 -1
  117. package/dist/utils-VKS8YY2D.mjs +0 -2
  118. package/dist/utils-VKS8YY2D.mjs.map +0 -1
@@ -0,0 +1 @@
1
+ {"version":3,"file":"getDatetimeRuleProcessorTanStackDB-X6tZv7yV.js","names":["resolveRelativeDateTime","shouldNegate","isNonDateValueSource","processIsDateField","materializeRelativeValues","resolveDatetimeOperator","shouldNegate","isNonDateValueSource","processIsDateField","resolveDatetimeOperator","materializeRelativeValues","isISOStringDateOnly","isNonDateValueSource","processIsDateField","materializeForExport","isNonDateValueSource","processIsDateField","materializeForExport","isNonDateValueSource","processIsDateField","materializeForExport","shouldNegate","resolveDatetimeOperator","processIsDateField","materializeRelativeValues","isNonDateValueSource","processIsDateField","materializeForExport","resolveDatetimeOperator","isNonDateValueSource","processIsDateField","materializeRelativeValues","mongoOperators","isISOStringDateOnly","resolveDatetimeOperator","defaultOperatorProcessorNL","processIsDateField","isNonDateValueSource","materializeRelativeValues","isNonDateValueSource","processIsDateField","materializeForExport","isNonDateValueSource","processIsDateField","materializeForExport","isNonDateValueSource","processIsDateField","materializeForExport","isNonDateValueSource","processIsDateField","resolveDatetimeOperator","materializeRelativeValues","isISOStringDateOnly","isNonDateValueSource","processIsDateField","materializeForExport","isISOStringDateOnly","resolveDatetimeOperator","isNonDateValueSource","processIsDateField","materializeRelativeValues","isRelativeDateTimeValue","isNonDateValueSource","processIsDateField","materializeForExport"],"sources":["../../src/getDatetimeJsonLogicOperations.ts","../../src/getDatetimeRuleProcessorCEL.ts","../../src/getDatetimeRuleProcessorCypher.ts","../../src/getDatetimeRuleProcessorDrizzle.ts","../../src/getDatetimeRuleProcessorElasticSearch.ts","../../src/getDatetimeRuleProcessorGremlin.ts","../../src/getDatetimeRuleProcessorJSONata.ts","../../src/getDatetimeRuleProcessorLDAP.ts","../../src/getDatetimeRuleProcessorMongoDBQuery.ts","../../src/getDatetimeRuleProcessorMongoDB.ts","../../src/getDatetimeRuleProcessorNL.ts","../../src/getDatetimeRuleProcessorParameterized.ts","../../src/getDatetimeRuleProcessorPrisma.ts","../../src/getDatetimeRuleProcessorSequelize.ts","../../src/getDatetimeRuleProcessorSPARQL.ts","../../src/getDatetimeRuleProcessorSpEL.ts","../../src/getRelativeDateTimeSQL.ts","../../src/getDatetimeRuleProcessorSQL.ts","../../src/getDatetimeRuleProcessorTanStackDB.ts"],"sourcesContent":["import type { RQBDateTimeLibraryAPI, RQBJsonLogicDateTimeOperations } from './types';\nimport { resolveRelativeDateTime } from './utils';\n\n/**\n * Custom operations for use with JsonLogic objects generated by\n * {@link datetimeRuleProcessorJsonLogic}.\n */\nexport const getDatetimeJsonLogicOperations = (\n apiFns: RQBDateTimeLibraryAPI\n): RQBJsonLogicDateTimeOperations => {\n const { isAfter, isBefore, isSame } = apiFns;\n return {\n dateAfter: (a, b) => isAfter(a, b),\n dateBefore: (a, b) => isBefore(a, b),\n dateBetween: (a, b, c) =>\n isSame(b, a) ||\n isSame(b, c) ||\n (isAfter(b, a) && isBefore(b, c)) ||\n (isAfter(b, c) && isBefore(b, a)),\n dateNotBetween: (a, b, c) =>\n !isSame(b, a) &&\n !isSame(b, c) &&\n ((isBefore(a, c) && (isBefore(b, a) || isAfter(b, c))) ||\n (isAfter(a, c) && (isBefore(b, c) || isAfter(b, a)))),\n dateIn: (a, b) => b.some(v => isSame(a, v)),\n dateNotIn: (a, b) => b.every(v => !isSame(a, v)),\n dateNotOn: (a, b) => !isSame(a, b),\n dateOn: (a, b) => isSame(a, b),\n dateOnOrAfter: (a, b) => isAfter(a, b) || isSame(a, b),\n dateOnOrBefore: (a, b) => isBefore(a, b) || isSame(a, b),\n dateRelative: (anchor, offset, unit, dateOnly) => {\n const resolved = resolveRelativeDateTime(apiFns, { mode: 'relative', anchor, offset, unit });\n return dateOnly ? apiFns.toISOStringDateOnly(resolved) : apiFns.toISOString(resolved);\n },\n };\n};\n","import type { RuleProcessor } from '@react-querybuilder/core';\nimport { defaultRuleProcessorCEL, lc, toArray } from '@react-querybuilder/core';\nimport type { RQBDateTimeLibraryAPI } from './types';\nimport {\n isNonDateValueSource,\n materializeRelativeValues,\n processIsDateField,\n resolveDatetimeOperator,\n} from './utils';\n\nconst shouldNegate = (op: string) => /^(does)?not/i.test(op);\n\n/**\n * Generates a rule processor with date/time features for use by\n * {@link @react-querybuilder/core!formatQuery formatQuery} with the \"cel\" format.\n */\nexport const getDatetimeRuleProcessorCEL =\n (apiFns: RQBDateTimeLibraryAPI): RuleProcessor =>\n (rule, options) => {\n const opts = options ?? /* v8 ignore start -- @preserve */ {}; /* v8 ignore stop -- @preserve */\n const { context = {} } = opts;\n\n if (\n isNonDateValueSource(rule.valueSource) ||\n !processIsDateField(context.isDateField, rule, opts)\n ) {\n return defaultRuleProcessorCEL(rule, opts);\n }\n\n const ts = (d: string | Date) => `timestamp(\"${apiFns.toISOString(d)}\")`;\n\n // Resolve any relative value(s) to concrete literals (CEL has no symbolic relative form).\n const value = materializeRelativeValues(apiFns, rule.value, opts);\n\n const operatorTL = lc(resolveDatetimeOperator(rule, opts).replace(/^=$/, '=='));\n\n switch (operatorTL) {\n case '<':\n case '<=':\n case '==':\n case '!=':\n case '>':\n case '>=':\n return `${rule.field} ${operatorTL} ${ts(value as string | Date)}`;\n }\n\n const valueAsArray: string[] = toArray(value, { retainEmptyStrings: false });\n const valueAsDateArray = valueAsArray\n .map(v => apiFns.toDate(v))\n .filter(dateVal => apiFns.isValid(dateVal));\n\n switch (operatorTL) {\n case 'in':\n case 'notin': {\n if (valueAsDateArray.length === 0) return '';\n const [prefix, suffix] = shouldNegate(operatorTL) ? ['!(', ')'] : ['', ''];\n return `${prefix}${rule.field} in [${valueAsDateArray\n .map(val => ts(val))\n .join(', ')}]${suffix}`;\n }\n\n case 'between':\n case 'notbetween': {\n if (valueAsDateArray.length < 2) return '';\n const [first, second] = valueAsDateArray;\n const [firstDate, secondDate] = apiFns.isBefore(first, second)\n ? [first, second]\n : [second, first];\n return operatorTL === 'between'\n ? `(${rule.field} >= ${ts(firstDate)} && ${rule.field} <= ${ts(secondDate)})`\n : `(${rule.field} < ${ts(firstDate)} || ${rule.field} > ${ts(secondDate)})`;\n }\n }\n\n return defaultRuleProcessorCEL(rule, opts);\n };\n","import type { RuleProcessor } from '@react-querybuilder/core';\nimport { defaultRuleProcessorCypher, lc, toArray } from '@react-querybuilder/core';\nimport type { RQBDateTimeLibraryAPI } from './types';\nimport {\n isNonDateValueSource,\n isISOStringDateOnly,\n materializeRelativeValues,\n processIsDateField,\n resolveDatetimeOperator,\n} from './utils';\n\nconst shouldNegate = (op: string) => /^(does)?not/i.test(op);\n\n/**\n * Wraps a date string in the appropriate Cypher temporal constructor.\n * - Date-only strings (YYYY-MM-DD) become `date('...')`\n * - Full ISO strings become `datetime('...')`\n */\nconst cypherTemporal = (iso: string, dateOnly: boolean): string =>\n dateOnly ? `date('${iso}')` : `datetime('${iso}')`;\n\n/**\n * Generates a rule processor with date/time features for use by\n * {@link @react-querybuilder/core!formatQuery formatQuery} with the \"cypher\" or \"gql\" format.\n *\n * Supports:\n * - Standard comparison operators (`=`, `!=`, `<`, `>`, `<=`, `>=`)\n * - Range operators (between, notBetween, in, notIn)\n * - Duration math via custom operators: `olderThanDuration` and `withinDuration`\n * (e.g., value `\"P30D\"` → `datetime() - field > duration('P30D')`)\n */\nexport const getDatetimeRuleProcessorCypher =\n (apiFns: RQBDateTimeLibraryAPI): RuleProcessor =>\n (rule, options) => {\n const opts = options ?? /* v8 ignore start -- @preserve */ {}; /* v8 ignore stop -- @preserve */\n const { context = {} } = opts;\n\n if (\n isNonDateValueSource(rule.valueSource) ||\n !processIsDateField(context.isDateField, rule, opts)\n ) {\n return defaultRuleProcessorCypher(rule, opts);\n }\n\n const { field } = rule;\n const operator = resolveDatetimeOperator(rule, opts);\n const operatorTL = lc(operator);\n\n // Duration math operators — compare elapsed time against a duration literal\n if (operatorTL === 'olderthanduration') {\n return `datetime() - ${field} > duration('${rule.value}')`;\n }\n if (operatorTL === 'withinduration') {\n return `datetime() - ${field} <= duration('${rule.value}')`;\n }\n\n // Resolve any relative value(s) to concrete literals (Cypher has no symbolic relative form).\n const value = materializeRelativeValues(apiFns, rule.value, opts);\n\n const valueAsArray: string[] = toArray(value, { retainEmptyStrings: false });\n const valueAsDateArray = valueAsArray\n .map((v): [string, Date] => [v, apiFns.toDate(v)])\n .filter(([, d]) => apiFns.isValid(d));\n\n const fmtDate = (originalValue: string): string => {\n const dateOnly = isISOStringDateOnly(originalValue);\n const iso = dateOnly\n ? apiFns.toISOStringDateOnly(originalValue)\n : apiFns.toISOString(originalValue);\n return cypherTemporal(iso, dateOnly);\n };\n\n switch (operatorTL) {\n case 'in':\n case 'notin': {\n if (valueAsDateArray.length === 0) return '';\n const items = valueAsDateArray.map(([orig]) => fmtDate(orig));\n const prefix = shouldNegate(operatorTL) ? 'NOT ' : '';\n return `${prefix}${field} IN [${items.join(', ')}]`;\n }\n\n case 'between':\n case 'notbetween': {\n if (valueAsDateArray.length < 2) return '';\n const [first, second] = valueAsDateArray;\n const [lo, hi] = apiFns.isBefore(first[1], second[1]) ? [first, second] : [second, first];\n const expr = `${fmtDate(lo[0])} <= ${field} AND ${field} <= ${fmtDate(hi[0])}`;\n return operatorTL === 'notbetween' ? `NOT (${expr})` : expr;\n }\n\n default: {\n // Standard comparison: =, !=, <, >, <=, >=\n if (valueAsDateArray.length === 0) return '';\n const [orig] = valueAsDateArray[0];\n const op = operatorTL === '<>' ? '<>' : operatorTL;\n return `${field} ${op} ${fmtDate(orig)}`;\n }\n }\n };\n","import type { RuleProcessor } from '@react-querybuilder/core';\nimport { defaultRuleProcessorDrizzle } from '@react-querybuilder/core';\nimport type { RQBDateTimeLibraryAPI } from './types';\nimport { isNonDateValueSource, materializeForExport, processIsDateField } from './utils';\n\n/**\n * Generates a rule processor with date/time features for use by\n * {@link @react-querybuilder/core!formatQuery formatQuery} with the \"drizzle\" format.\n * Relative values are materialized and all date/time values are converted to `Date`\n * objects (Drizzle column operators compare against native `Date` values).\n */\nexport const getDatetimeRuleProcessorDrizzle =\n (apiFns: RQBDateTimeLibraryAPI): RuleProcessor =>\n (rule, options) => {\n const opts = options ?? /* v8 ignore start -- @preserve */ {}; /* v8 ignore stop -- @preserve */\n const { context = {} } = opts;\n\n if (\n isNonDateValueSource(rule.valueSource) ||\n !processIsDateField(context.isDateField, rule, opts)\n ) {\n return defaultRuleProcessorDrizzle(rule, opts);\n }\n\n const { operator, value } = materializeForExport(apiFns, rule, opts, true);\n return defaultRuleProcessorDrizzle({ ...rule, operator, value }, opts);\n };\n","import type { RuleProcessor } from '@react-querybuilder/core';\nimport { defaultRuleProcessorElasticSearch } from '@react-querybuilder/core';\nimport type { RQBDateTimeLibraryAPI } from './types';\nimport { isNonDateValueSource, materializeForExport, processIsDateField } from './utils';\n\n/**\n * Generates a rule processor with date/time features for use by\n * {@link @react-querybuilder/core!formatQuery formatQuery} with the \"elasticsearch\" format.\n * Relative values are materialized to concrete ISO 8601 strings (ElasticSearch has no\n * symbolic relative form); absolute values pass through.\n */\nexport const getDatetimeRuleProcessorElasticSearch =\n (apiFns: RQBDateTimeLibraryAPI): RuleProcessor =>\n (rule, options) => {\n const opts = options ?? /* v8 ignore start -- @preserve */ {}; /* v8 ignore stop -- @preserve */\n const { context = {} } = opts;\n\n if (\n isNonDateValueSource(rule.valueSource) ||\n !processIsDateField(context.isDateField, rule, opts)\n ) {\n return defaultRuleProcessorElasticSearch(rule, opts);\n }\n\n const { operator, value } = materializeForExport(apiFns, rule, opts);\n return defaultRuleProcessorElasticSearch({ ...rule, operator, value }, opts);\n };\n","import type { RuleProcessor } from '@react-querybuilder/core';\nimport { defaultRuleProcessorGremlin } from '@react-querybuilder/core';\nimport type { RQBDateTimeLibraryAPI } from './types';\nimport { isNonDateValueSource, materializeForExport, processIsDateField } from './utils';\n\n/**\n * Generates a rule processor with date/time features for use by\n * {@link @react-querybuilder/core!formatQuery formatQuery} with the \"gremlin\" format.\n * Relative values are materialized to concrete ISO 8601 strings (Gremlin has no symbolic\n * relative form); absolute values pass through.\n */\nexport const getDatetimeRuleProcessorGremlin =\n (apiFns: RQBDateTimeLibraryAPI): RuleProcessor =>\n (rule, options) => {\n const opts = options ?? /* v8 ignore start -- @preserve */ {}; /* v8 ignore stop -- @preserve */\n const { context = {} } = opts;\n\n if (\n isNonDateValueSource(rule.valueSource) ||\n !processIsDateField(context.isDateField, rule, opts)\n ) {\n return defaultRuleProcessorGremlin(rule, opts);\n }\n\n const { operator, value } = materializeForExport(apiFns, rule, opts);\n return defaultRuleProcessorGremlin({ ...rule, operator, value }, opts);\n };\n","import type { RuleProcessor } from '@react-querybuilder/core';\nimport {\n defaultRuleProcessorJSONata,\n getQuotedFieldName,\n nullOrUndefinedOrEmpty,\n toArray,\n} from '@react-querybuilder/core';\nimport type { RQBDateTimeLibraryAPI } from './types';\nimport { materializeRelativeValues, processIsDateField, resolveDatetimeOperator } from './utils';\n\nconst shouldNegate = (op: string) => /^(does)?not/i.test(op);\n\nconst negate = (clause: string, neg: boolean) => (neg ? `$not(${clause})` : `${clause}`);\n\n/**\n * Generates a rule processor with date/time features for use by\n * {@link @react-querybuilder/core!formatQuery formatQuery} with the \"jsonata\" format.\n */\nexport const getDatetimeRuleProcessorJSONata =\n (apiFns: RQBDateTimeLibraryAPI): RuleProcessor =>\n (rule, options) => {\n const opts = options ?? /* v8 ignore start -- @preserve */ {}; /* v8 ignore stop -- @preserve */\n const { context = {} } = opts;\n\n // v8 ignore next\n const { quoteFieldNamesWith = ['', ''] as [string, string], fieldIdentifierSeparator = '' } =\n opts;\n const { field, valueSource } = rule;\n const operator = resolveDatetimeOperator(rule, opts);\n\n if (!processIsDateField(context.isDateField, rule, opts)) {\n return defaultRuleProcessorJSONata(rule, opts);\n }\n\n // Parameter references are named placeholders (not dates); delegate to the core default,\n // which emits the name as a literal (paradigm B).\n if (valueSource === 'parameter') {\n return defaultRuleProcessorJSONata(rule, opts);\n }\n\n const valueIsField = valueSource === 'field';\n\n // Resolve any relative value(s) to concrete literals (JSONata has no symbolic relative form).\n // Field-source values are field names and pass through untouched.\n const value = valueIsField ? rule.value : materializeRelativeValues(apiFns, rule.value, opts);\n\n const fldToMs = (f: string) =>\n `$toMillis(${getQuotedFieldName(f, { quoteFieldNamesWith, fieldIdentifierSeparator })})`;\n const valToMs = (v: string | Date) => `$toMillis(\"${apiFns.toISOString(v)}\")`;\n\n switch (operator) {\n case '<':\n case '<=':\n case '=':\n case '!=':\n case '>':\n case '>=':\n return `${fldToMs(field)} ${operator} ${valueIsField ? fldToMs(value as string) : valToMs(value as string | Date)}`;\n }\n\n const valueAsArray: string[] = toArray(value, { retainEmptyStrings: false });\n const valueAsDateArray = valueAsArray\n .map(v => apiFns.toDate(v))\n .filter(dateVal => apiFns.isValid(dateVal));\n\n switch (operator) {\n case 'in':\n case 'notIn': {\n if (valueIsField) {\n if (valueAsArray.length === 0) return '';\n return negate(\n `${fldToMs(field)} in [${valueAsArray.map(val => fldToMs(val)).join(', ')}]`,\n shouldNegate(operator)\n );\n }\n if (valueAsDateArray.length === 0) return '';\n return negate(\n `${fldToMs(field)} in [${valueAsDateArray.map(val => valToMs(val)).join(', ')}]`,\n shouldNegate(operator)\n );\n }\n\n case 'between':\n case 'notBetween': {\n if (\n valueAsArray.length < 2 ||\n nullOrUndefinedOrEmpty(valueAsArray[0]) ||\n nullOrUndefinedOrEmpty(valueAsArray[1]) ||\n (!valueIsField && valueAsDateArray.length < 2)\n ) {\n return '';\n }\n\n if (valueIsField) {\n const [firstValue, secondValue] = valueAsArray;\n const expression = `${fldToMs(field)} >= ${fldToMs(firstValue)} and ${fldToMs(field)} <= ${fldToMs(secondValue)}`;\n return operator === 'between' ? `(${expression})` : negate(expression, true);\n }\n\n const [first, second] = valueAsDateArray;\n const [firstDate, secondDate] = apiFns.isBefore(first, second)\n ? [first, second]\n : [second, first];\n const expression = `${fldToMs(field)} >= ${valToMs(firstDate)} and ${fldToMs(field)} <= ${valToMs(secondDate)}`;\n return operator === 'between' ? `(${expression})` : negate(expression, true);\n }\n }\n\n return defaultRuleProcessorJSONata(rule, opts);\n };\n","import type { RuleProcessor } from '@react-querybuilder/core';\nimport { defaultRuleProcessorLDAP } from '@react-querybuilder/core';\nimport type { RQBDateTimeLibraryAPI } from './types';\nimport { isNonDateValueSource, materializeForExport, processIsDateField } from './utils';\n\n/**\n * Generates a rule processor with date/time features for use by\n * {@link @react-querybuilder/core!formatQuery formatQuery} with the \"ldap\" format.\n * Relative values are materialized to concrete ISO 8601 strings (LDAP has no symbolic\n * relative form); absolute values pass through.\n */\nexport const getDatetimeRuleProcessorLDAP =\n (apiFns: RQBDateTimeLibraryAPI): RuleProcessor =>\n (rule, options) => {\n const opts = options ?? /* v8 ignore start -- @preserve */ {}; /* v8 ignore stop -- @preserve */\n const { context = {} } = opts;\n\n if (\n isNonDateValueSource(rule.valueSource) ||\n !processIsDateField(context.isDateField, rule, opts)\n ) {\n return defaultRuleProcessorLDAP(rule, opts);\n }\n\n const { operator, value } = materializeForExport(apiFns, rule, opts);\n return defaultRuleProcessorLDAP({ ...rule, operator, value }, opts);\n };\n","import type { RuleProcessor } from '@react-querybuilder/core';\nimport {\n defaultRuleProcessorMongoDBQuery,\n mongoOperators,\n toArray,\n} from '@react-querybuilder/core';\nimport type { RQBDateTimeLibraryAPI } from './types';\nimport {\n isNonDateValueSource,\n materializeRelativeValues,\n processIsDateField,\n resolveDatetimeOperator,\n} from './utils';\n/**\n * Generates a rule processor with date/time features for use by\n * {@link @react-querybuilder/core!formatQuery formatQuery} with the \"mongodb_query\" format.\n */\nexport const getDatetimeRuleProcessorMongoDBQuery =\n (apiFns: RQBDateTimeLibraryAPI): RuleProcessor =>\n (rule, options) => {\n const opts = options ?? /* v8 ignore start -- @preserve */ {}; /* v8 ignore stop -- @preserve */\n const { field, valueSource } = rule;\n const operator = resolveDatetimeOperator(rule, opts);\n\n if (\n isNonDateValueSource(valueSource) ||\n !processIsDateField(opts.context?.isDateField, rule, opts)\n ) {\n return defaultRuleProcessorMongoDBQuery(rule, opts);\n }\n\n // Resolve any relative value(s) to concrete literals (MongoDB queries use concrete dates).\n const value = materializeRelativeValues(apiFns, rule.value, opts);\n\n if (operator === '=') {\n return { [field]: apiFns.toDate(value as string | Date) };\n }\n\n switch (operator) {\n case '<':\n case '<=':\n case '!=':\n case '>':\n case '>=':\n return { [field]: { [mongoOperators[operator]]: apiFns.toDate(value as string | Date) } };\n }\n\n const valueAsArray: string[] = toArray(value, { retainEmptyStrings: false });\n const valueAsDateArray = valueAsArray\n .map(v => apiFns.toDate(v))\n .filter(dateVal => apiFns.isValid(dateVal));\n\n switch (operator) {\n case 'in':\n case 'notIn':\n return { [field]: { [mongoOperators[operator]]: valueAsDateArray } };\n\n case 'between':\n case 'notBetween': {\n if (valueAsDateArray.length < 2) return '';\n const [first, second] = valueAsDateArray;\n const orderedArray = apiFns.isBefore(first, second) ? [first, second] : [second, first];\n return operator === 'between'\n ? { [field]: { $gte: orderedArray[0], $lte: orderedArray[1] } }\n : {\n $or: [{ [field]: { $lt: orderedArray[0] } }, { [field]: { $gt: orderedArray[1] } }],\n };\n }\n }\n\n return defaultRuleProcessorMongoDBQuery(rule, opts);\n };\n","import type { RuleProcessor } from '@react-querybuilder/core';\nimport { getDatetimeRuleProcessorMongoDBQuery } from './getDatetimeRuleProcessorMongoDBQuery';\nimport type { RQBDateTimeLibraryAPI } from './types';\n\n/**\n * Generates a rule processor with date/time features for use by\n * {@link @react-querybuilder/core!formatQuery formatQuery} with the (deprecated) \"mongodb\"\n * format. Delegates to the \"mongodb_query\" date/time processor and serializes the result;\n * `Date` values serialize to ISO 8601 strings.\n */\nexport const getDatetimeRuleProcessorMongoDB = (apiFns: RQBDateTimeLibraryAPI): RuleProcessor => {\n const mongoDBQueryProcessor = getDatetimeRuleProcessorMongoDBQuery(apiFns);\n return (rule, options) => {\n const queryObj = mongoDBQueryProcessor(rule, options);\n return queryObj ? JSON.stringify(queryObj) : '';\n };\n};\n","import type {\n ExportOperatorMap,\n RuleProcessor,\n ValueProcessorByRule,\n} from '@react-querybuilder/core';\nimport {\n defaultOperatorProcessorNL,\n defaultRuleProcessorNL,\n getQuotedFieldName,\n lc,\n normalizeConstituentWordOrder,\n toArray,\n} from '@react-querybuilder/core';\nimport type { RQBDateTimeLibraryAPI } from './types';\nimport {\n isISOStringDateOnly,\n isNonDateValueSource,\n materializeRelativeValues,\n processIsDateField,\n resolveDatetimeOperator,\n} from './utils';\n\nexport const defaultDateTimeNLOperatorMap: ExportOperatorMap = {\n // '=': 'is',\n // '!=': 'is not',\n '<': 'is before',\n '>': 'is after',\n '<=': 'is on or before',\n '>=': 'is on or after',\n in: ['is one of the dates', 'is the same as a date in'],\n notin: ['is not one of the dates', 'is not the same as any date in'],\n between: ['is between', 'is between the dates in'],\n notbetween: ['is not between', 'is not between the dates in'],\n};\n\n/**\n * Generates a value processor with date/time features for use by\n * {@link @react-querybuilder/core!formatQuery formatQuery} with the \"natural_language\" format.\n */\nexport const datetimeValueProcessorNL: ValueProcessorByRule = (rule, opts) => {\n if (isISOStringDateOnly(opts?.context?.originalValue)) {\n return new Intl.DateTimeFormat(opts?.context?.locales, {\n dateStyle: 'full',\n ...opts?.context?.dateFormat,\n }).format(rule.value);\n }\n return new Intl.DateTimeFormat(opts?.context?.locales, {\n dateStyle: 'full',\n timeStyle: 'long',\n ...opts?.context?.dateTimeFormat,\n }).format(rule.value);\n};\n\n/**\n * Generates a rule processor with date/time features for use by {@link @react-querybuilder/core!formatQuery formatQuery} with\n * the \"natural_language\" format.\n */\nexport const getDatetimeRuleProcessorNL =\n (apiFns: RQBDateTimeLibraryAPI): RuleProcessor =>\n (rule, options) => {\n const opts = options ?? /* v8 ignore start -- @preserve */ {}; /* v8 ignore stop -- @preserve */\n const operator = resolveDatetimeOperator(rule, opts);\n const operatorLowerCase = lc(operator);\n let finalValue = '';\n\n // v8 ignore next\n const {\n fieldData,\n quoteFieldNamesWith = ['', ''] as [string, string],\n fieldIdentifierSeparator = '',\n operatorProcessor = defaultOperatorProcessorNL,\n // valueProcessor = datetimeValueProcessorNL,\n wordOrder = 'SVO',\n context = {},\n operatorMap = defaultDateTimeNLOperatorMap,\n } = opts;\n\n if (!processIsDateField(context.isDateField, rule, opts)) {\n return defaultRuleProcessorNL(rule, opts);\n }\n\n if (isNonDateValueSource(rule.valueSource)) {\n return defaultRuleProcessorNL(rule, { ...opts, operatorMap: defaultDateTimeNLOperatorMap });\n }\n\n if (\n (operatorLowerCase === 'in' ||\n operatorLowerCase === 'notin' ||\n operatorLowerCase === 'between' ||\n operatorLowerCase === 'notbetween') &&\n !rule.value\n ) {\n return '';\n }\n\n // Natural language is descriptive (not executable), so relative value(s) are\n // resolved to concrete dates and rendered like any other literal.\n const ruleValue = materializeRelativeValues(apiFns, rule.value, opts);\n\n const valueAsArray: string[] = toArray(ruleValue, { retainEmptyStrings: false });\n const valueAsDateArray = valueAsArray\n .map((v): [string, Date] => [v, apiFns.toDate(v)])\n .filter(v => apiFns.isValid(v[1]));\n\n switch (operatorLowerCase) {\n case 'in':\n case 'notin':\n {\n if (valueAsDateArray.length === 0) return '';\n finalValue = `(${valueAsDateArray\n .map(value =>\n datetimeValueProcessorNL(\n { field: rule.field, operator: '=', value: value[1] },\n { ...opts, context: { ...context, originalValue: value[0] } }\n )\n )\n .join(', ')})`;\n }\n break;\n\n case 'between':\n case 'notbetween':\n {\n if (valueAsDateArray.length < 2) return '';\n const [first, second] = valueAsDateArray;\n const orderedArray = apiFns.isBefore(first[1], second[1])\n ? [first, second]\n : [second, first];\n finalValue = orderedArray\n .map(([originalValue, value]) =>\n datetimeValueProcessorNL(\n { field: rule.field, operator: '=', value },\n { ...opts, context: { ...context, originalValue } }\n )\n )\n .join(` ${opts.translations?.and ?? 'and'} `);\n }\n break;\n\n default: {\n const [originalValue, value] = valueAsDateArray[0] ?? ['', ''];\n finalValue = originalValue\n ? datetimeValueProcessorNL(\n { field: rule.field, operator: '=', value },\n { ...opts, context: { ...context, originalValue } }\n )\n : '';\n }\n }\n\n const processedField = getQuotedFieldName(fieldData?.label ?? rule.field, {\n quoteFieldNamesWith,\n fieldIdentifierSeparator,\n });\n\n const processedOperator = operatorProcessor(\n { ...rule, operator },\n {\n ...opts,\n operatorMap: { ...defaultDateTimeNLOperatorMap, ...operatorMap },\n }\n );\n\n const wordOrderMap = {\n S: processedField,\n V: processedOperator,\n O: finalValue,\n };\n\n return normalizeConstituentWordOrder(wordOrder)\n .map(term => `${wordOrderMap[term]}`)\n .join(' ')\n .trim();\n };\n","import type { RuleProcessor } from '@react-querybuilder/core';\nimport { defaultRuleProcessorParameterized } from '@react-querybuilder/core';\nimport type { RQBDateTimeLibraryAPI } from './types';\nimport { isNonDateValueSource, materializeForExport, processIsDateField } from './utils';\n\n/**\n * Generates a rule processor with date/time features for use by\n * {@link @react-querybuilder/core!formatQuery formatQuery} with the \"parameterized\" and\n * \"parameterized_named\" formats. Relative values are materialized to concrete ISO 8601\n * strings (these formats have no symbolic relative form); absolute values pass through.\n */\nexport const getDatetimeRuleProcessorParameterized =\n (apiFns: RQBDateTimeLibraryAPI): RuleProcessor =>\n (rule, options, meta) => {\n const opts = options ?? /* v8 ignore start -- @preserve */ {}; /* v8 ignore stop -- @preserve */\n const { context = {} } = opts;\n\n if (\n isNonDateValueSource(rule.valueSource) ||\n !processIsDateField(context.isDateField, rule, opts)\n ) {\n return defaultRuleProcessorParameterized(rule, opts, meta);\n }\n\n const { operator, value } = materializeForExport(apiFns, rule, opts);\n return defaultRuleProcessorParameterized({ ...rule, operator, value }, opts, meta);\n };\n","import type { RuleProcessor } from '@react-querybuilder/core';\nimport { defaultRuleProcessorPrisma } from '@react-querybuilder/core';\nimport type { RQBDateTimeLibraryAPI } from './types';\nimport { isNonDateValueSource, materializeForExport, processIsDateField } from './utils';\n\n/**\n * Generates a rule processor with date/time features for use by\n * {@link @react-querybuilder/core!formatQuery formatQuery} with the \"prisma\" format.\n * Relative values are materialized and all date/time values are converted to `Date`\n * objects (Prisma's `where` clauses use native `Date` values for date columns).\n */\nexport const getDatetimeRuleProcessorPrisma =\n (apiFns: RQBDateTimeLibraryAPI): RuleProcessor =>\n (rule, options) => {\n const opts = options ?? /* v8 ignore start -- @preserve */ {}; /* v8 ignore stop -- @preserve */\n const { context = {} } = opts;\n\n if (\n isNonDateValueSource(rule.valueSource) ||\n !processIsDateField(context.isDateField, rule, opts)\n ) {\n return defaultRuleProcessorPrisma(rule, opts);\n }\n\n const { operator, value } = materializeForExport(apiFns, rule, opts, true);\n return defaultRuleProcessorPrisma({ ...rule, operator, value }, opts);\n };\n","import type { RuleProcessor } from '@react-querybuilder/core';\nimport { defaultRuleProcessorSequelize } from '@react-querybuilder/core';\nimport type { RQBDateTimeLibraryAPI } from './types';\nimport { isNonDateValueSource, materializeForExport, processIsDateField } from './utils';\n\n/**\n * Generates a rule processor with date/time features for use by\n * {@link @react-querybuilder/core!formatQuery formatQuery} with the \"sequelize\" format.\n * Relative values are materialized and all date/time values are converted to `Date`\n * objects (Sequelize `where` clauses use native `Date` values for date columns).\n */\nexport const getDatetimeRuleProcessorSequelize =\n (apiFns: RQBDateTimeLibraryAPI): RuleProcessor =>\n (rule, options) => {\n const opts = options ?? /* v8 ignore start -- @preserve */ {}; /* v8 ignore stop -- @preserve */\n const { context = {} } = opts;\n\n if (\n isNonDateValueSource(rule.valueSource) ||\n !processIsDateField(context.isDateField, rule, opts)\n ) {\n return defaultRuleProcessorSequelize(rule, opts);\n }\n\n const { operator, value } = materializeForExport(apiFns, rule, opts, true);\n return defaultRuleProcessorSequelize({ ...rule, operator, value }, opts);\n };\n","import type { RuleProcessor } from '@react-querybuilder/core';\nimport { defaultRuleProcessorSPARQL, lc, sparqlVar, toArray } from '@react-querybuilder/core';\nimport type { RQBDateTimeLibraryAPI } from './types';\nimport {\n isNonDateValueSource,\n isISOStringDateOnly,\n materializeRelativeValues,\n processIsDateField,\n resolveDatetimeOperator,\n} from './utils';\n\nconst shouldNegate = (op: string) => /^(does)?not/i.test(op);\n\n/**\n * Wraps a date string in the appropriate SPARQL typed literal.\n * - Date-only strings (YYYY-MM-DD) become `\"...\"^^xsd:date`\n * - Full ISO strings become `\"...\"^^xsd:dateTime`\n */\nconst sparqlTemporal = (iso: string, dateOnly: boolean): string =>\n dateOnly ? `\"${iso}\"^^xsd:date` : `\"${iso}\"^^xsd:dateTime`;\n\n/**\n * Generates a rule processor with date/time features for use by\n * {@link @react-querybuilder/core!formatQuery formatQuery} with the \"sparql\" format.\n *\n * Supports:\n * - Standard comparison operators (`=`, `!=`, `<`, `>`, `<=`, `>=`)\n * - Range operators (between, notBetween, in, notIn)\n * - Duration math via custom operators: `olderThanDuration` and `withinDuration`\n * (e.g., value `\"P30D\"` → `NOW() - ?field > \"P30D\"^^xsd:duration`)\n */\nexport const getDatetimeRuleProcessorSPARQL =\n (apiFns: RQBDateTimeLibraryAPI): RuleProcessor =>\n (rule, options) => {\n const opts = options ?? /* v8 ignore start -- @preserve */ {}; /* v8 ignore stop -- @preserve */\n const { context = {} } = opts;\n\n if (\n isNonDateValueSource(rule.valueSource) ||\n !processIsDateField(context.isDateField, rule, opts)\n ) {\n return defaultRuleProcessorSPARQL(rule, opts);\n }\n\n const { field: rawField, value } = rule;\n const operator = resolveDatetimeOperator(rule, opts);\n const field = sparqlVar(rawField);\n const operatorTL = lc(operator);\n\n // Duration math operators — compare elapsed time against an xsd:duration literal\n if (operatorTL === 'olderthanduration') {\n return `NOW() - ${field} > \"${value}\"^^xsd:duration`;\n }\n if (operatorTL === 'withinduration') {\n return `NOW() - ${field} <= \"${value}\"^^xsd:duration`;\n }\n\n // Resolve any relative value(s) to concrete literals (SPARQL has no symbolic relative form).\n const valueAsArray: string[] = toArray(materializeRelativeValues(apiFns, value, opts), {\n retainEmptyStrings: false,\n });\n const valueAsDateArray = valueAsArray\n .map((v): [string, Date] => [v, apiFns.toDate(v)])\n .filter(([, d]) => apiFns.isValid(d));\n\n const fmtDate = (originalValue: string): string => {\n const dateOnly = isISOStringDateOnly(originalValue);\n const iso = dateOnly\n ? apiFns.toISOStringDateOnly(originalValue)\n : apiFns.toISOString(originalValue);\n return sparqlTemporal(iso, dateOnly);\n };\n\n switch (operatorTL) {\n case 'in':\n case 'notin': {\n if (valueAsDateArray.length === 0) return '';\n const items = valueAsDateArray.map(([orig]) => fmtDate(orig));\n const prefix = shouldNegate(operatorTL) ? 'NOT ' : '';\n return `${field} ${prefix}IN (${items.join(', ')})`;\n }\n\n case 'between':\n case 'notbetween': {\n if (valueAsDateArray.length < 2) return '';\n const [first, second] = valueAsDateArray;\n const [lo, hi] = apiFns.isBefore(first[1], second[1]) ? [first, second] : [second, first];\n if (operatorTL === 'notbetween') {\n return `(${field} < ${fmtDate(lo[0])} || ${field} > ${fmtDate(hi[0])})`;\n }\n return `${field} >= ${fmtDate(lo[0])} && ${field} <= ${fmtDate(hi[0])}`;\n }\n\n default: {\n // Standard comparison: =, !=, <, >, <=, >=\n if (valueAsDateArray.length === 0) return '';\n const [orig] = valueAsDateArray[0];\n const op = operatorTL === '<>' ? '!=' : operatorTL;\n return `${field} ${op} ${fmtDate(orig)}`;\n }\n }\n };\n","import type { RuleProcessor } from '@react-querybuilder/core';\nimport { defaultRuleProcessorSpEL } from '@react-querybuilder/core';\nimport type { RQBDateTimeLibraryAPI } from './types';\nimport { isNonDateValueSource, materializeForExport, processIsDateField } from './utils';\n\n/**\n * Generates a rule processor with date/time features for use by\n * {@link @react-querybuilder/core!formatQuery formatQuery} with the \"spel\" format.\n * Relative values are materialized to concrete ISO 8601 strings (SpEL has no symbolic\n * relative form); absolute values pass through.\n */\nexport const getDatetimeRuleProcessorSpEL =\n (apiFns: RQBDateTimeLibraryAPI): RuleProcessor =>\n (rule, options) => {\n const opts = options ?? /* v8 ignore start -- @preserve */ {}; /* v8 ignore stop -- @preserve */\n const { context = {} } = opts;\n\n if (\n isNonDateValueSource(rule.valueSource) ||\n !processIsDateField(context.isDateField, rule, opts)\n ) {\n return defaultRuleProcessorSpEL(rule, opts);\n }\n\n const { operator, value } = materializeForExport(apiFns, rule, opts);\n return defaultRuleProcessorSpEL({ ...rule, operator, value }, opts);\n };\n","import type { SQLPreset } from '@react-querybuilder/core';\nimport type {\n RelativeDateTimeTruncationUnit,\n RelativeDateTimeUnit,\n RelativeDateTimeValue,\n} from './types';\n\n/**\n * Parsed form of a {@link RelativeDateTimeValue} anchor: either the current\n * date/time (`now`) or a truncation to the start/end of a calendar period.\n */\ninterface ParsedAnchor {\n bound: 'now' | 'start' | 'end';\n unit?: RelativeDateTimeTruncationUnit;\n}\n\nconst parseAnchor = (anchor: RelativeDateTimeValue['anchor']): ParsedAnchor => {\n if (anchor === 'now') return { bound: 'now' };\n const match = /^(start|end)Of(Day|Week|Month|Year)$/.exec(anchor)!;\n return {\n bound: match[1] as 'start' | 'end',\n unit: match[2].toLowerCase() as ParsedAnchor['unit'],\n };\n};\n\n/**\n * A relative-date/time SQL expression builder for a single dialect. Produces a\n * symbolic expression (e.g. `current_date - interval '3 months'`) so the value\n * stays relative to query-execution time rather than being materialized.\n */\ntype RelativeSQLBuilder = (value: RelativeDateTimeValue, asDate: boolean) => string;\n\nconst pluralUnit = (unit: RelativeDateTimeUnit): string => `${unit}s`;\n\n// --- PostgreSQL / ANSI ------------------------------------------------------\n\nconst pgBuild: RelativeSQLBuilder = (value, asDate) => {\n const now = asDate ? 'current_date' : 'current_timestamp';\n const { bound, unit } = parseAnchor(value.anchor);\n\n let expr = now;\n let modified = false;\n\n if (bound === 'start' && unit) {\n expr = `date_trunc('${unit}', ${now})`;\n modified = true;\n } else if (bound === 'end' && unit) {\n const tail = asDate ? `interval '1 day'` : `interval '1 microsecond'`;\n expr = `date_trunc('${unit}', ${now}) + interval '1 ${unit}' - ${tail}`;\n modified = true;\n }\n\n if (value.offset) {\n const op = value.offset < 0 ? '-' : '+';\n expr = `${expr} ${op} interval '${Math.abs(value.offset)} ${pluralUnit(value.unit)}'`;\n modified = true;\n }\n\n return asDate && modified ? `cast(${expr} as date)` : expr;\n};\n\n// --- MySQL ------------------------------------------------------------------\n\nconst mysqlTrunc = (now: string, bound: 'start' | 'end', unit: RelativeDateTimeTruncationUnit) => {\n if (bound === 'start') {\n switch (unit) {\n case 'day':\n return `date(${now})`;\n case 'week':\n return `date_sub(date(${now}), interval dayofweek(${now}) - 1 day)`;\n case 'month':\n return `date_format(${now}, '%Y-%m-01')`;\n case 'year':\n return `date_format(${now}, '%Y-01-01')`;\n }\n }\n switch (unit) {\n case 'day':\n return `date(${now})`;\n case 'week':\n return `date_add(date(${now}), interval 7 - dayofweek(${now}) day)`;\n case 'month':\n return `last_day(${now})`;\n }\n // year\n return `date_format(${now}, '%Y-12-31')`;\n};\n\nconst mysqlBuild: RelativeSQLBuilder = (value, asDate) => {\n const now = asDate ? 'curdate()' : 'now()';\n const { bound, unit } = parseAnchor(value.anchor);\n\n let expr = now;\n if (bound !== 'now' && unit) {\n expr = mysqlTrunc(now, bound, unit);\n if (bound === 'end' && !asDate) {\n // mysqlTrunc yields the period's last day at midnight. For timestamp\n // granularity, step to the last instant (one microsecond before the next\n // period) so intraday values aren't excluded. DATE columns are time-less,\n // so the date-granular result above is left untouched.\n expr = `date_sub(date_add(${expr}, interval 1 day), interval 1 microsecond)`;\n }\n }\n\n if (value.offset) {\n const fn = value.offset < 0 ? 'date_sub' : 'date_add';\n expr = `${fn}(${expr}, interval ${Math.abs(value.offset)} ${value.unit})`;\n }\n\n return expr;\n};\n\n// --- MSSQL ------------------------------------------------------------------\n\nconst mssqlTrunc = (\n now: string,\n bound: 'start' | 'end',\n unit: RelativeDateTimeTruncationUnit,\n asDate: boolean\n) => {\n // datediff/dateadd truncation: number of <unit> since epoch 0, re-added to 0.\n const start = `dateadd(${unit}, datediff(${unit}, 0, ${now}), 0)`;\n if (bound === 'start') return start;\n const nextStart = `dateadd(${unit}, datediff(${unit}, 0, ${now}) + 1, 0)`;\n // Date granularity: last day at midnight. Timestamp granularity: the last\n // instant (100ns before the next period, as datetime2). Using datetime2 is\n // safe for datetime/smalldatetime columns too, since SQL Server promotes the\n // lower-precision side when comparing, so nothing from the next period leaks in.\n return asDate\n ? `dateadd(day, -1, ${nextStart})`\n : `dateadd(nanosecond, -100, cast(${nextStart} as datetime2))`;\n};\n\nconst mssqlBuild: RelativeSQLBuilder = (value, asDate) => {\n const now = asDate ? 'cast(getdate() as date)' : 'getdate()';\n const { bound, unit } = parseAnchor(value.anchor);\n\n let expr = now;\n if (bound !== 'now' && unit) {\n expr = mssqlTrunc(now, bound, unit, asDate);\n }\n\n if (value.offset) {\n expr = `dateadd(${value.unit}, ${value.offset}, ${expr})`;\n }\n\n return expr;\n};\n\n// --- Oracle -----------------------------------------------------------------\n\nconst oracleTruncFormat: Record<RelativeDateTimeTruncationUnit, string> = {\n day: 'DDD',\n week: 'IW',\n month: 'MM',\n year: 'YYYY',\n};\n\nconst oracleBuild: RelativeSQLBuilder = (value, asDate) => {\n const now = asDate ? 'trunc(sysdate)' : 'systimestamp';\n const { bound, unit } = parseAnchor(value.anchor);\n\n let expr = now;\n // When true, the end boundary's sub-second step-back is deferred until after\n // any offset is applied (subtraction commutes with the additive offset), so\n // precision survives the intermediate DATE arithmetic.\n let endTimestampStepBack = false;\n if (bound !== 'now' && unit) {\n const start = `trunc(${now}, '${oracleTruncFormat[unit]}')`;\n if (bound === 'start') {\n expr = start;\n } else {\n // End = next period start, stepped back to the last instant. Oracle's DATE\n // always carries a time component (no time-less date type), so even\n // date-typed columns can hold intraday values; landing on the last instant\n // avoids excluding them, unlike stepping back a full day to midnight.\n const next =\n unit === 'month' || unit === 'year'\n ? `add_months(${start}, ${unit === 'month' ? 1 : 12})`\n : `${start} + interval '1' day${unit === 'week' ? ' * 7' : ''}`;\n if (asDate) {\n // DATE has only second precision; one second is the smallest step.\n expr = `${next} - interval '1' second`;\n } else {\n // TIMESTAMP: defer cast + 1ms step-back until after offset (see below).\n expr = next;\n endTimestampStepBack = true;\n }\n }\n }\n\n if (value.offset) {\n if (value.unit === 'month' || value.unit === 'year') {\n expr = `add_months(${expr}, ${value.offset * (value.unit === 'year' ? 12 : 1)})`;\n } else {\n const days = { day: 1, week: 7 }[value.unit as 'day' | 'week'];\n expr = days\n ? `${expr} ${value.offset < 0 ? '-' : '+'} ${Math.abs(value.offset) * days}`\n : `${expr} + numtodsinterval(${value.offset}, '${value.unit.toUpperCase()}')`;\n }\n }\n\n // TRUNC/DATE arithmetic above is second-granular, so cast to TIMESTAMP and\n // step back one microsecond to reach the period's true last instant (matches\n // PostgreSQL; default TIMESTAMP precision is microseconds).\n if (endTimestampStepBack) {\n expr = `cast(${expr} as timestamp) - numtodsinterval(0.000001, 'second')`;\n }\n\n return expr;\n};\n\n// --- SQLite -----------------------------------------------------------------\n\nconst sqliteStartModifier: Record<RelativeDateTimeTruncationUnit, string> = {\n day: `'start of day'`,\n week: `'weekday 0', '-7 days'`,\n month: `'start of month'`,\n year: `'start of year'`,\n};\n\nconst sqliteBuild: RelativeSQLBuilder = (value, asDate) => {\n const fn = asDate ? 'date' : 'datetime';\n const args: string[] = [`'now'`];\n const { bound, unit } = parseAnchor(value.anchor);\n\n if (bound !== 'now' && unit) {\n if (bound === 'start') {\n args.push(sqliteStartModifier[unit]);\n } else {\n // End = start of next period, minus the smallest representable amount.\n switch (unit) {\n case 'day':\n args.push(`'start of day'`, `'+1 day'`, asDate ? `'-1 day'` : `'-1 second'`);\n break;\n case 'week':\n args.push(`'weekday 0'`, asDate ? `'-1 day'` : `'-1 second'`);\n break;\n case 'month':\n args.push(`'start of month'`, `'+1 month'`, asDate ? `'-1 day'` : `'-1 second'`);\n break;\n case 'year':\n args.push(`'start of year'`, `'+1 year'`, asDate ? `'-1 day'` : `'-1 second'`);\n break;\n }\n }\n }\n\n if (value.offset) {\n const sign = value.offset < 0 ? '-' : '+';\n args.push(`'${sign}${Math.abs(value.offset)} ${pluralUnit(value.unit)}'`);\n }\n\n return `${fn}(${args.join(', ')})`;\n};\n\nconst presetToRelativeBuilderMap = {\n ansi: pgBuild,\n mssql: mssqlBuild,\n mysql: mysqlBuild,\n oracle: oracleBuild,\n postgresql: pgBuild,\n sqlite: sqliteBuild,\n} satisfies Record<SQLPreset, RelativeSQLBuilder>;\n\n/**\n * Determines whether the SQL expression for a relative date/time should be a\n * date (vs. a timestamp/datetime) based on the field's declared `datatype` and\n * the SQL dialect. Mirrors the per-dialect logic used for literal date values.\n */\nconst isDateGranularity = (preset: SQLPreset, datatype: unknown): boolean => {\n const dt = datatype as string;\n switch (preset) {\n case 'mssql':\n return !/^(?:small)?datetime/i.test(dt);\n case 'mysql':\n return !/^(?:datetime|timestamp)/i.test(dt);\n case 'oracle':\n case 'postgresql':\n return !/^timestamp/i.test(dt);\n default:\n // ansi/sqlite: anything not explicitly a datetime/timestamp is date-only.\n return !/^(?:datetime|timestamp)/i.test(dt);\n }\n};\n\n/**\n * Builds a dialect-specific symbolic SQL expression for a {@link RelativeDateTimeValue}.\n */\nexport const getRelativeDateTimeSQL = (\n value: RelativeDateTimeValue,\n preset: SQLPreset,\n datatype: unknown\n): string => presetToRelativeBuilderMap[preset](value, isDateGranularity(preset, datatype));\n","import type { RuleProcessor, SQLPreset, ValueProcessorByRule } from '@react-querybuilder/core';\nimport {\n defaultRuleProcessorSQL,\n defaultValueProcessorByRule,\n getQuotedFieldName,\n lc,\n mapSQLOperator,\n toArray,\n} from '@react-querybuilder/core';\nimport { getRelativeDateTimeSQL } from './getRelativeDateTimeSQL';\nimport type { RQBDateTimeLibraryAPI } from './types';\nimport {\n isNonDateValueSource,\n isISOStringDateOnly,\n isRelativeDateTimeValue,\n materializeRelativeValues,\n processIsDateField,\n resolveDatetimeOperator,\n} from './utils';\n\n/**\n * Generates a value processor with date/time features for use by\n * {@link @react-querybuilder/core!formatQuery formatQuery} with the \"sql\" format and \"ansi\" preset.\n */\nexport const getDatetimeValueProcessorANSI =\n ({ toISOStringDateOnly, toISOString }: RQBDateTimeLibraryAPI): ValueProcessorByRule =>\n (rule, opts) => {\n if (isISOStringDateOnly(opts?.context?.originalValue)) {\n return defaultValueProcessorByRule({ ...rule, value: toISOStringDateOnly(rule.value) }, opts);\n }\n return defaultValueProcessorByRule({ ...rule, value: toISOString(rule.value as Date) }, opts);\n };\n\n/**\n * Generates a value processor with date/time features for use by {@link @react-querybuilder/core!formatQuery formatQuery} with\n * the \"sql\" format and \"mssql\" preset.\n */\nexport const getDatetimeValueProcessorMSSQL =\n ({ toISOStringDateOnly, toISOString }: RQBDateTimeLibraryAPI): ValueProcessorByRule =>\n (rule, opts) => {\n const datatype = /^(?:small)?datetime/i.test(opts?.fieldData?.datatype as string)\n ? 'datetimeoffset'\n : 'date';\n const value =\n datatype === 'datetimeoffset' ? toISOString(rule.value) : toISOStringDateOnly(rule.value);\n return defaultValueProcessorByRule(\n { ...rule, value },\n { ...opts, wrapValueWith: [`cast(`, ` as ${datatype})`] }\n );\n };\n\n/**\n * Generates a value processor with date/time features for use by {@link @react-querybuilder/core!formatQuery formatQuery} with\n * the \"sql\" format and \"mysql\" preset.\n */\nexport const getDatetimeValueProcessorMySQL =\n ({ toISOStringDateOnly, toISOString }: RQBDateTimeLibraryAPI): ValueProcessorByRule =>\n (rule, opts) => {\n const datatype = /^(?:datetime|timestamp)/i.test(opts?.fieldData?.datatype as string)\n ? 'datetime'\n : 'date';\n const value =\n datatype === 'datetime' ? toISOString(rule.value) : toISOStringDateOnly(rule.value);\n return defaultValueProcessorByRule(\n { ...rule, value },\n { ...opts, wrapValueWith: [`cast(`, ` as ${datatype})`] }\n );\n };\n\n/**\n * Generates a value processor with date/time features for use by {@link @react-querybuilder/core!formatQuery formatQuery} with\n * the \"sql\" format and \"oracle\" preset.\n */\nexport const getDatetimeValueProcessorOracle =\n ({ toISOStringDateOnly, toISOString }: RQBDateTimeLibraryAPI): ValueProcessorByRule =>\n (rule, opts) => {\n // Oracle date format for _reading_ ISO 8601: 'YYYY-MM-DD\"T\"HH24:MI:SS.ff3\"Z\"'\n const datatype = /^timestamp/i.test(opts?.fieldData?.datatype as string) ? 'timestamp' : 'date';\n const value =\n datatype === 'timestamp'\n ? toISOString(rule.value).replaceAll('T', ' ').replace('Z', ' UTC')\n : toISOStringDateOnly(rule.value);\n return defaultValueProcessorByRule(\n { ...rule, value },\n { ...opts, wrapValueWith: [datatype, ``] }\n );\n };\n\n/**\n * Generates a value processor with date/time features for use by {@link @react-querybuilder/core!formatQuery formatQuery} with\n * the \"sql\" format and \"postgresql\" preset.\n */\nexport const getDatetimeValueProcessorPostgreSQL =\n ({ toISOStringDateOnly, toISOString }: RQBDateTimeLibraryAPI): ValueProcessorByRule =>\n (rule, opts) => {\n const datatype = /^timestamp/i.test(opts?.fieldData?.datatype as string) ? 'timestamp' : 'date';\n const value =\n datatype === 'timestamp' ? toISOString(rule.value) : toISOStringDateOnly(rule.value);\n return defaultValueProcessorByRule(\n { ...rule, value },\n { ...opts, wrapValueWith: [datatype, ``] }\n );\n };\n\nconst presetToValueProcessorMap = {\n ansi: getDatetimeValueProcessorANSI,\n mssql: getDatetimeValueProcessorMSSQL,\n mysql: getDatetimeValueProcessorMySQL,\n oracle: getDatetimeValueProcessorOracle,\n postgresql: getDatetimeValueProcessorPostgreSQL,\n sqlite: getDatetimeValueProcessorANSI,\n} satisfies Record<SQLPreset, (apiFns: RQBDateTimeLibraryAPI) => ValueProcessorByRule>;\n\n/**\n * Generates a rule processor with date/time features for use by {@link @react-querybuilder/core!formatQuery formatQuery} with\n * the \"sql\" format.\n */\nexport const getDatetimeRuleProcessorSQL =\n (apiFns: RQBDateTimeLibraryAPI): RuleProcessor =>\n (rule, options) => {\n const opts = options ?? /* v8 ignore start -- @preserve */ {}; /* v8 ignore stop -- @preserve */\n const operator = mapSQLOperator(resolveDatetimeOperator(rule, opts));\n const operatorLowerCase = lc(operator);\n // v8 ignore next\n const {\n quoteFieldNamesWith = ['', ''] as [string, string],\n fieldIdentifierSeparator = '',\n context = {},\n } = opts;\n let finalValue = '';\n\n if (\n isNonDateValueSource(rule.valueSource) ||\n !processIsDateField(context.isDateField, rule, opts)\n ) {\n return defaultRuleProcessorSQL(rule, opts);\n }\n\n const valueProcessor = presetToValueProcessorMap[opts.preset!](apiFns);\n\n const quotedField = getQuotedFieldName(rule.field, {\n quoteFieldNamesWith,\n fieldIdentifierSeparator,\n });\n\n // SQL can emit \"live\" symbolic relative expressions, so relative values stay\n // symbolic by default. When `context.materializeRelativeDateTime` is set, resolve\n // them to concrete literals up front and let the standard literal path handle them.\n const ruleValue = context.materializeRelativeDateTime\n ? materializeRelativeValues(apiFns, rule.value, opts)\n : rule.value;\n\n // Relative date/time values are stored as objects. Intercept them before\n // `toArray` (which drops objects) and emit symbolic dialect-specific SQL.\n const rawValues = Array.isArray(ruleValue) ? ruleValue : [ruleValue];\n if (rawValues.some(isRelativeDateTimeValue)) {\n const exprFor = (v: unknown): string | undefined => {\n if (isRelativeDateTimeValue(v)) {\n return getRelativeDateTimeSQL(v, opts.preset!, opts.fieldData?.datatype);\n }\n const dateVal = apiFns.toDate(v as string | Date);\n if (!apiFns.isValid(dateVal)) return undefined;\n return valueProcessor(\n { field: rule.field, operator: '=', value: dateVal },\n { ...opts, context: { originalValue: v } }\n );\n };\n\n switch (operatorLowerCase) {\n case 'in':\n case 'not in': {\n const exprs = rawValues.map(exprFor).filter((e): e is string => e !== undefined);\n // v8 ignore next -- a relative operand always yields an expression\n if (exprs.length === 0) return '';\n finalValue = `(${exprs.join(', ')})`;\n break;\n }\n\n case 'between':\n case 'not between': {\n // Operand order is preserved — symbolic expressions can't be compared\n // at format time to auto-order them.\n const first = exprFor(rawValues[0]);\n const second = exprFor(rawValues[1]);\n if (first === undefined || second === undefined) return '';\n finalValue = `${first} and ${second}`;\n break;\n }\n\n default: {\n const expr = exprFor(rawValues[0]);\n // v8 ignore next -- a single relative operand always yields an expression\n if (expr === undefined) return '';\n finalValue = expr;\n }\n }\n\n return `${quotedField} ${operator} ${finalValue}`.trim();\n }\n\n const valueAsArray: string[] = toArray(ruleValue, { retainEmptyStrings: false });\n const valueAsDateArray = valueAsArray\n .map((v): [string, Date] => [v, apiFns.toDate(v)])\n .filter(v => apiFns.isValid(v[1]));\n\n switch (operatorLowerCase) {\n case 'in':\n case 'not in':\n {\n if (valueAsDateArray.length === 0) return '';\n finalValue = `(${valueAsDateArray\n .map(value =>\n valueProcessor(\n { field: rule.field, operator: '=', value: value[1] },\n { ...opts, context: { originalValue: value[0] } }\n )\n )\n .join(', ')})`;\n }\n break;\n\n case 'between':\n case 'not between':\n {\n if (valueAsDateArray.length < 2) return '';\n const [first, second] = valueAsDateArray;\n const orderedArray = apiFns.isBefore(first[1], second[1])\n ? [first, second]\n : [second, first];\n finalValue = orderedArray\n .map(([originalValue, value]) =>\n valueProcessor(\n { field: rule.field, operator: '=', value },\n { ...opts, context: { originalValue } }\n )\n )\n .join(' and ');\n }\n break;\n\n default: {\n const [originalValue, value] = valueAsDateArray[0] ?? ['', ''];\n finalValue = valueProcessor(\n { field: rule.field, operator: '=', value },\n { ...opts, context: { originalValue } }\n );\n }\n }\n\n return `${quotedField} ${operator} ${finalValue}`.trim();\n };\n","import type { RuleProcessor } from '@react-querybuilder/core';\nimport { defaultRuleProcessorTanStackDB } from '@react-querybuilder/core';\nimport type { RQBDateTimeLibraryAPI } from './types';\nimport { isNonDateValueSource, materializeForExport, processIsDateField } from './utils';\n\n/**\n * Generates a rule processor with date/time features for use by\n * {@link @react-querybuilder/core!formatQuery formatQuery} with the \"tanstack_db\" format.\n * Relative values are materialized and all date/time values are converted to `Date`\n * objects (TanStack DB collection filters compare against native `Date` values).\n */\nexport const getDatetimeRuleProcessorTanStackDB =\n (apiFns: RQBDateTimeLibraryAPI): RuleProcessor =>\n (rule, options) => {\n const opts = options ?? /* v8 ignore start -- @preserve */ {}; /* v8 ignore stop -- @preserve */\n const { context = {} } = opts;\n\n if (\n isNonDateValueSource(rule.valueSource) ||\n !processIsDateField(context.isDateField, rule, opts)\n ) {\n return defaultRuleProcessorTanStackDB(rule, opts);\n }\n\n const { operator, value } = materializeForExport(apiFns, rule, opts, true);\n return defaultRuleProcessorTanStackDB({ ...rule, operator, value }, opts);\n };\n"],"mappings":"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"}
@@ -1,219 +1,203 @@
1
- import { _ as RelativeDateTimeAnchor, a as RQBJsonLogicDateAfter, b as RelativeDateTimeValue, c as RQBJsonLogicDateIn, d as RQBJsonLogicDateNotOn, f as RQBJsonLogicDateOn, g as RQBJsonLogicDateTimeOperations, h as RQBJsonLogicDateRelative, i as RQBDateTimeLibraryAPI, l as RQBJsonLogicDateNotBetween, m as RQBJsonLogicDateOnOrBefore, n as IsDateFieldFunction, o as RQBJsonLogicDateBefore, p as RQBJsonLogicDateOnOrAfter, r as RQBDateTimeJsonLogic, s as RQBJsonLogicDateBetween, t as IsDateField, u as RQBJsonLogicDateNotIn, v as RelativeDateTimeTruncationUnit, y as RelativeDateTimeUnit } from "./types-Di8kFIXV.js";
1
+ import { _ as RelativeDateTimeAnchor, a as RQBJsonLogicDateAfter, b as RelativeDateTimeValue, c as RQBJsonLogicDateIn, d as RQBJsonLogicDateNotOn, f as RQBJsonLogicDateOn, g as RQBJsonLogicDateTimeOperations, h as RQBJsonLogicDateRelative, i as RQBDateTimeLibraryAPI, l as RQBJsonLogicDateNotBetween, m as RQBJsonLogicDateOnOrBefore, n as IsDateFieldFunction, o as RQBJsonLogicDateBefore, p as RQBJsonLogicDateOnOrAfter, r as RQBDateTimeJsonLogic, s as RQBJsonLogicDateBetween, t as IsDateField, u as RQBJsonLogicDateNotIn, v as RelativeDateTimeTruncationUnit, y as RelativeDateTimeUnit } from "./types-BKA1aoY6.js";
2
2
  import { ExportOperatorMap, RuleProcessor, ValueProcessorByRule } from "@react-querybuilder/core";
3
-
4
3
  //#region src/datetimeRuleProcessorJsonLogic.d.ts
5
4
  /**
6
- * Date/time rule processor for use by {@link @react-querybuilder/core!formatQuery formatQuery}
7
- * with the "jsonlogic" format.
8
- *
9
- * Note: Unlike other date/time rule processors from this library, this function does
10
- * not require a date/time library API. Instead, the date/time library API is used by
11
- * {@link getDatetimeJsonLogicOperations} during the evaluation process.
12
- */
5
+ * Date/time rule processor for use by {@link @react-querybuilder/core!formatQuery formatQuery}
6
+ * with the "jsonlogic" format.
7
+ *
8
+ * Note: Unlike other date/time rule processors from this library, this function does
9
+ * not require a date/time library API. Instead, the date/time library API is used by
10
+ * {@link getDatetimeJsonLogicOperations} during the evaluation process.
11
+ */
13
12
  declare const datetimeRuleProcessorJsonLogic: RuleProcessor;
14
13
  //#endregion
15
14
  //#region src/getDatetimeJsonLogicOperations.d.ts
16
15
  /**
17
- * Custom operations for use with JsonLogic objects generated by
18
- * {@link datetimeRuleProcessorJsonLogic}.
19
- */
16
+ * Custom operations for use with JsonLogic objects generated by
17
+ * {@link datetimeRuleProcessorJsonLogic}.
18
+ */
20
19
  declare const getDatetimeJsonLogicOperations: (apiFns: RQBDateTimeLibraryAPI) => RQBJsonLogicDateTimeOperations;
21
20
  //#endregion
22
21
  //#region src/getDatetimeRuleProcessorCEL.d.ts
23
22
  /**
24
- * Generates a rule processor with date/time features for use by
25
- * {@link @react-querybuilder/core!formatQuery formatQuery} with the "cel" format.
26
- */
23
+ * Generates a rule processor with date/time features for use by
24
+ * {@link @react-querybuilder/core!formatQuery formatQuery} with the "cel" format.
25
+ */
27
26
  declare const getDatetimeRuleProcessorCEL: (apiFns: RQBDateTimeLibraryAPI) => RuleProcessor;
28
27
  //#endregion
29
28
  //#region src/getDatetimeRuleProcessorCypher.d.ts
30
29
  /**
31
- * Generates a rule processor with date/time features for use by
32
- * {@link @react-querybuilder/core!formatQuery formatQuery} with the "cypher" or "gql" format.
33
- *
34
- * Supports:
35
- * - Standard comparison operators (`=`, `!=`, `<`, `>`, `<=`, `>=`)
36
- * - Range operators (between, notBetween, in, notIn)
37
- * - Duration math via custom operators: `olderThanDuration` and `withinDuration`
38
- * (e.g., value `"P30D"` → `datetime() - field > duration('P30D')`)
39
- */
30
+ * Generates a rule processor with date/time features for use by
31
+ * {@link @react-querybuilder/core!formatQuery formatQuery} with the "cypher" or "gql" format.
32
+ *
33
+ * Supports:
34
+ * - Standard comparison operators (`=`, `!=`, `<`, `>`, `<=`, `>=`)
35
+ * - Range operators (between, notBetween, in, notIn)
36
+ * - Duration math via custom operators: `olderThanDuration` and `withinDuration`
37
+ * (e.g., value `"P30D"` → `datetime() - field > duration('P30D')`)
38
+ */
40
39
  declare const getDatetimeRuleProcessorCypher: (apiFns: RQBDateTimeLibraryAPI) => RuleProcessor;
41
40
  //#endregion
42
41
  //#region src/getDatetimeRuleProcessorDrizzle.d.ts
43
42
  /**
44
- * Generates a rule processor with date/time features for use by
45
- * {@link @react-querybuilder/core!formatQuery formatQuery} with the "drizzle" format.
46
- * Relative values are materialized and all date/time values are converted to `Date`
47
- * objects (Drizzle column operators compare against native `Date` values).
48
- */
43
+ * Generates a rule processor with date/time features for use by
44
+ * {@link @react-querybuilder/core!formatQuery formatQuery} with the "drizzle" format.
45
+ * Relative values are materialized and all date/time values are converted to `Date`
46
+ * objects (Drizzle column operators compare against native `Date` values).
47
+ */
49
48
  declare const getDatetimeRuleProcessorDrizzle: (apiFns: RQBDateTimeLibraryAPI) => RuleProcessor;
50
49
  //#endregion
51
50
  //#region src/getDatetimeRuleProcessorElasticSearch.d.ts
52
51
  /**
53
- * Generates a rule processor with date/time features for use by
54
- * {@link @react-querybuilder/core!formatQuery formatQuery} with the "elasticsearch" format.
55
- * Relative values are materialized to concrete ISO 8601 strings (ElasticSearch has no
56
- * symbolic relative form); absolute values pass through.
57
- */
52
+ * Generates a rule processor with date/time features for use by
53
+ * {@link @react-querybuilder/core!formatQuery formatQuery} with the "elasticsearch" format.
54
+ * Relative values are materialized to concrete ISO 8601 strings (ElasticSearch has no
55
+ * symbolic relative form); absolute values pass through.
56
+ */
58
57
  declare const getDatetimeRuleProcessorElasticSearch: (apiFns: RQBDateTimeLibraryAPI) => RuleProcessor;
59
58
  //#endregion
60
59
  //#region src/getDatetimeRuleProcessorGremlin.d.ts
61
60
  /**
62
- * Generates a rule processor with date/time features for use by
63
- * {@link @react-querybuilder/core!formatQuery formatQuery} with the "gremlin" format.
64
- * Relative values are materialized to concrete ISO 8601 strings (Gremlin has no symbolic
65
- * relative form); absolute values pass through.
66
- */
61
+ * Generates a rule processor with date/time features for use by
62
+ * {@link @react-querybuilder/core!formatQuery formatQuery} with the "gremlin" format.
63
+ * Relative values are materialized to concrete ISO 8601 strings (Gremlin has no symbolic
64
+ * relative form); absolute values pass through.
65
+ */
67
66
  declare const getDatetimeRuleProcessorGremlin: (apiFns: RQBDateTimeLibraryAPI) => RuleProcessor;
68
67
  //#endregion
69
68
  //#region src/getDatetimeRuleProcessorJSONata.d.ts
70
69
  /**
71
- * Generates a rule processor with date/time features for use by
72
- * {@link @react-querybuilder/core!formatQuery formatQuery} with the "jsonata" format.
73
- */
70
+ * Generates a rule processor with date/time features for use by
71
+ * {@link @react-querybuilder/core!formatQuery formatQuery} with the "jsonata" format.
72
+ */
74
73
  declare const getDatetimeRuleProcessorJSONata: (apiFns: RQBDateTimeLibraryAPI) => RuleProcessor;
75
74
  //#endregion
76
75
  //#region src/getDatetimeRuleProcessorLDAP.d.ts
77
76
  /**
78
- * Generates a rule processor with date/time features for use by
79
- * {@link @react-querybuilder/core!formatQuery formatQuery} with the "ldap" format.
80
- * Relative values are materialized to concrete ISO 8601 strings (LDAP has no symbolic
81
- * relative form); absolute values pass through.
82
- */
77
+ * Generates a rule processor with date/time features for use by
78
+ * {@link @react-querybuilder/core!formatQuery formatQuery} with the "ldap" format.
79
+ * Relative values are materialized to concrete ISO 8601 strings (LDAP has no symbolic
80
+ * relative form); absolute values pass through.
81
+ */
83
82
  declare const getDatetimeRuleProcessorLDAP: (apiFns: RQBDateTimeLibraryAPI) => RuleProcessor;
84
83
  //#endregion
85
84
  //#region src/getDatetimeRuleProcessorMongoDB.d.ts
86
85
  /**
87
- * Generates a rule processor with date/time features for use by
88
- * {@link @react-querybuilder/core!formatQuery formatQuery} with the (deprecated) "mongodb"
89
- * format. Delegates to the "mongodb_query" date/time processor and serializes the result;
90
- * `Date` values serialize to ISO 8601 strings.
91
- */
86
+ * Generates a rule processor with date/time features for use by
87
+ * {@link @react-querybuilder/core!formatQuery formatQuery} with the (deprecated) "mongodb"
88
+ * format. Delegates to the "mongodb_query" date/time processor and serializes the result;
89
+ * `Date` values serialize to ISO 8601 strings.
90
+ */
92
91
  declare const getDatetimeRuleProcessorMongoDB: (apiFns: RQBDateTimeLibraryAPI) => RuleProcessor;
93
92
  //#endregion
94
93
  //#region src/getDatetimeRuleProcessorMongoDBQuery.d.ts
95
94
  /**
96
- * Generates a rule processor with date/time features for use by
97
- * {@link @react-querybuilder/core!formatQuery formatQuery} with the "mongodb_query" format.
98
- */
95
+ * Generates a rule processor with date/time features for use by
96
+ * {@link @react-querybuilder/core!formatQuery formatQuery} with the "mongodb_query" format.
97
+ */
99
98
  declare const getDatetimeRuleProcessorMongoDBQuery: (apiFns: RQBDateTimeLibraryAPI) => RuleProcessor;
100
99
  //#endregion
101
100
  //#region src/getDatetimeRuleProcessorNL.d.ts
102
101
  declare const defaultDateTimeNLOperatorMap: ExportOperatorMap;
103
102
  /**
104
- * Generates a value processor with date/time features for use by
105
- * {@link @react-querybuilder/core!formatQuery formatQuery} with the "natural_language" format.
106
- */
103
+ * Generates a value processor with date/time features for use by
104
+ * {@link @react-querybuilder/core!formatQuery formatQuery} with the "natural_language" format.
105
+ */
107
106
  declare const datetimeValueProcessorNL: ValueProcessorByRule;
108
107
  /**
109
- * Generates a rule processor with date/time features for use by {@link @react-querybuilder/core!formatQuery formatQuery} with
110
- * the "natural_language" format.
111
- */
108
+ * Generates a rule processor with date/time features for use by {@link @react-querybuilder/core!formatQuery formatQuery} with
109
+ * the "natural_language" format.
110
+ */
112
111
  declare const getDatetimeRuleProcessorNL: (apiFns: RQBDateTimeLibraryAPI) => RuleProcessor;
113
112
  //#endregion
114
113
  //#region src/getDatetimeRuleProcessorParameterized.d.ts
115
114
  /**
116
- * Generates a rule processor with date/time features for use by
117
- * {@link @react-querybuilder/core!formatQuery formatQuery} with the "parameterized" and
118
- * "parameterized_named" formats. Relative values are materialized to concrete ISO 8601
119
- * strings (these formats have no symbolic relative form); absolute values pass through.
120
- */
115
+ * Generates a rule processor with date/time features for use by
116
+ * {@link @react-querybuilder/core!formatQuery formatQuery} with the "parameterized" and
117
+ * "parameterized_named" formats. Relative values are materialized to concrete ISO 8601
118
+ * strings (these formats have no symbolic relative form); absolute values pass through.
119
+ */
121
120
  declare const getDatetimeRuleProcessorParameterized: (apiFns: RQBDateTimeLibraryAPI) => RuleProcessor;
122
121
  //#endregion
123
122
  //#region src/getDatetimeRuleProcessorPrisma.d.ts
124
123
  /**
125
- * Generates a rule processor with date/time features for use by
126
- * {@link @react-querybuilder/core!formatQuery formatQuery} with the "prisma" format.
127
- * Relative values are materialized and all date/time values are converted to `Date`
128
- * objects (Prisma's `where` clauses use native `Date` values for date columns).
129
- */
124
+ * Generates a rule processor with date/time features for use by
125
+ * {@link @react-querybuilder/core!formatQuery formatQuery} with the "prisma" format.
126
+ * Relative values are materialized and all date/time values are converted to `Date`
127
+ * objects (Prisma's `where` clauses use native `Date` values for date columns).
128
+ */
130
129
  declare const getDatetimeRuleProcessorPrisma: (apiFns: RQBDateTimeLibraryAPI) => RuleProcessor;
131
130
  //#endregion
132
131
  //#region src/getDatetimeRuleProcessorSequelize.d.ts
133
132
  /**
134
- * Generates a rule processor with date/time features for use by
135
- * {@link @react-querybuilder/core!formatQuery formatQuery} with the "sequelize" format.
136
- * Relative values are materialized and all date/time values are converted to `Date`
137
- * objects (Sequelize `where` clauses use native `Date` values for date columns).
138
- */
133
+ * Generates a rule processor with date/time features for use by
134
+ * {@link @react-querybuilder/core!formatQuery formatQuery} with the "sequelize" format.
135
+ * Relative values are materialized and all date/time values are converted to `Date`
136
+ * objects (Sequelize `where` clauses use native `Date` values for date columns).
137
+ */
139
138
  declare const getDatetimeRuleProcessorSequelize: (apiFns: RQBDateTimeLibraryAPI) => RuleProcessor;
140
139
  //#endregion
141
140
  //#region src/getDatetimeRuleProcessorSPARQL.d.ts
142
141
  /**
143
- * Generates a rule processor with date/time features for use by
144
- * {@link @react-querybuilder/core!formatQuery formatQuery} with the "sparql" format.
145
- *
146
- * Supports:
147
- * - Standard comparison operators (`=`, `!=`, `<`, `>`, `<=`, `>=`)
148
- * - Range operators (between, notBetween, in, notIn)
149
- * - Duration math via custom operators: `olderThanDuration` and `withinDuration`
150
- * (e.g., value `"P30D"` → `NOW() - ?field > "P30D"^^xsd:duration`)
151
- */
142
+ * Generates a rule processor with date/time features for use by
143
+ * {@link @react-querybuilder/core!formatQuery formatQuery} with the "sparql" format.
144
+ *
145
+ * Supports:
146
+ * - Standard comparison operators (`=`, `!=`, `<`, `>`, `<=`, `>=`)
147
+ * - Range operators (between, notBetween, in, notIn)
148
+ * - Duration math via custom operators: `olderThanDuration` and `withinDuration`
149
+ * (e.g., value `"P30D"` → `NOW() - ?field > "P30D"^^xsd:duration`)
150
+ */
152
151
  declare const getDatetimeRuleProcessorSPARQL: (apiFns: RQBDateTimeLibraryAPI) => RuleProcessor;
153
152
  //#endregion
154
153
  //#region src/getDatetimeRuleProcessorSpEL.d.ts
155
154
  /**
156
- * Generates a rule processor with date/time features for use by
157
- * {@link @react-querybuilder/core!formatQuery formatQuery} with the "spel" format.
158
- * Relative values are materialized to concrete ISO 8601 strings (SpEL has no symbolic
159
- * relative form); absolute values pass through.
160
- */
155
+ * Generates a rule processor with date/time features for use by
156
+ * {@link @react-querybuilder/core!formatQuery formatQuery} with the "spel" format.
157
+ * Relative values are materialized to concrete ISO 8601 strings (SpEL has no symbolic
158
+ * relative form); absolute values pass through.
159
+ */
161
160
  declare const getDatetimeRuleProcessorSpEL: (apiFns: RQBDateTimeLibraryAPI) => RuleProcessor;
162
161
  //#endregion
163
162
  //#region src/getDatetimeRuleProcessorSQL.d.ts
164
163
  /**
165
- * Generates a value processor with date/time features for use by
166
- * {@link @react-querybuilder/core!formatQuery formatQuery} with the "sql" format and "ansi" preset.
167
- */
168
- declare const getDatetimeValueProcessorANSI: ({
169
- toISOStringDateOnly,
170
- toISOString
171
- }: RQBDateTimeLibraryAPI) => ValueProcessorByRule;
172
- /**
173
- * Generates a value processor with date/time features for use by {@link @react-querybuilder/core!formatQuery formatQuery} with
174
- * the "sql" format and "mssql" preset.
175
- */
176
- declare const getDatetimeValueProcessorMSSQL: ({
177
- toISOStringDateOnly,
178
- toISOString
179
- }: RQBDateTimeLibraryAPI) => ValueProcessorByRule;
180
- /**
181
- * Generates a value processor with date/time features for use by {@link @react-querybuilder/core!formatQuery formatQuery} with
182
- * the "sql" format and "mysql" preset.
183
- */
184
- declare const getDatetimeValueProcessorMySQL: ({
185
- toISOStringDateOnly,
186
- toISOString
187
- }: RQBDateTimeLibraryAPI) => ValueProcessorByRule;
188
- /**
189
- * Generates a value processor with date/time features for use by {@link @react-querybuilder/core!formatQuery formatQuery} with
190
- * the "sql" format and "oracle" preset.
191
- */
192
- declare const getDatetimeValueProcessorOracle: ({
193
- toISOStringDateOnly,
194
- toISOString
195
- }: RQBDateTimeLibraryAPI) => ValueProcessorByRule;
196
- /**
197
- * Generates a value processor with date/time features for use by {@link @react-querybuilder/core!formatQuery formatQuery} with
198
- * the "sql" format and "postgresql" preset.
199
- */
200
- declare const getDatetimeValueProcessorPostgreSQL: ({
201
- toISOStringDateOnly,
202
- toISOString
203
- }: RQBDateTimeLibraryAPI) => ValueProcessorByRule;
204
- /**
205
- * Generates a rule processor with date/time features for use by {@link @react-querybuilder/core!formatQuery formatQuery} with
206
- * the "sql" format.
207
- */
164
+ * Generates a value processor with date/time features for use by
165
+ * {@link @react-querybuilder/core!formatQuery formatQuery} with the "sql" format and "ansi" preset.
166
+ */
167
+ declare const getDatetimeValueProcessorANSI: ({ toISOStringDateOnly, toISOString }: RQBDateTimeLibraryAPI) => ValueProcessorByRule;
168
+ /**
169
+ * Generates a value processor with date/time features for use by {@link @react-querybuilder/core!formatQuery formatQuery} with
170
+ * the "sql" format and "mssql" preset.
171
+ */
172
+ declare const getDatetimeValueProcessorMSSQL: ({ toISOStringDateOnly, toISOString }: RQBDateTimeLibraryAPI) => ValueProcessorByRule;
173
+ /**
174
+ * Generates a value processor with date/time features for use by {@link @react-querybuilder/core!formatQuery formatQuery} with
175
+ * the "sql" format and "mysql" preset.
176
+ */
177
+ declare const getDatetimeValueProcessorMySQL: ({ toISOStringDateOnly, toISOString }: RQBDateTimeLibraryAPI) => ValueProcessorByRule;
178
+ /**
179
+ * Generates a value processor with date/time features for use by {@link @react-querybuilder/core!formatQuery formatQuery} with
180
+ * the "sql" format and "oracle" preset.
181
+ */
182
+ declare const getDatetimeValueProcessorOracle: ({ toISOStringDateOnly, toISOString }: RQBDateTimeLibraryAPI) => ValueProcessorByRule;
183
+ /**
184
+ * Generates a value processor with date/time features for use by {@link @react-querybuilder/core!formatQuery formatQuery} with
185
+ * the "sql" format and "postgresql" preset.
186
+ */
187
+ declare const getDatetimeValueProcessorPostgreSQL: ({ toISOStringDateOnly, toISOString }: RQBDateTimeLibraryAPI) => ValueProcessorByRule;
188
+ /**
189
+ * Generates a rule processor with date/time features for use by {@link @react-querybuilder/core!formatQuery formatQuery} with
190
+ * the "sql" format.
191
+ */
208
192
  declare const getDatetimeRuleProcessorSQL: (apiFns: RQBDateTimeLibraryAPI) => RuleProcessor;
209
193
  //#endregion
210
194
  //#region src/getDatetimeRuleProcessorTanStackDB.d.ts
211
195
  /**
212
- * Generates a rule processor with date/time features for use by
213
- * {@link @react-querybuilder/core!formatQuery formatQuery} with the "tanstack_db" format.
214
- * Relative values are materialized and all date/time values are converted to `Date`
215
- * objects (TanStack DB collection filters compare against native `Date` values).
216
- */
196
+ * Generates a rule processor with date/time features for use by
197
+ * {@link @react-querybuilder/core!formatQuery formatQuery} with the "tanstack_db" format.
198
+ * Relative values are materialized and all date/time values are converted to `Date`
199
+ * objects (TanStack DB collection filters compare against native `Date` values).
200
+ */
217
201
  declare const getDatetimeRuleProcessorTanStackDB: (apiFns: RQBDateTimeLibraryAPI) => RuleProcessor;
218
202
  //#endregion
219
203
  export { IsDateField, IsDateFieldFunction, RQBDateTimeJsonLogic, RQBDateTimeLibraryAPI, RQBJsonLogicDateAfter, RQBJsonLogicDateBefore, RQBJsonLogicDateBetween, RQBJsonLogicDateIn, RQBJsonLogicDateNotBetween, RQBJsonLogicDateNotIn, RQBJsonLogicDateNotOn, RQBJsonLogicDateOn, RQBJsonLogicDateOnOrAfter, RQBJsonLogicDateOnOrBefore, RQBJsonLogicDateRelative, RQBJsonLogicDateTimeOperations, RelativeDateTimeAnchor, RelativeDateTimeTruncationUnit, RelativeDateTimeUnit, RelativeDateTimeValue, datetimeRuleProcessorJsonLogic, datetimeValueProcessorNL, defaultDateTimeNLOperatorMap, getDatetimeJsonLogicOperations, getDatetimeRuleProcessorCEL, getDatetimeRuleProcessorCypher, getDatetimeRuleProcessorDrizzle, getDatetimeRuleProcessorElasticSearch, getDatetimeRuleProcessorGremlin, getDatetimeRuleProcessorJSONata, getDatetimeRuleProcessorLDAP, getDatetimeRuleProcessorMongoDB, getDatetimeRuleProcessorMongoDBQuery, getDatetimeRuleProcessorNL, getDatetimeRuleProcessorParameterized, getDatetimeRuleProcessorPrisma, getDatetimeRuleProcessorSPARQL, getDatetimeRuleProcessorSQL, getDatetimeRuleProcessorSequelize, getDatetimeRuleProcessorSpEL, getDatetimeRuleProcessorTanStackDB, getDatetimeValueProcessorANSI, getDatetimeValueProcessorMSSQL, getDatetimeValueProcessorMySQL, getDatetimeValueProcessorOracle, getDatetimeValueProcessorPostgreSQL };