@react-querybuilder/datetime 8.20.1 → 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 (150) hide show
  1. package/README.md +9 -3
  2. package/dist/cjs/{getDatetimeRuleProcessorTanStackDB-CL79A1_x.js → getDatetimeRuleProcessorTanStackDB-CDEB9coD.js} +88 -218
  3. package/dist/cjs/getDatetimeRuleProcessorTanStackDB-CDEB9coD.js.map +1 -0
  4. package/dist/cjs/getDatetimeRuleProcessorTanStackDB-X6tZv7yV.js +2 -0
  5. package/dist/cjs/getDatetimeRuleProcessorTanStackDB-X6tZv7yV.js.map +1 -0
  6. package/dist/cjs/react-querybuilder_datetime.cjs.development.d.ts +124 -260
  7. package/dist/cjs/react-querybuilder_datetime.cjs.development.date-fns.d.ts +50 -51
  8. package/dist/cjs/react-querybuilder_datetime.cjs.development.date-fns.js +3 -2
  9. package/dist/cjs/react-querybuilder_datetime.cjs.development.date-fns.js.map +1 -1
  10. package/dist/cjs/react-querybuilder_datetime.cjs.development.dayjs.d.ts +50 -51
  11. package/dist/cjs/react-querybuilder_datetime.cjs.development.dayjs.js +53 -26
  12. package/dist/cjs/react-querybuilder_datetime.cjs.development.dayjs.js.map +1 -1
  13. package/dist/cjs/react-querybuilder_datetime.cjs.development.js +11 -467
  14. package/dist/cjs/react-querybuilder_datetime.cjs.development.js.map +1 -1
  15. package/dist/cjs/react-querybuilder_datetime.cjs.development.jsdate.d.ts +53 -54
  16. package/dist/cjs/react-querybuilder_datetime.cjs.development.jsdate.js +26 -144
  17. package/dist/cjs/react-querybuilder_datetime.cjs.development.jsdate.js.map +1 -1
  18. package/dist/cjs/react-querybuilder_datetime.cjs.development.luxon.d.ts +50 -51
  19. package/dist/cjs/react-querybuilder_datetime.cjs.development.luxon.js +3 -2
  20. package/dist/cjs/react-querybuilder_datetime.cjs.development.luxon.js.map +1 -1
  21. package/dist/cjs/react-querybuilder_datetime.cjs.development.ui.d.ts +214 -0
  22. package/dist/cjs/react-querybuilder_datetime.cjs.development.ui.js +466 -0
  23. package/dist/cjs/react-querybuilder_datetime.cjs.development.ui.js.map +1 -0
  24. package/dist/cjs/react-querybuilder_datetime.cjs.production.d.ts +124 -260
  25. package/dist/cjs/react-querybuilder_datetime.cjs.production.date-fns.d.ts +50 -51
  26. package/dist/cjs/react-querybuilder_datetime.cjs.production.date-fns.js +1 -1
  27. package/dist/cjs/react-querybuilder_datetime.cjs.production.date-fns.js.map +1 -1
  28. package/dist/cjs/react-querybuilder_datetime.cjs.production.dayjs.d.ts +50 -51
  29. package/dist/cjs/react-querybuilder_datetime.cjs.production.dayjs.js +1 -1
  30. package/dist/cjs/react-querybuilder_datetime.cjs.production.dayjs.js.map +1 -1
  31. package/dist/cjs/react-querybuilder_datetime.cjs.production.js +1 -1
  32. package/dist/cjs/react-querybuilder_datetime.cjs.production.js.map +1 -1
  33. package/dist/cjs/react-querybuilder_datetime.cjs.production.jsdate.d.ts +53 -54
  34. package/dist/cjs/react-querybuilder_datetime.cjs.production.jsdate.js +1 -1
  35. package/dist/cjs/react-querybuilder_datetime.cjs.production.jsdate.js.map +1 -1
  36. package/dist/cjs/react-querybuilder_datetime.cjs.production.luxon.d.ts +50 -51
  37. package/dist/cjs/react-querybuilder_datetime.cjs.production.luxon.js +1 -1
  38. package/dist/cjs/react-querybuilder_datetime.cjs.production.luxon.js.map +1 -1
  39. package/dist/cjs/react-querybuilder_datetime.cjs.production.ui.d.ts +214 -0
  40. package/dist/cjs/react-querybuilder_datetime.cjs.production.ui.js +2 -0
  41. package/dist/cjs/react-querybuilder_datetime.cjs.production.ui.js.map +1 -0
  42. package/dist/cjs/rolldown-runtime-CMqjfN_6.js +1 -0
  43. package/dist/cjs/rolldown-runtime-D6vf50IK.js +28 -0
  44. package/dist/cjs/rqbDateTimeLibraryAPI.jsdate-BuSiVdk7.js +2 -0
  45. package/dist/cjs/rqbDateTimeLibraryAPI.jsdate-BuSiVdk7.js.map +1 -0
  46. package/dist/cjs/rqbDateTimeLibraryAPI.jsdate-C3jJb6ip.js +128 -0
  47. package/dist/cjs/rqbDateTimeLibraryAPI.jsdate-C3jJb6ip.js.map +1 -0
  48. package/dist/cjs/types-BKA1aoY6.d.ts +174 -0
  49. package/dist/cjs/ui.d.ts +1 -0
  50. package/dist/cjs/ui.js +6 -0
  51. package/dist/cjs/utils-DdBYGWHZ.js +2 -0
  52. package/dist/cjs/utils-DdBYGWHZ.js.map +1 -0
  53. package/dist/cjs/utils-_X97pUtk.js +166 -0
  54. package/dist/cjs/utils-_X97pUtk.js.map +1 -0
  55. package/dist/getDatetimeRuleProcessorTanStackDB-6K1DsuEV.mjs +2 -0
  56. package/dist/getDatetimeRuleProcessorTanStackDB-6K1DsuEV.mjs.map +1 -0
  57. package/dist/{getDatetimeRuleProcessorTanStackDB-BL8mbdbl.js → getDatetimeRuleProcessorTanStackDB-BrSD2e9G.js} +24 -198
  58. package/dist/getDatetimeRuleProcessorTanStackDB-BrSD2e9G.js.map +1 -0
  59. package/dist/{getDatetimeRuleProcessorTanStackDB-BcOC-o2A.mjs → getDatetimeRuleProcessorTanStackDB-DR8aYrUa.mjs} +24 -124
  60. package/dist/getDatetimeRuleProcessorTanStackDB-DR8aYrUa.mjs.map +1 -0
  61. package/dist/objectSpread2-MqoZ2hSz.js +187 -0
  62. package/dist/objectSpread2-MqoZ2hSz.js.map +1 -0
  63. package/dist/react-querybuilder_datetime.d.mts +124 -260
  64. package/dist/react-querybuilder_datetime.date-fns.d.mts +50 -51
  65. package/dist/react-querybuilder_datetime.date-fns.mjs +2 -1
  66. package/dist/react-querybuilder_datetime.date-fns.mjs.map +1 -1
  67. package/dist/react-querybuilder_datetime.dayjs.d.mts +50 -51
  68. package/dist/react-querybuilder_datetime.dayjs.mjs +27 -2
  69. package/dist/react-querybuilder_datetime.dayjs.mjs.map +1 -1
  70. package/dist/react-querybuilder_datetime.jsdate.d.mts +53 -54
  71. package/dist/react-querybuilder_datetime.jsdate.mjs +2 -120
  72. package/dist/react-querybuilder_datetime.jsdate.mjs.map +1 -1
  73. package/dist/react-querybuilder_datetime.legacy-esm.d.ts +124 -260
  74. package/dist/react-querybuilder_datetime.legacy-esm.date-fns.d.ts +50 -51
  75. package/dist/react-querybuilder_datetime.legacy-esm.date-fns.js +2 -1
  76. package/dist/react-querybuilder_datetime.legacy-esm.date-fns.js.map +1 -1
  77. package/dist/react-querybuilder_datetime.legacy-esm.dayjs.d.ts +50 -51
  78. package/dist/react-querybuilder_datetime.legacy-esm.dayjs.js +27 -2
  79. package/dist/react-querybuilder_datetime.legacy-esm.dayjs.js.map +1 -1
  80. package/dist/react-querybuilder_datetime.legacy-esm.js +5 -449
  81. package/dist/react-querybuilder_datetime.legacy-esm.js.map +1 -1
  82. package/dist/react-querybuilder_datetime.legacy-esm.jsdate.d.ts +53 -54
  83. package/dist/react-querybuilder_datetime.legacy-esm.jsdate.js +2 -120
  84. package/dist/react-querybuilder_datetime.legacy-esm.jsdate.js.map +1 -1
  85. package/dist/react-querybuilder_datetime.legacy-esm.luxon.d.ts +50 -51
  86. package/dist/react-querybuilder_datetime.legacy-esm.luxon.js +2 -1
  87. package/dist/react-querybuilder_datetime.legacy-esm.luxon.js.map +1 -1
  88. package/dist/react-querybuilder_datetime.legacy-esm.ui.d.ts +214 -0
  89. package/dist/react-querybuilder_datetime.legacy-esm.ui.js +453 -0
  90. package/dist/react-querybuilder_datetime.legacy-esm.ui.js.map +1 -0
  91. package/dist/react-querybuilder_datetime.luxon.d.mts +50 -51
  92. package/dist/react-querybuilder_datetime.luxon.mjs +2 -1
  93. package/dist/react-querybuilder_datetime.luxon.mjs.map +1 -1
  94. package/dist/react-querybuilder_datetime.mjs +5 -446
  95. package/dist/react-querybuilder_datetime.mjs.map +1 -1
  96. package/dist/react-querybuilder_datetime.production.d.mts +124 -260
  97. package/dist/react-querybuilder_datetime.production.date-fns.d.mts +50 -51
  98. package/dist/react-querybuilder_datetime.production.date-fns.mjs +1 -1
  99. package/dist/react-querybuilder_datetime.production.date-fns.mjs.map +1 -1
  100. package/dist/react-querybuilder_datetime.production.dayjs.d.mts +50 -51
  101. package/dist/react-querybuilder_datetime.production.dayjs.mjs +1 -1
  102. package/dist/react-querybuilder_datetime.production.dayjs.mjs.map +1 -1
  103. package/dist/react-querybuilder_datetime.production.jsdate.d.mts +53 -54
  104. package/dist/react-querybuilder_datetime.production.jsdate.mjs +1 -1
  105. package/dist/react-querybuilder_datetime.production.jsdate.mjs.map +1 -1
  106. package/dist/react-querybuilder_datetime.production.luxon.d.mts +50 -51
  107. package/dist/react-querybuilder_datetime.production.luxon.mjs +1 -1
  108. package/dist/react-querybuilder_datetime.production.luxon.mjs.map +1 -1
  109. package/dist/react-querybuilder_datetime.production.mjs +1 -1
  110. package/dist/react-querybuilder_datetime.production.mjs.map +1 -1
  111. package/dist/react-querybuilder_datetime.production.ui.d.mts +214 -0
  112. package/dist/react-querybuilder_datetime.production.ui.mjs +2 -0
  113. package/dist/react-querybuilder_datetime.production.ui.mjs.map +1 -0
  114. package/dist/react-querybuilder_datetime.ui.d.mts +214 -0
  115. package/dist/react-querybuilder_datetime.ui.mjs +450 -0
  116. package/dist/react-querybuilder_datetime.ui.mjs.map +1 -0
  117. package/dist/rqbDateTimeLibraryAPI.jsdate-COp9qTw_.js +123 -0
  118. package/dist/rqbDateTimeLibraryAPI.jsdate-COp9qTw_.js.map +1 -0
  119. package/dist/rqbDateTimeLibraryAPI.jsdate-DxBmxW2C.mjs +2 -0
  120. package/dist/rqbDateTimeLibraryAPI.jsdate-DxBmxW2C.mjs.map +1 -0
  121. package/dist/rqbDateTimeLibraryAPI.jsdate-WHnzblie.mjs +123 -0
  122. package/dist/rqbDateTimeLibraryAPI.jsdate-WHnzblie.mjs.map +1 -0
  123. package/dist/types-BKA1aoY6.d.mts +174 -0
  124. package/dist/types-BKA1aoY6.d.ts +174 -0
  125. package/dist/utils-BAgUBdyf.mjs +113 -0
  126. package/dist/utils-BAgUBdyf.mjs.map +1 -0
  127. package/dist/utils-DA8aluCt.mjs +2 -0
  128. package/dist/utils-DA8aluCt.mjs.map +1 -0
  129. package/package.json +36 -17
  130. package/ui/package.json +4 -0
  131. package/dist/cjs/getDatetimeRuleProcessorTanStackDB-CL79A1_x.js.map +0 -1
  132. package/dist/cjs/getDatetimeRuleProcessorTanStackDB-DgUg_arY.js +0 -2
  133. package/dist/cjs/getDatetimeRuleProcessorTanStackDB-DgUg_arY.js.map +0 -1
  134. package/dist/cjs/rqbDateTimeLibraryAPI.dayjs-BfILPx88.js +0 -2
  135. package/dist/cjs/rqbDateTimeLibraryAPI.dayjs-BfILPx88.js.map +0 -1
  136. package/dist/cjs/rqbDateTimeLibraryAPI.dayjs-CzLh_zi9.js +0 -63
  137. package/dist/cjs/rqbDateTimeLibraryAPI.dayjs-CzLh_zi9.js.map +0 -1
  138. package/dist/cjs/types-XYMw0jFT.d.ts +0 -265
  139. package/dist/getDatetimeRuleProcessorTanStackDB-BL8mbdbl.js.map +0 -1
  140. package/dist/getDatetimeRuleProcessorTanStackDB-BcOC-o2A.mjs.map +0 -1
  141. package/dist/getDatetimeRuleProcessorTanStackDB-Dloxv6k2.mjs +0 -2
  142. package/dist/getDatetimeRuleProcessorTanStackDB-Dloxv6k2.mjs.map +0 -1
  143. package/dist/rqbDateTimeLibraryAPI.dayjs-BW7faYFD.mjs +0 -29
  144. package/dist/rqbDateTimeLibraryAPI.dayjs-BW7faYFD.mjs.map +0 -1
  145. package/dist/rqbDateTimeLibraryAPI.dayjs-BoX90aqZ.mjs +0 -2
  146. package/dist/rqbDateTimeLibraryAPI.dayjs-BoX90aqZ.mjs.map +0 -1
  147. package/dist/rqbDateTimeLibraryAPI.dayjs-Da4VXvFM.js +0 -29
  148. package/dist/rqbDateTimeLibraryAPI.dayjs-Da4VXvFM.js.map +0 -1
  149. package/dist/types-CdjHqQ0k.d.mts +0 -265
  150. package/dist/types-CdjHqQ0k.d.ts +0 -265
