@react-querybuilder/datetime 8.14.4 → 8.16.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 (97) hide show
  1. package/date-fns/package.json +1 -1
  2. package/dayjs/package.json +1 -1
  3. package/dist/cjs/{getDatetimeRuleProcessorSQL-Bn34z-S-.js → getDatetimeRuleProcessorSQL-DVtRZyr6.js} +131 -9
  4. package/dist/cjs/getDatetimeRuleProcessorSQL-DVtRZyr6.js.map +1 -0
  5. package/dist/cjs/getDatetimeRuleProcessorSQL-pAGh4Q0-.js +2 -0
  6. package/dist/cjs/getDatetimeRuleProcessorSQL-pAGh4Q0-.js.map +1 -0
  7. package/dist/cjs/react-querybuilder_datetime.cjs.development.d.ts +27 -1
  8. package/dist/cjs/react-querybuilder_datetime.cjs.development.date-fns.d.ts +9 -1
  9. package/dist/cjs/react-querybuilder_datetime.cjs.development.date-fns.js +11 -1
  10. package/dist/cjs/react-querybuilder_datetime.cjs.development.date-fns.js.map +1 -1
  11. package/dist/cjs/react-querybuilder_datetime.cjs.development.dayjs.d.ts +9 -1
  12. package/dist/cjs/react-querybuilder_datetime.cjs.development.dayjs.js +11 -1
  13. package/dist/cjs/react-querybuilder_datetime.cjs.development.dayjs.js.map +1 -1
  14. package/dist/cjs/react-querybuilder_datetime.cjs.development.js +6 -4
  15. package/dist/cjs/react-querybuilder_datetime.cjs.development.js.map +1 -1
  16. package/dist/cjs/react-querybuilder_datetime.cjs.development.jsdate.d.ts +9 -1
  17. package/dist/cjs/react-querybuilder_datetime.cjs.development.jsdate.js +11 -1
  18. package/dist/cjs/react-querybuilder_datetime.cjs.development.jsdate.js.map +1 -1
  19. package/dist/cjs/react-querybuilder_datetime.cjs.development.luxon.d.ts +9 -1
  20. package/dist/cjs/react-querybuilder_datetime.cjs.development.luxon.js +11 -1
  21. package/dist/cjs/react-querybuilder_datetime.cjs.development.luxon.js.map +1 -1
  22. package/dist/cjs/react-querybuilder_datetime.cjs.production.d.ts +27 -1
  23. package/dist/cjs/react-querybuilder_datetime.cjs.production.date-fns.d.ts +9 -1
  24. package/dist/cjs/react-querybuilder_datetime.cjs.production.date-fns.js +1 -1
  25. package/dist/cjs/react-querybuilder_datetime.cjs.production.date-fns.js.map +1 -1
  26. package/dist/cjs/react-querybuilder_datetime.cjs.production.dayjs.d.ts +9 -1
  27. package/dist/cjs/react-querybuilder_datetime.cjs.production.dayjs.js +1 -1
  28. package/dist/cjs/react-querybuilder_datetime.cjs.production.dayjs.js.map +1 -1
  29. package/dist/cjs/react-querybuilder_datetime.cjs.production.js +1 -1
  30. package/dist/cjs/react-querybuilder_datetime.cjs.production.js.map +1 -1
  31. package/dist/cjs/react-querybuilder_datetime.cjs.production.jsdate.d.ts +9 -1
  32. package/dist/cjs/react-querybuilder_datetime.cjs.production.jsdate.js +1 -1
  33. package/dist/cjs/react-querybuilder_datetime.cjs.production.jsdate.js.map +1 -1
  34. package/dist/cjs/react-querybuilder_datetime.cjs.production.luxon.d.ts +9 -1
  35. package/dist/cjs/react-querybuilder_datetime.cjs.production.luxon.js +1 -1
  36. package/dist/cjs/react-querybuilder_datetime.cjs.production.luxon.js.map +1 -1
  37. package/dist/{getDatetimeRuleProcessorSQL-CnAPMZf2.mjs → getDatetimeRuleProcessorSQL-BGTFvbeK.mjs} +121 -11
  38. package/dist/getDatetimeRuleProcessorSQL-BGTFvbeK.mjs.map +1 -0
  39. package/dist/{getDatetimeRuleProcessorSQL-CJGBV3Ug.js → getDatetimeRuleProcessorSQL-Bpt88k6a.js} +126 -16
  40. package/dist/getDatetimeRuleProcessorSQL-Bpt88k6a.js.map +1 -0
  41. package/dist/getDatetimeRuleProcessorSQL-CWqAiVwU.mjs +2 -0
  42. package/dist/getDatetimeRuleProcessorSQL-CWqAiVwU.mjs.map +1 -0
  43. package/dist/react-querybuilder_datetime.d.mts +27 -1
  44. package/dist/react-querybuilder_datetime.date-fns.d.mts +9 -1
  45. package/dist/react-querybuilder_datetime.date-fns.mjs +10 -2
  46. package/dist/react-querybuilder_datetime.date-fns.mjs.map +1 -1
  47. package/dist/react-querybuilder_datetime.dayjs.d.mts +9 -1
  48. package/dist/react-querybuilder_datetime.dayjs.mjs +10 -2
  49. package/dist/react-querybuilder_datetime.dayjs.mjs.map +1 -1
  50. package/dist/react-querybuilder_datetime.jsdate.d.mts +9 -1
  51. package/dist/react-querybuilder_datetime.jsdate.mjs +10 -2
  52. package/dist/react-querybuilder_datetime.jsdate.mjs.map +1 -1
  53. package/dist/react-querybuilder_datetime.legacy-esm.d.ts +27 -1
  54. package/dist/react-querybuilder_datetime.legacy-esm.date-fns.d.ts +9 -1
  55. package/dist/react-querybuilder_datetime.legacy-esm.date-fns.js +10 -2
  56. package/dist/react-querybuilder_datetime.legacy-esm.date-fns.js.map +1 -1
  57. package/dist/react-querybuilder_datetime.legacy-esm.dayjs.d.ts +9 -1
  58. package/dist/react-querybuilder_datetime.legacy-esm.dayjs.js +10 -2
  59. package/dist/react-querybuilder_datetime.legacy-esm.dayjs.js.map +1 -1
  60. package/dist/react-querybuilder_datetime.legacy-esm.js +5 -5
  61. package/dist/react-querybuilder_datetime.legacy-esm.js.map +1 -1
  62. package/dist/react-querybuilder_datetime.legacy-esm.jsdate.d.ts +9 -1
  63. package/dist/react-querybuilder_datetime.legacy-esm.jsdate.js +10 -2
  64. package/dist/react-querybuilder_datetime.legacy-esm.jsdate.js.map +1 -1
  65. package/dist/react-querybuilder_datetime.legacy-esm.luxon.d.ts +9 -1
  66. package/dist/react-querybuilder_datetime.legacy-esm.luxon.js +10 -2
  67. package/dist/react-querybuilder_datetime.legacy-esm.luxon.js.map +1 -1
  68. package/dist/react-querybuilder_datetime.luxon.d.mts +9 -1
  69. package/dist/react-querybuilder_datetime.luxon.mjs +10 -2
  70. package/dist/react-querybuilder_datetime.luxon.mjs.map +1 -1
  71. package/dist/react-querybuilder_datetime.mjs +5 -5
  72. package/dist/react-querybuilder_datetime.mjs.map +1 -1
  73. package/dist/react-querybuilder_datetime.production.d.mts +27 -1
  74. package/dist/react-querybuilder_datetime.production.date-fns.d.mts +9 -1
  75. package/dist/react-querybuilder_datetime.production.date-fns.mjs +1 -1
  76. package/dist/react-querybuilder_datetime.production.date-fns.mjs.map +1 -1
  77. package/dist/react-querybuilder_datetime.production.dayjs.d.mts +9 -1
  78. package/dist/react-querybuilder_datetime.production.dayjs.mjs +1 -1
  79. package/dist/react-querybuilder_datetime.production.dayjs.mjs.map +1 -1
  80. package/dist/react-querybuilder_datetime.production.jsdate.d.mts +9 -1
  81. package/dist/react-querybuilder_datetime.production.jsdate.mjs +1 -1
  82. package/dist/react-querybuilder_datetime.production.jsdate.mjs.map +1 -1
  83. package/dist/react-querybuilder_datetime.production.luxon.d.mts +9 -1
  84. package/dist/react-querybuilder_datetime.production.luxon.mjs +1 -1
  85. package/dist/react-querybuilder_datetime.production.luxon.mjs.map +1 -1
  86. package/dist/react-querybuilder_datetime.production.mjs +1 -1
  87. package/dist/react-querybuilder_datetime.production.mjs.map +1 -1
  88. package/jsdate/package.json +1 -1
  89. package/luxon/package.json +1 -1
  90. package/package.json +12 -12
  91. package/dist/cjs/getDatetimeRuleProcessorSQL-Bn34z-S-.js.map +0 -1
  92. package/dist/cjs/getDatetimeRuleProcessorSQL-Cs8MroHp.js +0 -2
  93. package/dist/cjs/getDatetimeRuleProcessorSQL-Cs8MroHp.js.map +0 -1
  94. package/dist/getDatetimeRuleProcessorSQL-CJGBV3Ug.js.map +0 -1
  95. package/dist/getDatetimeRuleProcessorSQL-Cbq2-tqd.mjs +0 -2
  96. package/dist/getDatetimeRuleProcessorSQL-Cbq2-tqd.mjs.map +0 -1
  97. package/dist/getDatetimeRuleProcessorSQL-CnAPMZf2.mjs.map +0 -1
@@ -1,4 +1,4 @@
1
1
  {
2
2
  "main": "../dist/cjs/date-fns.js",
3
3
  "types": "../dist/cjs/date-fns.d.ts"
4
- }
4
+ }
@@ -1,4 +1,4 @@
1
1
  {
2
2
  "main": "../dist/cjs/dayjs.js",
3
3
  "types": "../dist/cjs/dayjs.d.ts"
4
- }
4
+ }
@@ -30,13 +30,13 @@ const getDatetimeJsonLogicOperations = ({ isAfter, isBefore, isSame }) => ({
30
30
  });
31
31
  //#endregion
32
32
  //#region src/getDatetimeRuleProcessorCEL.ts
33
- const shouldNegate = (op) => /^(does)?not/i.test(op);
33
+ const shouldNegate$2 = (op) => /^(does)?not/i.test(op);
34
34
  /**
35
35
  * Generates a rule processor with date/time features for use by
36
36
  * {@link @react-querybuilder/core!formatQuery formatQuery} with the "cel" format.
37
37
  */