@@ -0,0 +1 @@
1
+ {"version":3,"file":"getDatetimeRuleProcessorTanStackDB-6K1DsuEV.mjs","names":["shouldNegate","shouldNegate","shouldNegate"],"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,121 +1,5 @@
1
- import { defaultOperatorProcessorNL, defaultRuleProcessorCEL, defaultRuleProcessorCypher, defaultRuleProcessorDrizzle, defaultRuleProcessorElasticSearch, defaultRuleProcessorGremlin, defaultRuleProcessorJSONata, defaultRuleProcessorLDAP, defaultRuleProcessorMongoDBQuery, defaultRuleProcessorNL, defaultRuleProcessorParameterized, defaultRuleProcessorPrisma, defaultRuleProcessorSPARQL, defaultRuleProcessorSQL, defaultRuleProcessorSequelize, defaultRuleProcessorSpEL, defaultRuleProcessorTanStackDB, defaultValueProcessorByRule, getQuotedFieldName, lc, mapSQLOperator, mongoOperators, normalizeConstituentWordOrder, nullOrUndefinedOrEmpty, sparqlVar, toArray } from "react-querybuilder";
2
- //#region src/utils.ts
3
- const isISOStringDateOnly = (date) => typeof date === "string" && /^\d{4}-\d{2}-\d{2}$/.test(date);
4
- /**
5
- * Type guard for {@link RelativeDateTimeValue}. Relative values are stored as objects
6
- * (distinguishing them from the ISO 8601 strings used for absolute date/time values).
7
- */
8
- const isRelativeDateTimeValue = (value) => typeof value === "object" && value !== null && value.mode === "relative" && typeof value.anchor === "string";
9
- const anchorRegExp = /^(start|end)Of(Day|Week|Month|Year)$/;
10
- /**
11
- * Resolves a {@link RelativeDateTimeValue} into a concrete `Date` using the given
12
- * date library API. The anchor is applied relative to `base` (defaulting to now),
13
- * then the signed offset is added.
14
- */
15
- const resolveRelativeDateTime = (apiFns, value, base = /* @__PURE__ */ new Date()) => {
16
- let result = base;
17
- if (value.anchor !== "now") {
18
- const match = anchorRegExp.exec(value.anchor);
19
- // v8 ignore next -- guarded by the RelativeDateTimeAnchor type
20
- if (match) {
21
- const unit = match[2].toLowerCase();
22
- result = match[1] === "start" ? apiFns.startOf(result, unit) : apiFns.endOf(result, unit);
23
- }
24
- }
25
- if (value.offset) result = apiFns.add(result, value.offset, value.unit);
26
- return result;
27
- };
28
- /**
29
- * Whether a `datatype` represents a date-only (no time component) type, e.g. `date`
30
- * but not `datetime`/`datetimeoffset`/`timestamp`. Used to choose the precision when
31
- * materializing a relative value to an ISO 8601 string.
32
- */
33
- const isDateOnlyDatatype = (datatype) => /^date\b/i.test(datatype);
34
- /**
35
- * Replaces any {@link RelativeDateTimeValue} in `value` (or in each element, if `value`
36
- * is an array) with a concrete ISO 8601 string, resolved via
37
- * {@link resolveRelativeDateTime}. The "now" reference can be pinned with
38
- * `opts.context.relativeDateTimeBase` for deterministic output; precision (date-only vs
39
- * full) follows the field's `datatype`. Non-relative values pass through unchanged.
40
- */
41
- const materializeRelativeValues = (apiFns, value, opts) => {
42
- var _opts$context, _opts$fieldData;
43
- const base = opts === null || opts === void 0 || (_opts$context = opts.context) === null || _opts$context === void 0 ? void 0 : _opts$context.relativeDateTimeBase;
44
- const dateOnly = isDateOnlyDatatype(opts === null || opts === void 0 || (_opts$fieldData = opts.fieldData) === null || _opts$fieldData === void 0 ? void 0 : _opts$fieldData.datatype);
45
- const conv = (v) => {
46
- if (!isRelativeDateTimeValue(v)) return v;
47
- const resolved = resolveRelativeDateTime(apiFns, v, base);
48
- return dateOnly ? apiFns.toISOStringDateOnly(resolved) : apiFns.toISOString(resolved);
49
- };
50
- return Array.isArray(value) ? value.map(conv) : conv(value);
51
- };
52
- /**
53
- * Resolves a rule's operator for export, applying any `context.relativeOperatorMap`
54
- * entry. Operator-driven mode controllers (see `createOperatorModeController`) use
55
- * dedicated operator names to signal relative mode; this maps those names to the real
56
- * comparison operator at format time. Operators absent from the map pass through unchanged.
57
- */
58
- const resolveDatetimeOperator = (...[rule, opts]) => {
59
- var _rule$operator, _opts$context2;
60
- return (_rule$operator = opts === null || opts === void 0 || (_opts$context2 = opts.context) === null || _opts$context2 === void 0 || (_opts$context2 = _opts$context2.relativeOperatorMap) === null || _opts$context2 === void 0 ? void 0 : _opts$context2[rule.operator]) !== null && _rule$operator !== void 0 ? _rule$operator : rule.operator;
61
- };
62
- /**
63
- * Prepares a date/time rule for delegation to a non-symbolic default rule processor
64
- * (e.g. "parameterized", "spel", "ldap", "gremlin", "prisma", "sequelize", "drizzle",
65
- * "tanstack_db"). Relative values are materialized to concrete dates (these formats have
66
- * no symbolic relative form), and `between`/`notBetween` operands are ordered
67
- * chronologically (defaults can't reorder non-numeric date operands). When `asDate` is
68
- * set, each valid value is converted to a `Date` (for object-based formats); otherwise
69
- * the materialized ISO 8601 strings are passed through. The resolved `operator` (after
70
- * any `relativeOperatorMap` mapping) is returned alongside the prepared `value`.
71
- */
72
- const materializeForExport = (apiFns, rule, opts, asDate = false) => {
73
- const operator = resolveDatetimeOperator(rule, opts);
74
- const materialized = materializeRelativeValues(apiFns, rule.value, opts);
75
- let prepared = materialized;
76
- if (Array.isArray(materialized) && materialized.length >= 2) {
77
- const opLC = operator.toLowerCase();
78
- if (opLC === "between" || opLC === "notbetween") {
79
- const first = apiFns.toDate(materialized[0]);
80
- const second = apiFns.toDate(materialized[1]);
81
- if (apiFns.isValid(first) && apiFns.isValid(second) && !apiFns.isBefore(first, second)) prepared = [
82
- materialized[1],
83
- materialized[0],
84
- ...materialized.slice(2)
85
- ];
86
- }
87
- }
88
- if (!asDate) return {
89
- operator,
90
- value: prepared
91
- };
92
- const toDateVal = (v) => {
93
- const d = apiFns.toDate(v);
94
- return apiFns.isValid(d) ? d : v;
95
- };
96
- return {
97
- operator,
98
- value: Array.isArray(prepared) ? prepared.map(toDateVal) : toDateVal(prepared)
99
- };
100
- };
101
- const defaultIsDateField = (...[rule, opts]) => {
102
- var _opts$fieldData2;
103
- return rule.operator !== "contains" && rule.operator !== "beginsWith" && rule.operator !== "endsWith" && rule.operator !== "doesNotContain" && rule.operator !== "doesNotBeginWith" && rule.operator !== "doesNotEndWith" && rule.operator !== "null" && rule.operator !== "notNull" && /^(?:date|datetime|datetimeoffset|timestamp)\b/i.test(opts === null || opts === void 0 || (_opts$fieldData2 = opts.fieldData) === null || _opts$fieldData2 === void 0 ? void 0 : _opts$fieldData2.datatype);
104
- };
105
- const processIsDateField = (isDateField, ...[rule, opts]) => {
106
- if (typeof isDateField === "boolean") return isDateField;
107
- if (typeof isDateField === "function") return isDateField(rule, opts);
108
- if (Array.isArray(isDateField)) return isDateField.some((condition) => Object.entries(condition).every(([key, value]) => {
109
- var _opts$fieldData3;
110
- return (opts === null || opts === void 0 || (_opts$fieldData3 = opts.fieldData) === null || _opts$fieldData3 === void 0 ? void 0 : _opts$fieldData3[key]) === value;
111
- }));
112
- if (typeof isDateField === "object") return Object.entries(isDateField).every(([key, value]) => {
113
- var _opts$fieldData4;
114
- return (opts === null || opts === void 0 || (_opts$fieldData4 = opts.fieldData) === null || _opts$fieldData4 === void 0 ? void 0 : _opts$fieldData4[key]) === value;
115
- });
116
- return defaultIsDateField(rule, opts);
117
- };
118
- //#endregion
1
+ import { a as isRelativeDateTimeValue, c as processIsDateField, i as isNonDateValueSource, l as resolveDatetimeOperator, o as materializeForExport, r as isISOStringDateOnly, s as materializeRelativeValues, t as _objectSpread2, u as resolveRelativeDateTime } from "./objectSpread2-MqoZ2hSz.js";
2
+ import { defaultOperatorProcessorNL, defaultRuleProcessorCEL, defaultRuleProcessorCypher, defaultRuleProcessorDrizzle, defaultRuleProcessorElasticSearch, defaultRuleProcessorGremlin, defaultRuleProcessorJSONata, defaultRuleProcessorLDAP, defaultRuleProcessorMongoDBQuery, defaultRuleProcessorNL, defaultRuleProcessorParameterized, defaultRuleProcessorPrisma, defaultRuleProcessorSPARQL, defaultRuleProcessorSQL, defaultRuleProcessorSequelize, defaultRuleProcessorSpEL, defaultRuleProcessorTanStackDB, defaultValueProcessorByRule, getQuotedFieldName, lc, mapSQLOperator, mongoOperators, normalizeConstituentWordOrder, nullOrUndefinedOrEmpty, sparqlVar, toArray } from "@react-querybuilder/core";
119
3
  //#region src/getDatetimeJsonLogicOperations.ts
120
4
  /**
121
5
  * Custom operations for use with JsonLogic objects generated by
@@ -155,7 +39,7 @@ const shouldNegate$3 = (op) => /^(does)?not/i.test(op);
155
39
  const getDatetimeRuleProcessorCEL = (apiFns) => (rule, options) => {
156
40
  const opts = options !== null && options !== void 0 ? options : /* v8 ignore start -- @preserve */ {};
157
41
  const { context = {} } = opts;
158
- if (rule.valueSource === "field" || !processIsDateField(context.isDateField, rule, opts)) return defaultRuleProcessorCEL(rule, opts);
42
+ if (isNonDateValueSource(rule.valueSource) || !processIsDateField(context.isDateField, rule, opts)) return defaultRuleProcessorCEL(rule, opts);
159
43
  const ts = (d) => `timestamp("${apiFns.toISOString(d)}")`;
160
44
  const value = materializeRelativeValues(apiFns, rule.value, opts);
161
45
  const operatorTL = lc(resolveDatetimeOperator(rule, opts).replace(/^=$/, "=="));
@@ -207,7 +91,7 @@ const cypherTemporal = (iso, dateOnly) => dateOnly ? `date('${iso}')` : `datetim
207
91
  const getDatetimeRuleProcessorCypher = (apiFns) => (rule, options) => {
208
92
  const opts = options !== null && options !== void 0 ? options : /* v8 ignore start -- @preserve */ {};
209
93
  const { context = {} } = opts;
210
- if (rule.valueSource === "field" || !processIsDateField(context.isDateField, rule, opts)) return defaultRuleProcessorCypher(rule, opts);
94
+ if (isNonDateValueSource(rule.valueSource) || !processIsDateField(context.isDateField, rule, opts)) return defaultRuleProcessorCypher(rule, opts);
211
95
  const { field } = rule;
212
96
  const operatorTL = lc(resolveDatetimeOperator(rule, opts));
213
97
  if (operatorTL === "olderthanduration") return `datetime() - ${field} > duration('${rule.value}')`;
@@ -215,7 +99,8 @@ const getDatetimeRuleProcessorCypher = (apiFns) => (rule, options) => {
215
99
  const valueAsDateArray = toArray(materializeRelativeValues(apiFns, rule.value, opts), { retainEmptyStrings: false }).map((v) => [v, apiFns.toDate(v)]).filter(([, d]) => apiFns.isValid(d));
216
100
  const fmtDate = (originalValue) => {
217
101
  const dateOnly = isISOStringDateOnly(originalValue);
218
- return cypherTemporal(dateOnly ? apiFns.toISOStringDateOnly(originalValue) : apiFns.toISOString(originalValue), dateOnly);
102
+ const iso = dateOnly ? apiFns.toISOStringDateOnly(originalValue) : apiFns.toISOString(originalValue);
103
+ return cypherTemporal(iso, dateOnly);
219
104
  };
220
105
  switch (operatorTL) {
221
106
  case "in":
@@ -240,67 +125,6 @@ const getDatetimeRuleProcessorCypher = (apiFns) => (rule, options) => {
240
125
  }
241
126
  };
242
127
  //#endregion
243
- //#region \0@oxc-project+runtime@0.135.0/helpers/esm/typeof.js
244
- function _typeof(o) {
245
- "@babel/helpers - typeof";
246
- return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function(o) {
247
- return typeof o;
248
- } : function(o) {
249
- return o && "function" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? "symbol" : typeof o;
250
- }, _typeof(o);
251
- }
252
- //#endregion
253
- //#region \0@oxc-project+runtime@0.135.0/helpers/esm/toPrimitive.js
254
- function toPrimitive(t, r) {
255
- if ("object" != _typeof(t) || !t) return t;
256
- var e = t[Symbol.toPrimitive];
257
- if (void 0 !== e) {
258
- var i = e.call(t, r || "default");
259
- if ("object" != _typeof(i)) return i;
260
- throw new TypeError("@@toPrimitive must return a primitive value.");
261
- }
262
- return ("string" === r ? String : Number)(t);
263
- }
264
- //#endregion
265
- //#region \0@oxc-project+runtime@0.135.0/helpers/esm/toPropertyKey.js
266
- function toPropertyKey(t) {
267
- var i = toPrimitive(t, "string");
268
- return "symbol" == _typeof(i) ? i : i + "";
269
- }
270
- //#endregion
271
- //#region \0@oxc-project+runtime@0.135.0/helpers/esm/defineProperty.js
272
- function _defineProperty(e, r, t) {
273
- return (r = toPropertyKey(r)) in e ? Object.defineProperty(e, r, {
274
- value: t,
275
- enumerable: !0,
276
- configurable: !0,
277
- writable: !0
278
- }) : e[r] = t, e;
279
- }
280
- //#endregion
281
- //#region \0@oxc-project+runtime@0.135.0/helpers/esm/objectSpread2.js
282
- function ownKeys(e, r) {
283
- var t = Object.keys(e);
284
- if (Object.getOwnPropertySymbols) {
285
- var o = Object.getOwnPropertySymbols(e);
286
- r && (o = o.filter(function(r) {
287
- return Object.getOwnPropertyDescriptor(e, r).enumerable;
288
- })), t.push.apply(t, o);
289
- }
290
- return t;
291
- }
292
- function _objectSpread2(e) {
293
- for (var r = 1; r < arguments.length; r++) {
294
- var t = null != arguments[r] ? arguments[r] : {};
295
- r % 2 ? ownKeys(Object(t), !0).forEach(function(r) {
296
- _defineProperty(e, r, t[r]);
297
- }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function(r) {
298
- Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r));
299
- });
300
- }
301
- return e;
302
- }
303
- //#endregion
304
128
  //#region src/getDatetimeRuleProcessorDrizzle.ts
305
129
  /**
306
130
  * Generates a rule processor with date/time features for use by
@@ -311,7 +135,7 @@ function _objectSpread2(e) {
311
135
  const getDatetimeRuleProcessorDrizzle = (apiFns) => (rule, options) => {
312
136
  const opts = options !== null && options !== void 0 ? options : /* v8 ignore start -- @preserve */ {};
313
137
  const { context = {} } = opts;
314
- if (rule.valueSource === "field" || !processIsDateField(context.isDateField, rule, opts)) return defaultRuleProcessorDrizzle(rule, opts);
138
+ if (isNonDateValueSource(rule.valueSource) || !processIsDateField(context.isDateField, rule, opts)) return defaultRuleProcessorDrizzle(rule, opts);
315
139
  const { operator, value } = materializeForExport(apiFns, rule, opts, true);
316
140
  return defaultRuleProcessorDrizzle(_objectSpread2(_objectSpread2({}, rule), {}, {
317
141
  operator,
@@ -329,7 +153,7 @@ const getDatetimeRuleProcessorDrizzle = (apiFns) => (rule, options) => {
329
153
  const getDatetimeRuleProcessorElasticSearch = (apiFns) => (rule, options) => {
330
154
  const opts = options !== null && options !== void 0 ? options : /* v8 ignore start -- @preserve */ {};
331
155
  const { context = {} } = opts;
332
- if (rule.valueSource === "field" || !processIsDateField(context.isDateField, rule, opts)) return defaultRuleProcessorElasticSearch(rule, opts);
156
+ if (isNonDateValueSource(rule.valueSource) || !processIsDateField(context.isDateField, rule, opts)) return defaultRuleProcessorElasticSearch(rule, opts);
333
157
  const { operator, value } = materializeForExport(apiFns, rule, opts);
334
158
  return defaultRuleProcessorElasticSearch(_objectSpread2(_objectSpread2({}, rule), {}, {
335
159
  operator,
@@ -347,7 +171,7 @@ const getDatetimeRuleProcessorElasticSearch = (apiFns) => (rule, options) => {
347
171
  const getDatetimeRuleProcessorGremlin = (apiFns) => (rule, options) => {
348
172
  const opts = options !== null && options !== void 0 ? options : /* v8 ignore start -- @preserve */ {};
349
173
  const { context = {} } = opts;
350
- if (rule.valueSource === "field" || !processIsDateField(context.isDateField, rule, opts)) return defaultRuleProcessorGremlin(rule, opts);
174
+ if (isNonDateValueSource(rule.valueSource) || !processIsDateField(context.isDateField, rule, opts)) return defaultRuleProcessorGremlin(rule, opts);
351
175
  const { operator, value } = materializeForExport(apiFns, rule, opts);
352
176
  return defaultRuleProcessorGremlin(_objectSpread2(_objectSpread2({}, rule), {}, {
353
177
  operator,
@@ -370,6 +194,7 @@ const getDatetimeRuleProcessorJSONata = (apiFns) => (rule, options) => {
370
194
  const { field, valueSource } = rule;
371
195
  const operator = resolveDatetimeOperator(rule, opts);
372
196
  if (!processIsDateField(context.isDateField, rule, opts)) return defaultRuleProcessorJSONata(rule, opts);
197
+ if (valueSource === "parameter") return defaultRuleProcessorJSONata(rule, opts);
373
198
  const valueIsField = valueSource === "field";
374
199
  const value = valueIsField ? rule.value : materializeRelativeValues(apiFns, rule.value, opts);
375
200
  const fldToMs = (f) => `$toMillis(${getQuotedFieldName(f, {
@@ -423,7 +248,7 @@ const getDatetimeRuleProcessorJSONata = (apiFns) => (rule, options) => {
423
248
  const getDatetimeRuleProcessorLDAP = (apiFns) => (rule, options) => {
424
249
  const opts = options !== null && options !== void 0 ? options : /* v8 ignore start -- @preserve */ {};
425
250
  const { context = {} } = opts;
426
- if (rule.valueSource === "field" || !processIsDateField(context.isDateField, rule, opts)) return defaultRuleProcessorLDAP(rule, opts);
251
+ if (isNonDateValueSource(rule.valueSource) || !processIsDateField(context.isDateField, rule, opts)) return defaultRuleProcessorLDAP(rule, opts);
427
252
  const { operator, value } = materializeForExport(apiFns, rule, opts);
428
253
  return defaultRuleProcessorLDAP(_objectSpread2(_objectSpread2({}, rule), {}, {
429
254
  operator,
@@ -441,7 +266,7 @@ const getDatetimeRuleProcessorMongoDBQuery = (apiFns) => (rule, options) => {
441
266
  const opts = options !== null && options !== void 0 ? options : /* v8 ignore start -- @preserve */ {};
442
267
  const { field, valueSource } = rule;
443
268
  const operator = resolveDatetimeOperator(rule, opts);
444
- if (valueSource === "field" || !processIsDateField((_opts$context = opts.context) === null || _opts$context === void 0 ? void 0 : _opts$context.isDateField, rule, opts)) return defaultRuleProcessorMongoDBQuery(rule, opts);
269
+ if (isNonDateValueSource(valueSource) || !processIsDateField((_opts$context = opts.context) === null || _opts$context === void 0 ? void 0 : _opts$context.isDateField, rule, opts)) return defaultRuleProcessorMongoDBQuery(rule, opts);
445
270
  const value = materializeRelativeValues(apiFns, rule.value, opts);
446
271
  if (operator === "=") return { [field]: apiFns.toDate(value) };
447
272
  switch (operator) {
@@ -523,7 +348,7 @@ const getDatetimeRuleProcessorNL = (apiFns) => (rule, options) => {
523
348
  // v8 ignore next
524
349
  const { fieldData, quoteFieldNamesWith = ["", ""], fieldIdentifierSeparator = "", operatorProcessor = defaultOperatorProcessorNL, wordOrder = "SVO", context = {}, operatorMap = defaultDateTimeNLOperatorMap } = opts;
525
350
  if (!processIsDateField(context.isDateField, rule, opts)) return defaultRuleProcessorNL(rule, opts);
526
- if (rule.valueSource === "field") return defaultRuleProcessorNL(rule, _objectSpread2(_objectSpread2({}, opts), {}, { operatorMap: defaultDateTimeNLOperatorMap }));
351
+ if (isNonDateValueSource(rule.valueSource)) return defaultRuleProcessorNL(rule, _objectSpread2(_objectSpread2({}, opts), {}, { operatorMap: defaultDateTimeNLOperatorMap }));
527
352
  if ((operatorLowerCase === "in" || operatorLowerCase === "notin" || operatorLowerCase === "between" || operatorLowerCase === "notbetween") && !rule.value) return "";
528
353
  const valueAsDateArray = toArray(materializeRelativeValues(apiFns, rule.value, opts), { retainEmptyStrings: false }).map((v) => [v, apiFns.toDate(v)]).filter((v) => apiFns.isValid(v[1]));
529
354
  switch (operatorLowerCase) {
@@ -580,7 +405,7 @@ const getDatetimeRuleProcessorNL = (apiFns) => (rule, options) => {
580
405
  const getDatetimeRuleProcessorParameterized = (apiFns) => (rule, options, meta) => {
581
406
  const opts = options !== null && options !== void 0 ? options : /* v8 ignore start -- @preserve */ {};
582
407
  const { context = {} } = opts;
583
- if (rule.valueSource === "field" || !processIsDateField(context.isDateField, rule, opts)) return defaultRuleProcessorParameterized(rule, opts, meta);
408
+ if (isNonDateValueSource(rule.valueSource) || !processIsDateField(context.isDateField, rule, opts)) return defaultRuleProcessorParameterized(rule, opts, meta);
584
409
  const { operator, value } = materializeForExport(apiFns, rule, opts);
585
410
  return defaultRuleProcessorParameterized(_objectSpread2(_objectSpread2({}, rule), {}, {
586
411
  operator,
@@ -598,7 +423,7 @@ const getDatetimeRuleProcessorParameterized = (apiFns) => (rule, options, meta)
598
423
  const getDatetimeRuleProcessorPrisma = (apiFns) => (rule, options) => {
599
424
  const opts = options !== null && options !== void 0 ? options : /* v8 ignore start -- @preserve */ {};
600
425
  const { context = {} } = opts;
601
- if (rule.valueSource === "field" || !processIsDateField(context.isDateField, rule, opts)) return defaultRuleProcessorPrisma(rule, opts);
426
+ if (isNonDateValueSource(rule.valueSource) || !processIsDateField(context.isDateField, rule, opts)) return defaultRuleProcessorPrisma(rule, opts);
602
427
  const { operator, value } = materializeForExport(apiFns, rule, opts, true);
603
428
  return defaultRuleProcessorPrisma(_objectSpread2(_objectSpread2({}, rule), {}, {
604
429
  operator,
@@ -616,7 +441,7 @@ const getDatetimeRuleProcessorPrisma = (apiFns) => (rule, options) => {
616
441
  const getDatetimeRuleProcessorSequelize = (apiFns) => (rule, options) => {
617
442
  const opts = options !== null && options !== void 0 ? options : /* v8 ignore start -- @preserve */ {};
618
443
  const { context = {} } = opts;
619
- if (rule.valueSource === "field" || !processIsDateField(context.isDateField, rule, opts)) return defaultRuleProcessorSequelize(rule, opts);
444
+ if (isNonDateValueSource(rule.valueSource) || !processIsDateField(context.isDateField, rule, opts)) return defaultRuleProcessorSequelize(rule, opts);
620
445
  const { operator, value } = materializeForExport(apiFns, rule, opts, true);
621
446
  return defaultRuleProcessorSequelize(_objectSpread2(_objectSpread2({}, rule), {}, {
622
447
  operator,
@@ -645,7 +470,7 @@ const sparqlTemporal = (iso, dateOnly) => dateOnly ? `"${iso}"^^xsd:date` : `"${
645
470
  const getDatetimeRuleProcessorSPARQL = (apiFns) => (rule, options) => {
646
471
  const opts = options !== null && options !== void 0 ? options : /* v8 ignore start -- @preserve */ {};
647
472
  const { context = {} } = opts;
648
- if (rule.valueSource === "field" || !processIsDateField(context.isDateField, rule, opts)) return defaultRuleProcessorSPARQL(rule, opts);
473
+ if (isNonDateValueSource(rule.valueSource) || !processIsDateField(context.isDateField, rule, opts)) return defaultRuleProcessorSPARQL(rule, opts);
649
474
  const { field: rawField, value } = rule;
650
475
  const operator = resolveDatetimeOperator(rule, opts);
651
476
  const field = sparqlVar(rawField);
@@ -655,7 +480,8 @@ const getDatetimeRuleProcessorSPARQL = (apiFns) => (rule, options) => {
655
480
  const valueAsDateArray = toArray(materializeRelativeValues(apiFns, value, opts), { retainEmptyStrings: false }).map((v) => [v, apiFns.toDate(v)]).filter(([, d]) => apiFns.isValid(d));
656
481
  const fmtDate = (originalValue) => {
657
482
  const dateOnly = isISOStringDateOnly(originalValue);
658
- return sparqlTemporal(dateOnly ? apiFns.toISOStringDateOnly(originalValue) : apiFns.toISOString(originalValue), dateOnly);
483
+ const iso = dateOnly ? apiFns.toISOStringDateOnly(originalValue) : apiFns.toISOString(originalValue);
484
+ return sparqlTemporal(iso, dateOnly);
659
485
  };
660
486
  switch (operatorTL) {
661
487
  case "in":
@@ -690,7 +516,7 @@ const getDatetimeRuleProcessorSPARQL = (apiFns) => (rule, options) => {
690
516
  const getDatetimeRuleProcessorSpEL = (apiFns) => (rule, options) => {
691
517
  const opts = options !== null && options !== void 0 ? options : /* v8 ignore start -- @preserve */ {};
692
518
  const { context = {} } = opts;
693
- if (rule.valueSource === "field" || !processIsDateField(context.isDateField, rule, opts)) return defaultRuleProcessorSpEL(rule, opts);
519
+ if (isNonDateValueSource(rule.valueSource) || !processIsDateField(context.isDateField, rule, opts)) return defaultRuleProcessorSpEL(rule, opts);
694
520
  const { operator, value } = materializeForExport(apiFns, rule, opts);
695
521
  return defaultRuleProcessorSpEL(_objectSpread2(_objectSpread2({}, rule), {}, {
696
522
  operator,
@@ -928,7 +754,7 @@ const getDatetimeRuleProcessorSQL = (apiFns) => (rule, options) => {
928
754
  // v8 ignore next
929
755
  const { quoteFieldNamesWith = ["", ""], fieldIdentifierSeparator = "", context = {} } = opts;
930
756
  let finalValue = "";
931
- if (rule.valueSource === "field" || !processIsDateField(context.isDateField, rule, opts)) return defaultRuleProcessorSQL(rule, opts);
757
+ if (isNonDateValueSource(rule.valueSource) || !processIsDateField(context.isDateField, rule, opts)) return defaultRuleProcessorSQL(rule, opts);
932
758
  const valueProcessor = presetToValueProcessorMap[opts.preset](apiFns);
933
759
  const quotedField = getQuotedFieldName(rule.field, {
934
760
  quoteFieldNamesWith,
@@ -1022,7 +848,7 @@ const getDatetimeRuleProcessorSQL = (apiFns) => (rule, options) => {
1022
848
  const getDatetimeRuleProcessorTanStackDB = (apiFns) => (rule, options) => {
1023
849
  const opts = options !== null && options !== void 0 ? options : /* v8 ignore start -- @preserve */ {};
1024
850
  const { context = {} } = opts;
1025
- if (rule.valueSource === "field" || !processIsDateField(context.isDateField, rule, opts)) return defaultRuleProcessorTanStackDB(rule, opts);
851
+ if (isNonDateValueSource(rule.valueSource) || !processIsDateField(context.isDateField, rule, opts)) return defaultRuleProcessorTanStackDB(rule, opts);
1026
852
  const { operator, value } = materializeForExport(apiFns, rule, opts, true);
1027
853
  return defaultRuleProcessorTanStackDB(_objectSpread2(_objectSpread2({}, rule), {}, {
1028
854
  operator,
@@ -1030,6 +856,6 @@ const getDatetimeRuleProcessorTanStackDB = (apiFns) => (rule, options) => {
1030
856
  }), opts);
1031
857
  };
1032
858
  //#endregion
1033
- export { processIsDateField as A, _objectSpread2 as C, isDateOnlyDatatype as D, getDatetimeJsonLogicOperations as E, isISOStringDateOnly as O, getDatetimeRuleProcessorDrizzle as S, getDatetimeRuleProcessorCEL as T, getDatetimeRuleProcessorMongoDBQuery as _, getDatetimeValueProcessorMySQL as a, getDatetimeRuleProcessorGremlin as b, getDatetimeRuleProcessorSpEL as c, getDatetimeRuleProcessorPrisma as d, getDatetimeRuleProcessorParameterized as f, getDatetimeRuleProcessorMongoDB as g, getDatetimeRuleProcessorNL as h, getDatetimeValueProcessorMSSQL as i, resolveDatetimeOperator as j, isRelativeDateTimeValue as k, getDatetimeRuleProcessorSPARQL as l, defaultDateTimeNLOperatorMap as m, getDatetimeRuleProcessorSQL as n, getDatetimeValueProcessorOracle as o, datetimeValueProcessorNL as p, getDatetimeValueProcessorANSI as r, getDatetimeValueProcessorPostgreSQL as s, getDatetimeRuleProcessorTanStackDB as t, getDatetimeRuleProcessorSequelize as u, getDatetimeRuleProcessorLDAP as v, getDatetimeRuleProcessorCypher as w, getDatetimeRuleProcessorElasticSearch as x, getDatetimeRuleProcessorJSONata as y };
859
+ export { getDatetimeRuleProcessorCypher as C, getDatetimeRuleProcessorDrizzle as S, getDatetimeJsonLogicOperations as T, getDatetimeRuleProcessorMongoDBQuery as _, getDatetimeValueProcessorMySQL as a, getDatetimeRuleProcessorGremlin as b, getDatetimeRuleProcessorSpEL as c, getDatetimeRuleProcessorPrisma as d, getDatetimeRuleProcessorParameterized as f, getDatetimeRuleProcessorMongoDB as g, getDatetimeRuleProcessorNL as h, getDatetimeValueProcessorMSSQL as i, getDatetimeRuleProcessorSPARQL as l, defaultDateTimeNLOperatorMap as m, getDatetimeRuleProcessorSQL as n, getDatetimeValueProcessorOracle as o, datetimeValueProcessorNL as p, getDatetimeValueProcessorANSI as r, getDatetimeValueProcessorPostgreSQL as s, getDatetimeRuleProcessorTanStackDB as t, getDatetimeRuleProcessorSequelize as u, getDatetimeRuleProcessorLDAP as v, getDatetimeRuleProcessorCEL as w, getDatetimeRuleProcessorElasticSearch as x, getDatetimeRuleProcessorJSONata as y };
1034
860
 
1035
- //# sourceMappingURL=getDatetimeRuleProcessorTanStackDB-BL8mbdbl.js.map
861
+ //# sourceMappingURL=getDatetimeRuleProcessorTanStackDB-BrSD2e9G.js.map