38
38
  const getDatetimeRuleProcessorCEL = (apiFns) => (rule, options) => {
39
- const opts = options ?? ( /* istanbul ignore next */ {});
39
+ const opts = options ?? ( /* v8 ignore start -- @preserve */ {});
40
40
  const { context = {} } = opts;
41
41
  if (rule.valueSource === "field" || !processIsDateField(context.isDateField, rule, opts)) return (0, react_querybuilder.defaultRuleProcessorCEL)(rule, opts);
42
42
  const ts = (d) => `timestamp("${apiFns.toISOString(d)}")`;
@@ -54,7 +54,7 @@ const getDatetimeRuleProcessorCEL = (apiFns) => (rule, options) => {
54
54
  case "in":
55
55
  case "notin": {
56
56
  if (valueAsDateArray.length === 0) return "";
57
- const [prefix, suffix] = shouldNegate(operatorTL) ? ["!(", ")"] : ["", ""];
57
+ const [prefix, suffix] = shouldNegate$2(operatorTL) ? ["!(", ")"] : ["", ""];
58
58
  return `${prefix}${rule.field} in [${valueAsDateArray.map((val) => ts(val)).join(", ")}]${suffix}`;
59
59
  }
60
60
  case "between":
@@ -68,13 +68,67 @@ const getDatetimeRuleProcessorCEL = (apiFns) => (rule, options) => {
68
68
  return (0, react_querybuilder.defaultRuleProcessorCEL)(rule, opts);
69
69
  };
70
70
  //#endregion
71
+ //#region src/getDatetimeRuleProcessorCypher.ts
72
+ const shouldNegate$1 = (op) => /^(does)?not/i.test(op);
73
+ /**
74
+ * Wraps a date string in the appropriate Cypher temporal constructor.
75
+ * - Date-only strings (YYYY-MM-DD) become `date('...')`
76
+ * - Full ISO strings become `datetime('...')`
77
+ */
78
+ const cypherTemporal = (iso, dateOnly) => dateOnly ? `date('${iso}')` : `datetime('${iso}')`;
79
+ /**
80
+ * Generates a rule processor with date/time features for use by
81
+ * {@link @react-querybuilder/core!formatQuery formatQuery} with the "cypher" or "gql" format.
82
+ *
83
+ * Supports:
84
+ * - Standard comparison operators (`=`, `!=`, `<`, `>`, `<=`, `>=`)
85
+ * - Range operators (between, notBetween, in, notIn)
86
+ * - Duration math via custom operators: `olderThanDuration` and `withinDuration`
87
+ * (e.g., value `"P30D"` → `datetime() - field > duration('P30D')`)
88
+ */
89
+ const getDatetimeRuleProcessorCypher = (apiFns) => (rule, options) => {
90
+ const opts = options ?? ( /* v8 ignore start -- @preserve */ {});
91
+ const { context = {} } = opts;
92
+ if (rule.valueSource === "field" || !processIsDateField(context.isDateField, rule, opts)) return (0, react_querybuilder.defaultRuleProcessorCypher)(rule, opts);
93
+ const { field, operator, value } = rule;
94
+ const operatorTL = (0, react_querybuilder.lc)(operator);
95
+ if (operatorTL === "olderthanduration") return `datetime() - ${field} > duration('${value}')`;
96
+ if (operatorTL === "withinduration") return `datetime() - ${field} <= duration('${value}')`;
97
+ const valueAsDateArray = (0, react_querybuilder.toArray)(value, { retainEmptyStrings: false }).map((v) => [v, apiFns.toDate(v)]).filter(([, d]) => apiFns.isValid(d));
98
+ const fmtDate = (originalValue) => {
99
+ const dateOnly = isISOStringDateOnly(originalValue);
100
+ return cypherTemporal(dateOnly ? apiFns.toISOStringDateOnly(originalValue) : apiFns.toISOString(originalValue), dateOnly);
101
+ };
102
+ switch (operatorTL) {
103
+ case "in":
104
+ case "notin": {
105
+ if (valueAsDateArray.length === 0) return "";
106
+ const items = valueAsDateArray.map(([orig]) => fmtDate(orig));
107
+ return `${shouldNegate$1(operatorTL) ? "NOT " : ""}${field} IN [${items.join(", ")}]`;
108
+ }
109
+ case "between":
110
+ case "notbetween": {
111
+ if (valueAsDateArray.length < 2) return "";
112
+ const [first, second] = valueAsDateArray;
113
+ const [lo, hi] = apiFns.isBefore(first[1], second[1]) ? [first, second] : [second, first];
114
+ const expr = `${fmtDate(lo[0])} <= ${field} AND ${field} <= ${fmtDate(hi[0])}`;
115
+ return operatorTL === "notbetween" ? `NOT (${expr})` : expr;
116
+ }
117
+ default: {
118
+ if (valueAsDateArray.length === 0) return "";
119
+ const [orig] = valueAsDateArray[0];
120
+ return `${field} ${operatorTL === "<>" ? "<>" : operatorTL} ${fmtDate(orig)}`;
121
+ }
122
+ }
123
+ };
124
+ //#endregion
71
125
  //#region src/getDatetimeRuleProcessorMongoDBQuery.ts
72
126
  /**
73
127
  * Generates a rule processor with date/time features for use by
74
128
  * {@link @react-querybuilder/core!formatQuery formatQuery} with the "mongodb_query" format.
75
129
  */
76
130
  const getDatetimeRuleProcessorMongoDBQuery = (apiFns) => (rule, options) => {
77
- const opts = options ?? ( /* istanbul ignore next */ {});
131
+ const opts = options ?? ( /* v8 ignore start -- @preserve */ {});
78
132
  const { field, operator, value, valueSource } = rule;
79
133
  if (valueSource === "field" || !processIsDateField(opts.context?.isDateField, rule, opts)) return (0, react_querybuilder.defaultRuleProcessorMongoDBQuery)(rule, opts);
80
134
  if (operator === "=") return { [field]: apiFns.toDate(value) };
@@ -134,10 +188,10 @@ const datetimeValueProcessorNL = (rule, opts) => {
134
188
  * the "natural_language" format.
135
189
  */
136
190
  const getDatetimeRuleProcessorNL = (apiFns) => (rule, options) => {
137
- const opts = options ?? ( /* istanbul ignore next */ {});
191
+ const opts = options ?? ( /* v8 ignore start -- @preserve */ {});
138
192
  const operatorLowerCase = (0, react_querybuilder.lc)(rule.operator);
139
193
  let finalValue = "";
140
- // istanbul ignore next
194
+ // v8 ignore next
141
195
  const { fieldData, quoteFieldNamesWith = ["", ""], fieldIdentifierSeparator = "", operatorProcessor = react_querybuilder.defaultOperatorProcessorNL, wordOrder = "SVO", context = {}, operatorMap = defaultDateTimeNLOperatorMap } = opts;
142
196
  if (!processIsDateField(context.isDateField, rule, opts)) return (0, react_querybuilder.defaultRuleProcessorNL)(rule, opts);
143
197
  if (rule.valueSource === "field") return (0, react_querybuilder.defaultRuleProcessorNL)(rule, {
@@ -212,6 +266,62 @@ const getDatetimeRuleProcessorNL = (apiFns) => (rule, options) => {
212
266
  return (0, react_querybuilder.normalizeConstituentWordOrder)(wordOrder).map((term) => `${wordOrderMap[term]}`).join(" ").trim();
213
267
  };
214
268
  //#endregion
269
+ //#region src/getDatetimeRuleProcessorSPARQL.ts
270
+ const shouldNegate = (op) => /^(does)?not/i.test(op);
271
+ /**
272
+ * Wraps a date string in the appropriate SPARQL typed literal.
273
+ * - Date-only strings (YYYY-MM-DD) become `"..."^^xsd:date`
274
+ * - Full ISO strings become `"..."^^xsd:dateTime`
275
+ */
276
+ const sparqlTemporal = (iso, dateOnly) => dateOnly ? `"${iso}"^^xsd:date` : `"${iso}"^^xsd:dateTime`;
277
+ /**
278
+ * Generates a rule processor with date/time features for use by
279
+ * {@link @react-querybuilder/core!formatQuery formatQuery} with the "sparql" format.
280
+ *
281
+ * Supports:
282
+ * - Standard comparison operators (`=`, `!=`, `<`, `>`, `<=`, `>=`)
283
+ * - Range operators (between, notBetween, in, notIn)
284
+ * - Duration math via custom operators: `olderThanDuration` and `withinDuration`
285
+ * (e.g., value `"P30D"` → `NOW() - ?field > "P30D"^^xsd:duration`)
286
+ */
287
+ const getDatetimeRuleProcessorSPARQL = (apiFns) => (rule, options) => {
288
+ const opts = options ?? ( /* v8 ignore start -- @preserve */ {});
289
+ const { context = {} } = opts;
290
+ if (rule.valueSource === "field" || !processIsDateField(context.isDateField, rule, opts)) return (0, react_querybuilder.defaultRuleProcessorSPARQL)(rule, opts);
291
+ const { field, operator, value } = rule;
292
+ const operatorTL = (0, react_querybuilder.lc)(operator);
293
+ if (operatorTL === "olderthanduration") return `NOW() - ${field} > "${value}"^^xsd:duration`;
294
+ if (operatorTL === "withinduration") return `NOW() - ${field} <= "${value}"^^xsd:duration`;
295
+ const valueAsDateArray = (0, react_querybuilder.toArray)(value, { retainEmptyStrings: false }).map((v) => [v, apiFns.toDate(v)]).filter(([, d]) => apiFns.isValid(d));
296
+ const fmtDate = (originalValue) => {
297
+ const dateOnly = isISOStringDateOnly(originalValue);
298
+ return sparqlTemporal(dateOnly ? apiFns.toISOStringDateOnly(originalValue) : apiFns.toISOString(originalValue), dateOnly);
299
+ };
300
+ switch (operatorTL) {
301
+ case "in":
302
+ case "notin": {
303
+ if (valueAsDateArray.length === 0) return "";
304
+ const items = valueAsDateArray.map(([orig]) => fmtDate(orig));
305
+ const joiner = shouldNegate(operatorTL) ? " && " : " || ";
306
+ const op = shouldNegate(operatorTL) ? "!=" : "=";
307
+ return items.map((item) => `${field} ${op} ${item}`).join(joiner);
308
+ }
309
+ case "between":
310
+ case "notbetween": {
311
+ if (valueAsDateArray.length < 2) return "";
312
+ const [first, second] = valueAsDateArray;
313
+ const [lo, hi] = apiFns.isBefore(first[1], second[1]) ? [first, second] : [second, first];
314
+ if (operatorTL === "notbetween") return `(${field} < ${fmtDate(lo[0])} || ${field} > ${fmtDate(hi[0])})`;
315
+ return `${field} >= ${fmtDate(lo[0])} && ${field} <= ${fmtDate(hi[0])}`;
316
+ }
317
+ default: {
318
+ if (valueAsDateArray.length === 0) return "";
319
+ const [orig] = valueAsDateArray[0];
320
+ return `${field} ${operatorTL === "<>" ? "!=" : operatorTL} ${fmtDate(orig)}`;
321
+ }
322
+ }
323
+ };
324
+ //#endregion
215
325
  //#region src/getDatetimeRuleProcessorSQL.ts
216
326
  /**
217
327
  * Generates a value processor with date/time features for use by
@@ -300,10 +410,10 @@ const presetToValueProcessorMap = {
300
410
  * the "sql" format.
301
411
  */
302
412
  const getDatetimeRuleProcessorSQL = (apiFns) => (rule, options) => {
303
- const opts = options ?? ( /* istanbul ignore next */ {});
413
+ const opts = options ?? ( /* v8 ignore start -- @preserve */ {});
304
414
  const operator = (0, react_querybuilder.mapSQLOperator)(rule.operator);
305
415
  const operatorLowerCase = (0, react_querybuilder.lc)(operator);
306
- // istanbul ignore next
416
+ // v8 ignore next
307
417
  const { quoteFieldNamesWith = ["", ""], fieldIdentifierSeparator = "", context = {} } = opts;
308
418
  let finalValue = "";
309
419
  if (rule.valueSource === "field" || !processIsDateField(context.isDateField, rule, opts)) return (0, react_querybuilder.defaultRuleProcessorSQL)(rule, opts);
@@ -379,6 +489,12 @@ Object.defineProperty(exports, "getDatetimeRuleProcessorCEL", {
379
489
  return getDatetimeRuleProcessorCEL;
380
490
  }
381
491
  });
492
+ Object.defineProperty(exports, "getDatetimeRuleProcessorCypher", {
493
+ enumerable: true,
494
+ get: function() {
495
+ return getDatetimeRuleProcessorCypher;
496
+ }
497
+ });
382
498
  Object.defineProperty(exports, "getDatetimeRuleProcessorMongoDBQuery", {
383
499
  enumerable: true,
384
500
  get: function() {
@@ -391,6 +507,12 @@ Object.defineProperty(exports, "getDatetimeRuleProcessorNL", {
391
507
  return getDatetimeRuleProcessorNL;
392
508
  }
393
509
  });
510
+ Object.defineProperty(exports, "getDatetimeRuleProcessorSPARQL", {
511
+ enumerable: true,
512
+ get: function() {
513
+ return getDatetimeRuleProcessorSPARQL;
514
+ }
515
+ });
394
516
  Object.defineProperty(exports, "getDatetimeRuleProcessorSQL", {
395
517
  enumerable: true,
396
518
  get: function() {
@@ -440,4 +562,4 @@ Object.defineProperty(exports, "processIsDateField", {
440
562
  }
441
563
  });
442
564
 
443
- //# sourceMappingURL=getDatetimeRuleProcessorSQL-Bn34z-S-.js.map
565
+ //# sourceMappingURL=getDatetimeRuleProcessorSQL-DVtRZyr6.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"getDatetimeRuleProcessorSQL-DVtRZyr6.js","names":["shouldNegate","shouldNegate","mongoOperators","defaultOperatorProcessorNL"],"sources":["../../src/utils.ts","../../src/getDatetimeJsonLogicOperations.ts","../../src/getDatetimeRuleProcessorCEL.ts","../../src/getDatetimeRuleProcessorCypher.ts","../../src/getDatetimeRuleProcessorMongoDBQuery.ts","../../src/getDatetimeRuleProcessorNL.ts","../../src/getDatetimeRuleProcessorSPARQL.ts","../../src/getDatetimeRuleProcessorSQL.ts"],"sourcesContent":["import type { RuleProcessor } from 'react-querybuilder';\nimport type { IsDateField, IsDateFieldFunction } from './types';\n\nexport const isISOStringDateOnly = (\n date: unknown\n): date is `${number}${number}${number}${number}-${number}${number}-${number}${number}` =>\n typeof date === 'string' && /^\\d{4}-\\d{2}-\\d{2}$/.test(date);\n\nexport const defaultIsDateField: IsDateFieldFunction = (\n ...[rule, opts]: Parameters<RuleProcessor>\n): boolean =>\n rule.operator !== 'contains' &&\n rule.operator !== 'beginsWith' &&\n rule.operator !== 'endsWith' &&\n rule.operator !== 'doesNotContain' &&\n rule.operator !== 'doesNotBeginWith' &&\n rule.operator !== 'doesNotEndWith' &&\n rule.operator !== 'null' &&\n rule.operator !== 'notNull' &&\n /^(?:date|datetime|datetimeoffset|timestamp)\\b/i.test(opts?.fieldData?.datatype as string);\n\nexport const processIsDateField = (\n isDateField: IsDateField,\n ...[rule, opts]: Parameters<RuleProcessor>\n): boolean => {\n if (typeof isDateField === 'boolean') {\n return isDateField;\n }\n\n if (typeof isDateField === 'function') {\n return isDateField(rule, opts);\n }\n\n if (Array.isArray(isDateField)) {\n return isDateField.some(condition =>\n Object.entries(condition).every(([key, value]) => opts?.fieldData?.[key] === value)\n );\n }\n\n if (typeof isDateField === 'object') {\n return Object.entries(isDateField).every(([key, value]) => opts?.fieldData?.[key] === value);\n }\n\n return defaultIsDateField(rule, opts);\n};\n","import type { RQBDateTimeLibraryAPI, RQBJsonLogicDateTimeOperations } from './types';\n\n/**\n * Custom operations for use with JsonLogic objects generated by\n * {@link datetimeRuleProcessorJsonLogic}.\n */\nexport const getDatetimeJsonLogicOperations = ({\n isAfter,\n isBefore,\n isSame,\n}: RQBDateTimeLibraryAPI): RQBJsonLogicDateTimeOperations => ({\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});\n","import type { RuleProcessor } from 'react-querybuilder';\nimport { defaultRuleProcessorCEL, lc, toArray } from 'react-querybuilder';\nimport type { RQBDateTimeLibraryAPI } from './types';\nimport { processIsDateField } 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 (rule.valueSource === 'field' || !processIsDateField(context.isDateField, rule, opts)) {\n return defaultRuleProcessorCEL(rule, opts);\n }\n\n const ts = (d: string | Date) => `timestamp(\"${apiFns.toISOString(d)}\")`;\n\n const operatorTL = lc(rule.operator.replace(/^=$/, '=='));\n\n switch (operatorTL) {\n case '<':\n case '<=':\n case '==':\n case '!=':\n case '>':\n case '>=':\n return `${rule.field} ${operatorTL} ${ts(rule.value)}`;\n }\n\n const valueAsArray: string[] = toArray(rule.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';\nimport { defaultRuleProcessorCypher, lc, toArray } from 'react-querybuilder';\nimport type { RQBDateTimeLibraryAPI } from './types';\nimport { isISOStringDateOnly, processIsDateField } 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 (rule.valueSource === 'field' || !processIsDateField(context.isDateField, rule, opts)) {\n return defaultRuleProcessorCypher(rule, opts);\n }\n\n const { field, operator, value } = rule;\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('${value}')`;\n }\n if (operatorTL === 'withinduration') {\n return `datetime() - ${field} <= duration('${value}')`;\n }\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';\nimport { defaultRuleProcessorMongoDBQuery, mongoOperators, toArray } from 'react-querybuilder';\nimport type { RQBDateTimeLibraryAPI } from './types';\nimport { 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 \"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, operator, value, valueSource } = rule;\n\n if (valueSource === 'field' || !processIsDateField(opts.context?.isDateField, rule, opts)) {\n return defaultRuleProcessorMongoDBQuery(rule, opts);\n }\n\n if (operator === '=') {\n return { [field]: apiFns.toDate(value) };\n }\n\n switch (operator) {\n case '<':\n case '<=':\n case '!=':\n case '>':\n case '>=':\n return { [field]: { [mongoOperators[operator]]: apiFns.toDate(value) } };\n }\n\n const valueAsArray: string[] = toArray(rule.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 { ExportOperatorMap, RuleProcessor, ValueProcessorByRule } from 'react-querybuilder';\nimport {\n defaultOperatorProcessorNL,\n defaultRuleProcessorNL,\n getQuotedFieldName,\n lc,\n normalizeConstituentWordOrder,\n toArray,\n} from 'react-querybuilder';\nimport type { RQBDateTimeLibraryAPI } from './types';\nimport { isISOStringDateOnly, processIsDateField } 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 operatorLowerCase = lc(rule.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 (rule.valueSource === 'field') {\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 const valueAsArray: string[] = toArray(rule.value, { 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(rule, {\n ...opts,\n operatorMap: { ...defaultDateTimeNLOperatorMap, ...operatorMap },\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';\nimport { defaultRuleProcessorSPARQL, lc, toArray } from 'react-querybuilder';\nimport type { RQBDateTimeLibraryAPI } from './types';\nimport { isISOStringDateOnly, processIsDateField } 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 (rule.valueSource === 'field' || !processIsDateField(context.isDateField, rule, opts)) {\n return defaultRuleProcessorSPARQL(rule, opts);\n }\n\n const { field, operator, value } = rule;\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 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 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 joiner = shouldNegate(operatorTL) ? ' && ' : ' || ';\n const op = shouldNegate(operatorTL) ? '!=' : '=';\n return items.map(item => `${field} ${op} ${item}`).join(joiner);\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, SQLPreset, ValueProcessorByRule } from 'react-querybuilder';\nimport {\n defaultRuleProcessorSQL,\n defaultValueProcessorByRule,\n getQuotedFieldName,\n lc,\n mapSQLOperator,\n toArray,\n} from 'react-querybuilder';\nimport type { RQBDateTimeLibraryAPI } from './types';\nimport { isISOStringDateOnly, processIsDateField } 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(rule.operator);\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 (rule.valueSource === 'field' || !processIsDateField(context.isDateField, rule, opts)) {\n return defaultRuleProcessorSQL(rule, opts);\n }\n\n const valueProcessor = presetToValueProcessorMap[opts.preset!](apiFns);\n\n const valueAsArray: string[] = toArray(rule.value, { 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 `${getQuotedFieldName(rule.field, { quoteFieldNamesWith, fieldIdentifierSeparator })} ${operator} ${finalValue}`.trim();\n };\n"],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ require(`./react-querybuilder_datetime.cjs.production.dayjs.js`);let e=require(`react-querybuilder`);const t=e=>typeof e==`string`&&/^\d{4}-\d{2}-\d{2}$/.test(e),n=(...[e,t])=>e.operator!==`contains`&&e.operator!==`beginsWith`&&e.operator!==`endsWith`&&e.operator!==`doesNotContain`&&e.operator!==`doesNotBeginWith`&&e.operator!==`doesNotEndWith`&&e.operator!==`null`&&e.operator!==`notNull`&&/^(?:date|datetime|datetimeoffset|timestamp)\b/i.test(t?.fieldData?.datatype),r=(e,...[t,r])=>typeof e==`boolean`?e:typeof e==`function`?e(t,r):Array.isArray(e)?e.some(e=>Object.entries(e).every(([e,t])=>r?.fieldData?.[e]===t)):typeof e==`object`?Object.entries(e).every(([e,t])=>r?.fieldData?.[e]===t):n(t,r),i=({isAfter:e,isBefore:t,isSame:n})=>({dateAfter:(t,n)=>e(t,n),dateBefore:(e,n)=>t(e,n),dateBetween:(r,i,a)=>n(i,r)||n(i,a)||e(i,r)&&t(i,a)||e(i,a)&&t(i,r),dateNotBetween:(r,i,a)=>!n(i,r)&&!n(i,a)&&(t(r,a)&&(t(i,r)||e(i,a))||e(r,a)&&(t(i,a)||e(i,r))),dateIn:(e,t)=>t.some(t=>n(e,t)),dateNotIn:(e,t)=>t.every(t=>!n(e,t)),dateNotOn:(e,t)=>!n(e,t),dateOn:(e,t)=>n(e,t),dateOnOrAfter:(t,r)=>e(t,r)||n(t,r),dateOnOrBefore:(e,r)=>t(e,r)||n(e,r)}),a=e=>/^(does)?not/i.test(e),o=t=>(n,i)=>{let o=i??{},{context:s={}}=o;if(n.valueSource===`field`||!r(s.isDateField,n,o))return(0,e.defaultRuleProcessorCEL)(n,o);let c=e=>`timestamp("${t.toISOString(e)}")`,l=(0,e.lc)(n.operator.replace(/^=$/,`==`));switch(l){case`<`:case`<=`:case`==`:case`!=`:case`>`:case`>=`:return`${n.field} ${l} ${c(n.value)}`}let u=(0,e.toArray)(n.value,{retainEmptyStrings:!1}).map(e=>t.toDate(e)).filter(e=>t.isValid(e));switch(l){case`in`:case`notin`:{if(u.length===0)return``;let[e,t]=a(l)?[`!(`,`)`]:[``,``];return`${e}${n.field} in [${u.map(e=>c(e)).join(`, `)}]${t}`}case`between`:case`notbetween`:{if(u.length<2)return``;let[e,r]=u,[i,a]=t.isBefore(e,r)?[e,r]:[r,e];return l===`between`?`(${n.field} >= ${c(i)} && ${n.field} <= ${c(a)})`:`(${n.field} < ${c(i)} || ${n.field} > ${c(a)})`}}return(0,e.defaultRuleProcessorCEL)(n,o)},s=e=>/^(does)?not/i.test(e),c=(e,t)=>t?`date('${e}')`:`datetime('${e}')`,l=n=>(i,a)=>{let o=a??{},{context:l={}}=o;if(i.valueSource===`field`||!r(l.isDateField,i,o))return(0,e.defaultRuleProcessorCypher)(i,o);let{field:u,operator:d,value:f}=i,p=(0,e.lc)(d);if(p===`olderthanduration`)return`datetime() - ${u} > duration('${f}')`;if(p===`withinduration`)return`datetime() - ${u} <= duration('${f}')`;let m=(0,e.toArray)(f,{retainEmptyStrings:!1}).map(e=>[e,n.toDate(e)]).filter(([,e])=>n.isValid(e)),h=e=>{let r=t(e);return c(r?n.toISOStringDateOnly(e):n.toISOString(e),r)};switch(p){case`in`:case`notin`:{if(m.length===0)return``;let e=m.map(([e])=>h(e));return`${s(p)?`NOT `:``}${u} IN [${e.join(`, `)}]`}case`between`:case`notbetween`:{if(m.length<2)return``;let[e,t]=m,[r,i]=n.isBefore(e[1],t[1])?[e,t]:[t,e],a=`${h(r[0])} <= ${u} AND ${u} <= ${h(i[0])}`;return p===`notbetween`?`NOT (${a})`:a}default:{if(m.length===0)return``;let[e]=m[0];return`${u} ${p===`<>`?`<>`:p} ${h(e)}`}}},u=t=>(n,i)=>{let a=i??{},{field:o,operator:s,value:c,valueSource:l}=n;if(l===`field`||!r(a.context?.isDateField,n,a))return(0,e.defaultRuleProcessorMongoDBQuery)(n,a);if(s===`=`)return{[o]:t.toDate(c)};switch(s){case`<`:case`<=`:case`!=`:case`>`:case`>=`:return{[o]:{[e.mongoOperators[s]]:t.toDate(c)}}}let u=(0,e.toArray)(n.value,{retainEmptyStrings:!1}).map(e=>t.toDate(e)).filter(e=>t.isValid(e));switch(s){case`in`:case`notIn`:return{[o]:{[e.mongoOperators[s]]:u}};case`between`:case`notBetween`:{if(u.length<2)return``;let[e,n]=u,r=t.isBefore(e,n)?[e,n]:[n,e];return s===`between`?{[o]:{$gte:r[0],$lte:r[1]}}:{$or:[{[o]:{$lt:r[0]}},{[o]:{$gt:r[1]}}]}}}return(0,e.defaultRuleProcessorMongoDBQuery)(n,a)},d={"<":`is before`,">":`is after`,"<=":`is on or before`,">=":`is on or after`,in:[`is one of the dates`,`is the same as a date in`],notin:[`is not one of the dates`,`is not the same as any date in`],between:[`is between`,`is between the dates in`],notbetween:[`is not between`,`is not between the dates in`]},f=(e,n)=>t(n?.context?.originalValue)?new Intl.DateTimeFormat(n?.context?.locales,{dateStyle:`full`,...n?.context?.dateFormat}).format(e.value):new Intl.DateTimeFormat(n?.context?.locales,{dateStyle:`full`,timeStyle:`long`,...n?.context?.dateTimeFormat}).format(e.value),p=t=>(n,i)=>{let a=i??{},o=(0,e.lc)(n.operator),s=``,{fieldData:c,quoteFieldNamesWith:l=[``,``],fieldIdentifierSeparator:u=``,operatorProcessor:p=e.defaultOperatorProcessorNL,wordOrder:m=`SVO`,context:h={},operatorMap:g=d}=a;if(!r(h.isDateField,n,a))return(0,e.defaultRuleProcessorNL)(n,a);if(n.valueSource===`field`)return(0,e.defaultRuleProcessorNL)(n,{...a,operatorMap:d});if((o===`in`||o===`notin`||o===`between`||o===`notbetween`)&&!n.value)return``;let _=(0,e.toArray)(n.value,{retainEmptyStrings:!1}).map(e=>[e,t.toDate(e)]).filter(e=>t.isValid(e[1]));switch(o){case`in`:case`notin`:if(_.length===0)return``;s=`(${_.map(e=>f({field:n.field,operator:`=`,value:e[1]},{...a,context:{...h,originalValue:e[0]}})).join(`, `)})`;break;case`between`:case`notbetween`:{if(_.length<2)return``;let[e,r]=_;s=(t.isBefore(e[1],r[1])?[e,r]:[r,e]).map(([e,t])=>f({field:n.field,operator:`=`,value:t},{...a,context:{...h,originalValue:e}})).join(` ${a.translations?.and??`and`} `)}break;default:{let[e,t]=_[0]??[``,``];s=e?f({field:n.field,operator:`=`,value:t},{...a,context:{...h,originalValue:e}}):``}}let v={S:(0,e.getQuotedFieldName)(c?.label??n.field,{quoteFieldNamesWith:l,fieldIdentifierSeparator:u}),V:p(n,{...a,operatorMap:{...d,...g}}),O:s};return(0,e.normalizeConstituentWordOrder)(m).map(e=>`${v[e]}`).join(` `).trim()},m=e=>/^(does)?not/i.test(e),h=(e,t)=>t?`"${e}"^^xsd:date`:`"${e}"^^xsd:dateTime`,g=n=>(i,a)=>{let o=a??{},{context:s={}}=o;if(i.valueSource===`field`||!r(s.isDateField,i,o))return(0,e.defaultRuleProcessorSPARQL)(i,o);let{field:c,operator:l,value:u}=i,d=(0,e.lc)(l);if(d===`olderthanduration`)return`NOW() - ${c} > "${u}"^^xsd:duration`;if(d===`withinduration`)return`NOW() - ${c} <= "${u}"^^xsd:duration`;let f=(0,e.toArray)(u,{retainEmptyStrings:!1}).map(e=>[e,n.toDate(e)]).filter(([,e])=>n.isValid(e)),p=e=>{let r=t(e);return h(r?n.toISOStringDateOnly(e):n.toISOString(e),r)};switch(d){case`in`:case`notin`:{if(f.length===0)return``;let e=f.map(([e])=>p(e)),t=m(d)?` && `:` || `,n=m(d)?`!=`:`=`;return e.map(e=>`${c} ${n} ${e}`).join(t)}case`between`:case`notbetween`:{if(f.length<2)return``;let[e,t]=f,[r,i]=n.isBefore(e[1],t[1])?[e,t]:[t,e];return d===`notbetween`?`(${c} < ${p(r[0])} || ${c} > ${p(i[0])})`:`${c} >= ${p(r[0])} && ${c} <= ${p(i[0])}`}default:{if(f.length===0)return``;let[e]=f[0];return`${c} ${d===`<>`?`!=`:d} ${p(e)}`}}},_=({toISOStringDateOnly:n,toISOString:r})=>(i,a)=>t(a?.context?.originalValue)?(0,e.defaultValueProcessorByRule)({...i,value:n(i.value)},a):(0,e.defaultValueProcessorByRule)({...i,value:r(i.value)},a),v=({toISOStringDateOnly:t,toISOString:n})=>(r,i)=>{let a=/^(?:small)?datetime/i.test(i?.fieldData?.datatype)?`datetimeoffset`:`date`,o=a===`datetimeoffset`?n(r.value):t(r.value);return(0,e.defaultValueProcessorByRule)({...r,value:o},{...i,wrapValueWith:[`cast(`,` as ${a})`]})},y=({toISOStringDateOnly:t,toISOString:n})=>(r,i)=>{let a=/^(?:datetime|timestamp)/i.test(i?.fieldData?.datatype)?`datetime`:`date`,o=a===`datetime`?n(r.value):t(r.value);return(0,e.defaultValueProcessorByRule)({...r,value:o},{...i,wrapValueWith:[`cast(`,` as ${a})`]})},b=({toISOStringDateOnly:t,toISOString:n})=>(r,i)=>{let a=/^timestamp/i.test(i?.fieldData?.datatype)?`timestamp`:`date`,o=a===`timestamp`?n(r.value).replaceAll(`T`,` `).replace(`Z`,` UTC`):t(r.value);return(0,e.defaultValueProcessorByRule)({...r,value:o},{...i,wrapValueWith:[a,``]})},x=({toISOStringDateOnly:t,toISOString:n})=>(r,i)=>{let a=/^timestamp/i.test(i?.fieldData?.datatype)?`timestamp`:`date`,o=a===`timestamp`?n(r.value):t(r.value);return(0,e.defaultValueProcessorByRule)({...r,value:o},{...i,wrapValueWith:[a,``]})},S={ansi:_,mssql:v,mysql:y,oracle:b,postgresql:x,sqlite:_},C=t=>(n,i)=>{let a=i??{},o=(0,e.mapSQLOperator)(n.operator),s=(0,e.lc)(o),{quoteFieldNamesWith:c=[``,``],fieldIdentifierSeparator:l=``,context:u={}}=a,d=``;if(n.valueSource===`field`||!r(u.isDateField,n,a))return(0,e.defaultRuleProcessorSQL)(n,a);let f=S[a.preset](t),p=(0,e.toArray)(n.value,{retainEmptyStrings:!1}).map(e=>[e,t.toDate(e)]).filter(e=>t.isValid(e[1]));switch(s){case`in`:case`not in`:if(p.length===0)return``;d=`(${p.map(e=>f({field:n.field,operator:`=`,value:e[1]},{...a,context:{originalValue:e[0]}})).join(`, `)})`;break;case`between`:case`not between`:{if(p.length<2)return``;let[e,r]=p;d=(t.isBefore(e[1],r[1])?[e,r]:[r,e]).map(([e,t])=>f({field:n.field,operator:`=`,value:t},{...a,context:{originalValue:e}})).join(` and `)}break;default:{let[e,t]=p[0]??[``,``];d=f({field:n.field,operator:`=`,value:t},{...a,context:{originalValue:e}})}}return`${(0,e.getQuotedFieldName)(n.field,{quoteFieldNamesWith:c,fieldIdentifierSeparator:l})} ${o} ${d}`.trim()};Object.defineProperty(exports,`a`,{enumerable:!0,get:function(){return b}}),Object.defineProperty(exports,`c`,{enumerable:!0,get:function(){return f}}),Object.defineProperty(exports,`d`,{enumerable:!0,get:function(){return u}}),Object.defineProperty(exports,`f`,{enumerable:!0,get:function(){return l}}),Object.defineProperty(exports,`g`,{enumerable:!0,get:function(){return r}}),Object.defineProperty(exports,`h`,{enumerable:!0,get:function(){return t}}),Object.defineProperty(exports,`i`,{enumerable:!0,get:function(){return y}}),Object.defineProperty(exports,`l`,{enumerable:!0,get:function(){return d}}),Object.defineProperty(exports,`m`,{enumerable:!0,get:function(){return i}}),Object.defineProperty(exports,`n`,{enumerable:!0,get:function(){return _}}),Object.defineProperty(exports,`o`,{enumerable:!0,get:function(){return x}}),Object.defineProperty(exports,`p`,{enumerable:!0,get:function(){return o}}),Object.defineProperty(exports,`r`,{enumerable:!0,get:function(){return v}}),Object.defineProperty(exports,`s`,{enumerable:!0,get:function(){return g}}),Object.defineProperty(exports,`t`,{enumerable:!0,get:function(){return C}}),Object.defineProperty(exports,`u`,{enumerable:!0,get:function(){return p}});
2
+ //# sourceMappingURL=getDatetimeRuleProcessorSQL-pAGh4Q0-.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"getDatetimeRuleProcessorSQL-pAGh4Q0-.js","names":["shouldNegate","shouldNegate","mongoOperators","defaultOperatorProcessorNL"],"sources":["../../src/utils.ts","../../src/getDatetimeJsonLogicOperations.ts","../../src/getDatetimeRuleProcessorCEL.ts","../../src/getDatetimeRuleProcessorCypher.ts","../../src/getDatetimeRuleProcessorMongoDBQuery.ts","../../src/getDatetimeRuleProcessorNL.ts","../../src/getDatetimeRuleProcessorSPARQL.ts","../../src/getDatetimeRuleProcessorSQL.ts"],"sourcesContent":["import type { RuleProcessor } from 'react-querybuilder';\nimport type { IsDateField, IsDateFieldFunction } from './types';\n\nexport const isISOStringDateOnly = (\n date: unknown\n): date is `${number}${number}${number}${number}-${number}${number}-${number}${number}` =>\n typeof date === 'string' && /^\\d{4}-\\d{2}-\\d{2}$/.test(date);\n\nexport const defaultIsDateField: IsDateFieldFunction = (\n ...[rule, opts]: Parameters<RuleProcessor>\n): boolean =>\n rule.operator !== 'contains' &&\n rule.operator !== 'beginsWith' &&\n rule.operator !== 'endsWith' &&\n rule.operator !== 'doesNotContain' &&\n rule.operator !== 'doesNotBeginWith' &&\n rule.operator !== 'doesNotEndWith' &&\n rule.operator !== 'null' &&\n rule.operator !== 'notNull' &&\n /^(?:date|datetime|datetimeoffset|timestamp)\\b/i.test(opts?.fieldData?.datatype as string);\n\nexport const processIsDateField = (\n isDateField: IsDateField,\n ...[rule, opts]: Parameters<RuleProcessor>\n): boolean => {\n if (typeof isDateField === 'boolean') {\n return isDateField;\n }\n\n if (typeof isDateField === 'function') {\n return isDateField(rule, opts);\n }\n\n if (Array.isArray(isDateField)) {\n return isDateField.some(condition =>\n Object.entries(condition).every(([key, value]) => opts?.fieldData?.[key] === value)\n );\n }\n\n if (typeof isDateField === 'object') {\n return Object.entries(isDateField).every(([key, value]) => opts?.fieldData?.[key] === value);\n }\n\n return defaultIsDateField(rule, opts);\n};\n","import type { RQBDateTimeLibraryAPI, RQBJsonLogicDateTimeOperations } from './types';\n\n/**\n * Custom operations for use with JsonLogic objects generated by\n * {@link datetimeRuleProcessorJsonLogic}.\n */\nexport const getDatetimeJsonLogicOperations = ({\n isAfter,\n isBefore,\n isSame,\n}: RQBDateTimeLibraryAPI): RQBJsonLogicDateTimeOperations => ({\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});\n","import type { RuleProcessor } from 'react-querybuilder';\nimport { defaultRuleProcessorCEL, lc, toArray } from 'react-querybuilder';\nimport type { RQBDateTimeLibraryAPI } from './types';\nimport { processIsDateField } 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 (rule.valueSource === 'field' || !processIsDateField(context.isDateField, rule, opts)) {\n return defaultRuleProcessorCEL(rule, opts);\n }\n\n const ts = (d: string | Date) => `timestamp(\"${apiFns.toISOString(d)}\")`;\n\n const operatorTL = lc(rule.operator.replace(/^=$/, '=='));\n\n switch (operatorTL) {\n case '<':\n case '<=':\n case '==':\n case '!=':\n case '>':\n case '>=':\n return `${rule.field} ${operatorTL} ${ts(rule.value)}`;\n }\n\n const valueAsArray: string[] = toArray(rule.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';\nimport { defaultRuleProcessorCypher, lc, toArray } from 'react-querybuilder';\nimport type { RQBDateTimeLibraryAPI } from './types';\nimport { isISOStringDateOnly, processIsDateField } 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 (rule.valueSource === 'field' || !processIsDateField(context.isDateField, rule, opts)) {\n return defaultRuleProcessorCypher(rule, opts);\n }\n\n const { field, operator, value } = rule;\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('${value}')`;\n }\n if (operatorTL === 'withinduration') {\n return `datetime() - ${field} <= duration('${value}')`;\n }\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';\nimport { defaultRuleProcessorMongoDBQuery, mongoOperators, toArray } from 'react-querybuilder';\nimport type { RQBDateTimeLibraryAPI } from './types';\nimport { 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 \"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, operator, value, valueSource } = rule;\n\n if (valueSource === 'field' || !processIsDateField(opts.context?.isDateField, rule, opts)) {\n return defaultRuleProcessorMongoDBQuery(rule, opts);\n }\n\n if (operator === '=') {\n return { [field]: apiFns.toDate(value) };\n }\n\n switch (operator) {\n case '<':\n case '<=':\n case '!=':\n case '>':\n case '>=':\n return { [field]: { [mongoOperators[operator]]: apiFns.toDate(value) } };\n }\n\n const valueAsArray: string[] = toArray(rule.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 { ExportOperatorMap, RuleProcessor, ValueProcessorByRule } from 'react-querybuilder';\nimport {\n defaultOperatorProcessorNL,\n defaultRuleProcessorNL,\n getQuotedFieldName,\n lc,\n normalizeConstituentWordOrder,\n toArray,\n} from 'react-querybuilder';\nimport type { RQBDateTimeLibraryAPI } from './types';\nimport { isISOStringDateOnly, processIsDateField } 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 operatorLowerCase = lc(rule.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 (rule.valueSource === 'field') {\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 const valueAsArray: string[] = toArray(rule.value, { 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(rule, {\n ...opts,\n operatorMap: { ...defaultDateTimeNLOperatorMap, ...operatorMap },\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';\nimport { defaultRuleProcessorSPARQL, lc, toArray } from 'react-querybuilder';\nimport type { RQBDateTimeLibraryAPI } from './types';\nimport { isISOStringDateOnly, processIsDateField } 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 (rule.valueSource === 'field' || !processIsDateField(context.isDateField, rule, opts)) {\n return defaultRuleProcessorSPARQL(rule, opts);\n }\n\n const { field, operator, value } = rule;\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 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 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 joiner = shouldNegate(operatorTL) ? ' && ' : ' || ';\n const op = shouldNegate(operatorTL) ? '!=' : '=';\n return items.map(item => `${field} ${op} ${item}`).join(joiner);\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, SQLPreset, ValueProcessorByRule } from 'react-querybuilder';\nimport {\n defaultRuleProcessorSQL,\n defaultValueProcessorByRule,\n getQuotedFieldName,\n lc,\n mapSQLOperator,\n toArray,\n} from 'react-querybuilder';\nimport type { RQBDateTimeLibraryAPI } from './types';\nimport { isISOStringDateOnly, processIsDateField } 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(rule.operator);\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 (rule.valueSource === 'field' || !processIsDateField(context.isDateField, rule, opts)) {\n return defaultRuleProcessorSQL(rule, opts);\n }\n\n const valueProcessor = presetToValueProcessorMap[opts.preset!](apiFns);\n\n const valueAsArray: string[] = toArray(rule.value, { 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 `${getQuotedFieldName(rule.field, { quoteFieldNamesWith, fieldIdentifierSeparator })} ${operator} ${finalValue}`.trim();\n };\n"],"mappings":"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"}
@@ -30,6 +30,19 @@ declare const getDatetimeJsonLogicOperations: ({
30
30
  */
31
31
  declare const getDatetimeRuleProcessorCEL: (apiFns: RQBDateTimeLibraryAPI) => RuleProcessor;
32
32
  //#endregion
33
+ //#region src/getDatetimeRuleProcessorCypher.d.ts
34
+ /**
35
+ * Generates a rule processor with date/time features for use by
36
+ * {@link @react-querybuilder/core!formatQuery formatQuery} with the "cypher" or "gql" format.
37
+ *
38
+ * Supports:
39
+ * - Standard comparison operators (`=`, `!=`, `<`, `>`, `<=`, `>=`)
40
+ * - Range operators (between, notBetween, in, notIn)
41
+ * - Duration math via custom operators: `olderThanDuration` and `withinDuration`
42
+ * (e.g., value `"P30D"` → `datetime() - field > duration('P30D')`)
43
+ */
44
+ declare const getDatetimeRuleProcessorCypher: (apiFns: RQBDateTimeLibraryAPI) => RuleProcessor;
45
+ //#endregion
33
46
  //#region src/getDatetimeRuleProcessorJSONata.d.ts
34
47
  /**
35
48
  * Generates a rule processor with date/time features for use by
@@ -57,6 +70,19 @@ declare const datetimeValueProcessorNL: ValueProcessorByRule;
57
70
  */
58
71
  declare const getDatetimeRuleProcessorNL: (apiFns: RQBDateTimeLibraryAPI) => RuleProcessor;
59
72
  //#endregion
73
+ //#region src/getDatetimeRuleProcessorSPARQL.d.ts
74
+ /**
75
+ * Generates a rule processor with date/time features for use by
76
+ * {@link @react-querybuilder/core!formatQuery formatQuery} with the "sparql" format.
77
+ *
78
+ * Supports:
79
+ * - Standard comparison operators (`=`, `!=`, `<`, `>`, `<=`, `>=`)
80
+ * - Range operators (between, notBetween, in, notIn)
81
+ * - Duration math via custom operators: `olderThanDuration` and `withinDuration`
82
+ * (e.g., value `"P30D"` → `NOW() - ?field > "P30D"^^xsd:duration`)
83
+ */
84
+ declare const getDatetimeRuleProcessorSPARQL: (apiFns: RQBDateTimeLibraryAPI) => RuleProcessor;
85
+ //#endregion
60
86
  //#region src/getDatetimeRuleProcessorSQL.d.ts
61
87
  /**
62
88
  * Generates a value processor with date/time features for use by
@@ -104,5 +130,5 @@ declare const getDatetimeValueProcessorPostgreSQL: ({
104
130
  */
105
131
  declare const getDatetimeRuleProcessorSQL: (apiFns: RQBDateTimeLibraryAPI) => RuleProcessor;
106
132
  //#endregion
107
- export { IsDateField, IsDateFieldFunction, RQBDateTimeJsonLogic, RQBDateTimeLibraryAPI, RQBJsonLogicDateAfter, RQBJsonLogicDateBefore, RQBJsonLogicDateBetween, RQBJsonLogicDateIn, RQBJsonLogicDateNotBetween, RQBJsonLogicDateNotIn, RQBJsonLogicDateNotOn, RQBJsonLogicDateOn, RQBJsonLogicDateOnOrAfter, RQBJsonLogicDateOnOrBefore, RQBJsonLogicDateTimeOperations, datetimeRuleProcessorJsonLogic, datetimeValueProcessorNL, defaultDateTimeNLOperatorMap, getDatetimeJsonLogicOperations, getDatetimeRuleProcessorCEL, getDatetimeRuleProcessorJSONata, getDatetimeRuleProcessorMongoDBQuery, getDatetimeRuleProcessorNL, getDatetimeRuleProcessorSQL, getDatetimeValueProcessorANSI, getDatetimeValueProcessorMSSQL, getDatetimeValueProcessorMySQL, getDatetimeValueProcessorOracle, getDatetimeValueProcessorPostgreSQL };
133
+ export { IsDateField, IsDateFieldFunction, RQBDateTimeJsonLogic, RQBDateTimeLibraryAPI, RQBJsonLogicDateAfter, RQBJsonLogicDateBefore, RQBJsonLogicDateBetween, RQBJsonLogicDateIn, RQBJsonLogicDateNotBetween, RQBJsonLogicDateNotIn, RQBJsonLogicDateNotOn, RQBJsonLogicDateOn, RQBJsonLogicDateOnOrAfter, RQBJsonLogicDateOnOrBefore, RQBJsonLogicDateTimeOperations, datetimeRuleProcessorJsonLogic, datetimeValueProcessorNL, defaultDateTimeNLOperatorMap, getDatetimeJsonLogicOperations, getDatetimeRuleProcessorCEL, getDatetimeRuleProcessorCypher, getDatetimeRuleProcessorJSONata, getDatetimeRuleProcessorMongoDBQuery, getDatetimeRuleProcessorNL, getDatetimeRuleProcessorSPARQL, getDatetimeRuleProcessorSQL, getDatetimeValueProcessorANSI, getDatetimeValueProcessorMSSQL, getDatetimeValueProcessorMySQL, getDatetimeValueProcessorOracle, getDatetimeValueProcessorPostgreSQL };
108
134
  //# sourceMappingURL=react-querybuilder_datetime.cjs.development.d.ts.map
@@ -48,6 +48,14 @@ declare const datetimeRuleProcessorMongoDBQuery: ValueProcessorByRule;
48
48
  * {@link @react-querybuilder/core!formatQuery formatQuery} rule processor for "natural_language" format using date-fns
49
49
  */
50
50
  declare const datetimeRuleProcessorNL: ValueProcessorByRule;
51
+ /**
52
+ * {@link @react-querybuilder/core!formatQuery formatQuery} rule processor for "cypher"/"gql" format using date-fns
53
+ */
54
+ declare const datetimeRuleProcessorCypher: ValueProcessorByRule;
55
+ /**
56
+ * {@link @react-querybuilder/core!formatQuery formatQuery} rule processor for "sparql" format using date-fns
57
+ */
58
+ declare const datetimeRuleProcessorSPARQL: ValueProcessorByRule;
51
59
  //#endregion
52
- export { datetimeRuleProcessorCEL, datetimeRuleProcessorMongoDBQuery, datetimeRuleProcessorNL, datetimeRuleProcessorSQL, datetimeValueProcessorANSI, datetimeValueProcessorMSSQL, datetimeValueProcessorMySQL, datetimeValueProcessorOracle, datetimeValueProcessorPostgreSQL, jsonLogicDateTimeOperations, rqbDateTimeLibraryAPI };
60
+ export { datetimeRuleProcessorCEL, datetimeRuleProcessorCypher, datetimeRuleProcessorMongoDBQuery, datetimeRuleProcessorNL, datetimeRuleProcessorSPARQL, datetimeRuleProcessorSQL, datetimeValueProcessorANSI, datetimeValueProcessorMSSQL, datetimeValueProcessorMySQL, datetimeValueProcessorOracle, datetimeValueProcessorPostgreSQL, jsonLogicDateTimeOperations, rqbDateTimeLibraryAPI };
53
61
  //# sourceMappingURL=react-querybuilder_datetime.cjs.development.date-fns.d.ts.map
@@ -1,5 +1,5 @@
1
1
  Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
2
- const require_getDatetimeRuleProcessorSQL = require("./getDatetimeRuleProcessorSQL-Bn34z-S-.js");
2
+ const require_getDatetimeRuleProcessorSQL = require("./getDatetimeRuleProcessorSQL-DVtRZyr6.js");
3
3
  require("./react-querybuilder_datetime.cjs.development.dayjs.js");
4
4
  let date_fns = require("date-fns");
5
5
  //#region src/rqbDateTimeLibraryAPI.date-fns.ts
@@ -70,10 +70,20 @@ const datetimeRuleProcessorMongoDBQuery = require_getDatetimeRuleProcessorSQL.ge
70
70
  * {@link @react-querybuilder/core!formatQuery formatQuery} rule processor for "natural_language" format using date-fns
71
71
  */
72
72
  const datetimeRuleProcessorNL = require_getDatetimeRuleProcessorSQL.getDatetimeRuleProcessorNL(rqbDateTimeLibraryAPI);
73
+ /**
74
+ * {@link @react-querybuilder/core!formatQuery formatQuery} rule processor for "cypher"/"gql" format using date-fns
75
+ */
76
+ const datetimeRuleProcessorCypher = require_getDatetimeRuleProcessorSQL.getDatetimeRuleProcessorCypher(rqbDateTimeLibraryAPI);
77
+ /**
78
+ * {@link @react-querybuilder/core!formatQuery formatQuery} rule processor for "sparql" format using date-fns
79
+ */
80
+ const datetimeRuleProcessorSPARQL = require_getDatetimeRuleProcessorSQL.getDatetimeRuleProcessorSPARQL(rqbDateTimeLibraryAPI);
73
81
  //#endregion
74
82
  exports.datetimeRuleProcessorCEL = datetimeRuleProcessorCEL;
83
+ exports.datetimeRuleProcessorCypher = datetimeRuleProcessorCypher;
75
84
  exports.datetimeRuleProcessorMongoDBQuery = datetimeRuleProcessorMongoDBQuery;
76
85
  exports.datetimeRuleProcessorNL = datetimeRuleProcessorNL;
86
+ exports.datetimeRuleProcessorSPARQL = datetimeRuleProcessorSPARQL;
77
87
  exports.datetimeRuleProcessorSQL = datetimeRuleProcessorSQL;
78
88
  exports.datetimeValueProcessorANSI = datetimeValueProcessorANSI;
79
89
  exports.datetimeValueProcessorMSSQL = datetimeValueProcessorMSSQL;
@@ -1 +1 @@
1
- {"version":3,"file":"react-querybuilder_datetime.cjs.development.date-fns.js","names":["isISOStringDateOnly","getDatetimeJsonLogicOperations","getDatetimeRuleProcessorSQL","getDatetimeValueProcessorANSI","getDatetimeValueProcessorMSSQL","getDatetimeValueProcessorMySQL","getDatetimeValueProcessorOracle","getDatetimeValueProcessorPostgreSQL","getDatetimeRuleProcessorCEL","getDatetimeRuleProcessorMongoDBQuery","getDatetimeRuleProcessorNL"],"sources":["../../src/rqbDateTimeLibraryAPI.date-fns.ts","../../src/index.date-fns.ts"],"sourcesContent":["import {\n toDate as dateFnsToDate,\n format,\n isAfter,\n isBefore,\n isSameDay,\n isValid,\n parseISO,\n} from 'date-fns';\nimport type { RQBDateTimeLibraryAPI } from './types';\nimport { isISOStringDateOnly } from './utils';\n\nconst toDate: typeof dateFnsToDate = a => (typeof a === 'string' ? parseISO(a) : dateFnsToDate(a));\nconst iso8601DateOnly = 'yyyy-MM-dd';\n\n/**\n * {@link RQBDateTimeLibraryAPI} for date-fns\n */\nexport const rqbDateTimeLibraryAPI: RQBDateTimeLibraryAPI = {\n format: (d, fmt) => format(toDate(d), fmt.replace('YYYY-MM-DD', iso8601DateOnly)),\n isAfter,\n isBefore,\n isSame: (a, b) => {\n const aToDate = toDate(a);\n const bToDate = toDate(b);\n return isISOStringDateOnly(a) || isISOStringDateOnly(b)\n ? isSameDay(aToDate, bToDate)\n : aToDate.getTime() === bToDate.getTime();\n },\n isValid: d => isValid(toDate(d)),\n toDate,\n toISOString: d => {\n const dToDate = toDate(d);\n return isValid(dToDate) ? dToDate.toISOString() : '';\n },\n toISOStringDateOnly: d => {\n const dToDate = toDate(d);\n return isValid(dToDate) ? format(dToDate, iso8601DateOnly) : '';\n },\n};\n","/**\n * Import from `\"@react-querybuilder/datetime/date-fns\"` for enhanced date/time support using [date-fns](https://date-fns.org/).\n *\n * @module date-fns\n */\n\nimport type { RuleProcessor, ValueProcessorByRule } from 'react-querybuilder';\nimport { getDatetimeJsonLogicOperations } from './getDatetimeJsonLogicOperations';\nimport { getDatetimeRuleProcessorCEL } from './getDatetimeRuleProcessorCEL';\nimport { getDatetimeRuleProcessorMongoDBQuery } from './getDatetimeRuleProcessorMongoDBQuery';\nimport { getDatetimeRuleProcessorNL } from './getDatetimeRuleProcessorNL';\nimport {\n getDatetimeRuleProcessorSQL,\n getDatetimeValueProcessorANSI,\n getDatetimeValueProcessorMSSQL,\n getDatetimeValueProcessorMySQL,\n getDatetimeValueProcessorOracle,\n getDatetimeValueProcessorPostgreSQL,\n} from './getDatetimeRuleProcessorSQL';\nimport { rqbDateTimeLibraryAPI } from './rqbDateTimeLibraryAPI.date-fns';\nimport type { RQBJsonLogicDateTimeOperations } from './types';\n\n/**\n * Custom JsonLogic date/time operations using date-fns\n */\nexport const jsonLogicDateTimeOperations: RQBJsonLogicDateTimeOperations =\n getDatetimeJsonLogicOperations(rqbDateTimeLibraryAPI);\n\n/**\n * {@link @react-querybuilder/core!formatQuery formatQuery} rule processor for \"sql\" format using date-fns\n */\nexport const datetimeRuleProcessorSQL: RuleProcessor =\n getDatetimeRuleProcessorSQL(rqbDateTimeLibraryAPI);\n/**\n * {@link @react-querybuilder/core!formatQuery formatQuery} value processor for \"sql\" format (\"ansi\" preset) using date-fns\n */\nexport const datetimeValueProcessorANSI: ValueProcessorByRule =\n getDatetimeValueProcessorANSI(rqbDateTimeLibraryAPI);\n/**\n * {@link @react-querybuilder/core!formatQuery formatQuery} value processor for \"sql\" format (\"mssql\" preset) using date-fns\n */\nexport const datetimeValueProcessorMSSQL: ValueProcessorByRule =\n getDatetimeValueProcessorMSSQL(rqbDateTimeLibraryAPI);\n/**\n * {@link @react-querybuilder/core!formatQuery formatQuery} value processor for \"sql\" format (\"mysql\" preset) using date-fns\n */\nexport const datetimeValueProcessorMySQL: ValueProcessorByRule =\n getDatetimeValueProcessorMySQL(rqbDateTimeLibraryAPI);\n/**\n * {@link @react-querybuilder/core!formatQuery formatQuery} value processor for \"sql\" format (\"oracle\" preset) using date-fns\n */\nexport const datetimeValueProcessorOracle: ValueProcessorByRule =\n getDatetimeValueProcessorOracle(rqbDateTimeLibraryAPI);\n/**\n * {@link @react-querybuilder/core!formatQuery formatQuery} value processor for \"sql\" format (\"postgresql\" preset) using date-fns\n */\nexport const datetimeValueProcessorPostgreSQL: ValueProcessorByRule =\n getDatetimeValueProcessorPostgreSQL(rqbDateTimeLibraryAPI);\n\n/**\n * {@link @react-querybuilder/core!formatQuery formatQuery} rule processor for \"cel\" format using date-fns\n */\nexport const datetimeRuleProcessorCEL: ValueProcessorByRule =\n getDatetimeRuleProcessorCEL(rqbDateTimeLibraryAPI);\n\n/**\n * {@link @react-querybuilder/core!formatQuery formatQuery} rule processor for \"mongodb_query\" format using date-fns\n */\nexport const datetimeRuleProcessorMongoDBQuery: ValueProcessorByRule =\n getDatetimeRuleProcessorMongoDBQuery(rqbDateTimeLibraryAPI);\n\n/**\n * {@link @react-querybuilder/core!formatQuery formatQuery} rule processor for \"natural_language\" format using date-fns\n */\nexport const datetimeRuleProcessorNL: ValueProcessorByRule =\n getDatetimeRuleProcessorNL(rqbDateTimeLibraryAPI);\n\nexport * from './rqbDateTimeLibraryAPI.date-fns';\n"],"mappings":";;;;;AAYA,MAAM,UAA+B,MAAM,OAAO,MAAM,YAAA,GAAA,SAAA,UAAoB,EAAE,IAAA,GAAA,SAAA,QAAiB,EAAE;AACjG,MAAM,kBAAkB;;;;AAKxB,MAAa,wBAA+C;CAC1D,SAAS,GAAG,SAAA,GAAA,SAAA,QAAe,OAAO,EAAE,EAAE,IAAI,QAAQ,cAAc,gBAAgB,CAAC;CACjF,SAAA,SAAA;CACA,UAAA,SAAA;CACA,SAAS,GAAG,MAAM;EAChB,MAAM,UAAU,OAAO,EAAE;EACzB,MAAM,UAAU,OAAO,EAAE;AACzB,SAAOA,oCAAAA,oBAAoB,EAAE,IAAIA,oCAAAA,oBAAoB,EAAE,IAAA,GAAA,SAAA,WACzC,SAAS,QAAQ,GAC3B,QAAQ,SAAS,KAAK,QAAQ,SAAS;;CAE7C,UAAS,OAAA,GAAA,SAAA,SAAa,OAAO,EAAE,CAAC;CAChC;CACA,cAAa,MAAK;EAChB,MAAM,UAAU,OAAO,EAAE;AACzB,UAAA,GAAA,SAAA,SAAe,QAAQ,GAAG,QAAQ,aAAa,GAAG;;CAEpD,sBAAqB,MAAK;EACxB,MAAM,UAAU,OAAO,EAAE;AACzB,UAAA,GAAA,SAAA,SAAe,QAAQ,IAAA,GAAA,SAAA,QAAU,SAAS,gBAAgB,GAAG;;CAEhE;;;;;;ACdD,MAAa,8BACXC,oCAAAA,+BAA+B,sBAAsB;;;;AAKvD,MAAa,2BACXC,oCAAAA,4BAA4B,sBAAsB;;;;AAIpD,MAAa,6BACXC,oCAAAA,8BAA8B,sBAAsB;;;;AAItD,MAAa,8BACXC,oCAAAA,+BAA+B,sBAAsB;;;;AAIvD,MAAa,8BACXC,oCAAAA,+BAA+B,sBAAsB;;;;AAIvD,MAAa,+BACXC,oCAAAA,gCAAgC,sBAAsB;;;;AAIxD,MAAa,mCACXC,oCAAAA,oCAAoC,sBAAsB;;;;AAK5D,MAAa,2BACXC,oCAAAA,4BAA4B,sBAAsB;;;;AAKpD,MAAa,oCACXC,oCAAAA,qCAAqC,sBAAsB;;;;AAK7D,MAAa,0BACXC,oCAAAA,2BAA2B,sBAAsB"}
1
+ {"version":3,"file":"react-querybuilder_datetime.cjs.development.date-fns.js","names":["isISOStringDateOnly","getDatetimeJsonLogicOperations","getDatetimeRuleProcessorSQL","getDatetimeValueProcessorANSI","getDatetimeValueProcessorMSSQL","getDatetimeValueProcessorMySQL","getDatetimeValueProcessorOracle","getDatetimeValueProcessorPostgreSQL","getDatetimeRuleProcessorCEL","getDatetimeRuleProcessorMongoDBQuery","getDatetimeRuleProcessorNL","getDatetimeRuleProcessorCypher","getDatetimeRuleProcessorSPARQL"],"sources":["../../src/rqbDateTimeLibraryAPI.date-fns.ts","../../src/index.date-fns.ts"],"sourcesContent":["import {\n toDate as dateFnsToDate,\n format,\n isAfter,\n isBefore,\n isSameDay,\n isValid,\n parseISO,\n} from 'date-fns';\nimport type { RQBDateTimeLibraryAPI } from './types';\nimport { isISOStringDateOnly } from './utils';\n\nconst toDate: typeof dateFnsToDate = a => (typeof a === 'string' ? parseISO(a) : dateFnsToDate(a));\nconst iso8601DateOnly = 'yyyy-MM-dd';\n\n/**\n * {@link RQBDateTimeLibraryAPI} for date-fns\n */\nexport const rqbDateTimeLibraryAPI: RQBDateTimeLibraryAPI = {\n format: (d, fmt) => format(toDate(d), fmt.replace('YYYY-MM-DD', iso8601DateOnly)),\n isAfter,\n isBefore,\n isSame: (a, b) => {\n const aToDate = toDate(a);\n const bToDate = toDate(b);\n return isISOStringDateOnly(a) || isISOStringDateOnly(b)\n ? isSameDay(aToDate, bToDate)\n : aToDate.getTime() === bToDate.getTime();\n },\n isValid: d => isValid(toDate(d)),\n toDate,\n toISOString: d => {\n const dToDate = toDate(d);\n return isValid(dToDate) ? dToDate.toISOString() : '';\n },\n toISOStringDateOnly: d => {\n const dToDate = toDate(d);\n return isValid(dToDate) ? format(dToDate, iso8601DateOnly) : '';\n },\n};\n","/**\n * Import from `\"@react-querybuilder/datetime/date-fns\"` for enhanced date/time support using [date-fns](https://date-fns.org/).\n *\n * @module date-fns\n */\n\nimport type { RuleProcessor, ValueProcessorByRule } from 'react-querybuilder';\nimport { getDatetimeJsonLogicOperations } from './getDatetimeJsonLogicOperations';\nimport { getDatetimeRuleProcessorCEL } from './getDatetimeRuleProcessorCEL';\nimport { getDatetimeRuleProcessorCypher } from './getDatetimeRuleProcessorCypher';\nimport { getDatetimeRuleProcessorMongoDBQuery } from './getDatetimeRuleProcessorMongoDBQuery';\nimport { getDatetimeRuleProcessorNL } from './getDatetimeRuleProcessorNL';\nimport { getDatetimeRuleProcessorSPARQL } from './getDatetimeRuleProcessorSPARQL';\nimport {\n getDatetimeRuleProcessorSQL,\n getDatetimeValueProcessorANSI,\n getDatetimeValueProcessorMSSQL,\n getDatetimeValueProcessorMySQL,\n getDatetimeValueProcessorOracle,\n getDatetimeValueProcessorPostgreSQL,\n} from './getDatetimeRuleProcessorSQL';\nimport { rqbDateTimeLibraryAPI } from './rqbDateTimeLibraryAPI.date-fns';\nimport type { RQBJsonLogicDateTimeOperations } from './types';\n\n/**\n * Custom JsonLogic date/time operations using date-fns\n */\nexport const jsonLogicDateTimeOperations: RQBJsonLogicDateTimeOperations =\n getDatetimeJsonLogicOperations(rqbDateTimeLibraryAPI);\n\n/**\n * {@link @react-querybuilder/core!formatQuery formatQuery} rule processor for \"sql\" format using date-fns\n */\nexport const datetimeRuleProcessorSQL: RuleProcessor =\n getDatetimeRuleProcessorSQL(rqbDateTimeLibraryAPI);\n/**\n * {@link @react-querybuilder/core!formatQuery formatQuery} value processor for \"sql\" format (\"ansi\" preset) using date-fns\n */\nexport const datetimeValueProcessorANSI: ValueProcessorByRule =\n getDatetimeValueProcessorANSI(rqbDateTimeLibraryAPI);\n/**\n * {@link @react-querybuilder/core!formatQuery formatQuery} value processor for \"sql\" format (\"mssql\" preset) using date-fns\n */\nexport const datetimeValueProcessorMSSQL: ValueProcessorByRule =\n getDatetimeValueProcessorMSSQL(rqbDateTimeLibraryAPI);\n/**\n * {@link @react-querybuilder/core!formatQuery formatQuery} value processor for \"sql\" format (\"mysql\" preset) using date-fns\n */\nexport const datetimeValueProcessorMySQL: ValueProcessorByRule =\n getDatetimeValueProcessorMySQL(rqbDateTimeLibraryAPI);\n/**\n * {@link @react-querybuilder/core!formatQuery formatQuery} value processor for \"sql\" format (\"oracle\" preset) using date-fns\n */\nexport const datetimeValueProcessorOracle: ValueProcessorByRule =\n getDatetimeValueProcessorOracle(rqbDateTimeLibraryAPI);\n/**\n * {@link @react-querybuilder/core!formatQuery formatQuery} value processor for \"sql\" format (\"postgresql\" preset) using date-fns\n */\nexport const datetimeValueProcessorPostgreSQL: ValueProcessorByRule =\n getDatetimeValueProcessorPostgreSQL(rqbDateTimeLibraryAPI);\n\n/**\n * {@link @react-querybuilder/core!formatQuery formatQuery} rule processor for \"cel\" format using date-fns\n */\nexport const datetimeRuleProcessorCEL: ValueProcessorByRule =\n getDatetimeRuleProcessorCEL(rqbDateTimeLibraryAPI);\n\n/**\n * {@link @react-querybuilder/core!formatQuery formatQuery} rule processor for \"mongodb_query\" format using date-fns\n */\nexport const datetimeRuleProcessorMongoDBQuery: ValueProcessorByRule =\n getDatetimeRuleProcessorMongoDBQuery(rqbDateTimeLibraryAPI);\n\n/**\n * {@link @react-querybuilder/core!formatQuery formatQuery} rule processor for \"natural_language\" format using date-fns\n */\nexport const datetimeRuleProcessorNL: ValueProcessorByRule =\n getDatetimeRuleProcessorNL(rqbDateTimeLibraryAPI);\n\n/**\n * {@link @react-querybuilder/core!formatQuery formatQuery} rule processor for \"cypher\"/\"gql\" format using date-fns\n */\nexport const datetimeRuleProcessorCypher: ValueProcessorByRule =\n getDatetimeRuleProcessorCypher(rqbDateTimeLibraryAPI);\n\n/**\n * {@link @react-querybuilder/core!formatQuery formatQuery} rule processor for \"sparql\" format using date-fns\n */\nexport const datetimeRuleProcessorSPARQL: ValueProcessorByRule =\n getDatetimeRuleProcessorSPARQL(rqbDateTimeLibraryAPI);\n\nexport * from './rqbDateTimeLibraryAPI.date-fns';\n"],"mappings":";;;;;AAYA,MAAM,UAA+B,MAAM,OAAO,MAAM,YAAA,GAAA,SAAA,UAAoB,EAAE,IAAA,GAAA,SAAA,QAAiB,EAAE;AACjG,MAAM,kBAAkB;;;;AAKxB,MAAa,wBAA+C;CAC1D,SAAS,GAAG,SAAA,GAAA,SAAA,QAAe,OAAO,EAAE,EAAE,IAAI,QAAQ,cAAc,gBAAgB,CAAC;CACjF,SAAA,SAAA;CACA,UAAA,SAAA;CACA,SAAS,GAAG,MAAM;EAChB,MAAM,UAAU,OAAO,EAAE;EACzB,MAAM,UAAU,OAAO,EAAE;AACzB,SAAOA,oCAAAA,oBAAoB,EAAE,IAAIA,oCAAAA,oBAAoB,EAAE,IAAA,GAAA,SAAA,WACzC,SAAS,QAAQ,GAC3B,QAAQ,SAAS,KAAK,QAAQ,SAAS;;CAE7C,UAAS,OAAA,GAAA,SAAA,SAAa,OAAO,EAAE,CAAC;CAChC;CACA,cAAa,MAAK;EAChB,MAAM,UAAU,OAAO,EAAE;AACzB,UAAA,GAAA,SAAA,SAAe,QAAQ,GAAG,QAAQ,aAAa,GAAG;;CAEpD,sBAAqB,MAAK;EACxB,MAAM,UAAU,OAAO,EAAE;AACzB,UAAA,GAAA,SAAA,SAAe,QAAQ,IAAA,GAAA,SAAA,QAAU,SAAS,gBAAgB,GAAG;;CAEhE;;;;;;ACZD,MAAa,8BACXC,oCAAAA,+BAA+B,sBAAsB;;;;AAKvD,MAAa,2BACXC,oCAAAA,4BAA4B,sBAAsB;;;;AAIpD,MAAa,6BACXC,oCAAAA,8BAA8B,sBAAsB;;;;AAItD,MAAa,8BACXC,oCAAAA,+BAA+B,sBAAsB;;;;AAIvD,MAAa,8BACXC,oCAAAA,+BAA+B,sBAAsB;;;;AAIvD,MAAa,+BACXC,oCAAAA,gCAAgC,sBAAsB;;;;AAIxD,MAAa,mCACXC,oCAAAA,oCAAoC,sBAAsB;;;;AAK5D,MAAa,2BACXC,oCAAAA,4BAA4B,sBAAsB;;;;AAKpD,MAAa,oCACXC,oCAAAA,qCAAqC,sBAAsB;;;;AAK7D,MAAa,0BACXC,oCAAAA,2BAA2B,sBAAsB;;;;AAKnD,MAAa,8BACXC,oCAAAA,+BAA+B,sBAAsB;;;;AAKvD,MAAa,8BACXC,oCAAAA,+BAA+B,sBAAsB"}
@@ -48,6 +48,14 @@ declare const datetimeRuleProcessorMongoDBQuery: ValueProcessorByRule;
48
48
  * {@link @react-querybuilder/core!formatQuery formatQuery} rule processor for "natural_language" format using Day.js
49
49
  */
50
50
  declare const datetimeRuleProcessorNL: ValueProcessorByRule;
51
+ /**
52
+ * {@link @react-querybuilder/core!formatQuery formatQuery} rule processor for "cypher"/"gql" format using Day.js
53
+ */
54
+ declare const datetimeRuleProcessorCypher: ValueProcessorByRule;
55
+ /**
56
+ * {@link @react-querybuilder/core!formatQuery formatQuery} rule processor for "sparql" format using Day.js
57
+ */
58
+ declare const datetimeRuleProcessorSPARQL: ValueProcessorByRule;
51
59
  //#endregion
52
- export { datetimeRuleProcessorCEL, datetimeRuleProcessorMongoDBQuery, datetimeRuleProcessorNL, datetimeRuleProcessorSQL, datetimeValueProcessorANSI, datetimeValueProcessorMSSQL, datetimeValueProcessorMySQL, datetimeValueProcessorOracle, datetimeValueProcessorPostgreSQL, jsonLogicDateTimeOperations, rqbDateTimeLibraryAPI };
60
+ export { datetimeRuleProcessorCEL, datetimeRuleProcessorCypher, datetimeRuleProcessorMongoDBQuery, datetimeRuleProcessorNL, datetimeRuleProcessorSPARQL, datetimeRuleProcessorSQL, datetimeValueProcessorANSI, datetimeValueProcessorMSSQL, datetimeValueProcessorMySQL, datetimeValueProcessorOracle, datetimeValueProcessorPostgreSQL, jsonLogicDateTimeOperations, rqbDateTimeLibraryAPI };
53
61
  //# sourceMappingURL=react-querybuilder_datetime.cjs.development.dayjs.d.ts.map