@react-querybuilder/datetime 8.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE.md +21 -0
- package/README.md +71 -0
- package/dist/chunk-6RML23AL.mjs +536 -0
- package/dist/chunk-6RML23AL.mjs.map +1 -0
- package/dist/chunk-EGQ3B2PY.js +550 -0
- package/dist/chunk-EGQ3B2PY.js.map +1 -0
- package/dist/chunk-SXNOZEVF.mjs +6 -0
- package/dist/chunk-SXNOZEVF.mjs.map +1 -0
- package/dist/cjs/date-fns.js +6 -0
- package/dist/cjs/dayjs.js +6 -0
- package/dist/cjs/index.js +6 -0
- package/dist/cjs/jsdate.js +6 -0
- package/dist/cjs/luxon.js +6 -0
- package/dist/cjs/react-querybuilder_datetime.cjs.development.date-fns.js +603 -0
- package/dist/cjs/react-querybuilder_datetime.cjs.development.date-fns.js.map +1 -0
- package/dist/cjs/react-querybuilder_datetime.cjs.development.dayjs.js +613 -0
- package/dist/cjs/react-querybuilder_datetime.cjs.development.dayjs.js.map +1 -0
- package/dist/cjs/react-querybuilder_datetime.cjs.development.js +760 -0
- package/dist/cjs/react-querybuilder_datetime.cjs.development.js.map +1 -0
- package/dist/cjs/react-querybuilder_datetime.cjs.development.jsdate.js +662 -0
- package/dist/cjs/react-querybuilder_datetime.cjs.development.jsdate.js.map +1 -0
- package/dist/cjs/react-querybuilder_datetime.cjs.development.luxon.js +607 -0
- package/dist/cjs/react-querybuilder_datetime.cjs.development.luxon.js.map +1 -0
- package/dist/cjs/react-querybuilder_datetime.cjs.production.date-fns.js +6 -0
- package/dist/cjs/react-querybuilder_datetime.cjs.production.date-fns.js.map +1 -0
- package/dist/cjs/react-querybuilder_datetime.cjs.production.dayjs.js +6 -0
- package/dist/cjs/react-querybuilder_datetime.cjs.production.dayjs.js.map +1 -0
- package/dist/cjs/react-querybuilder_datetime.cjs.production.js +7 -0
- package/dist/cjs/react-querybuilder_datetime.cjs.production.js.map +1 -0
- package/dist/cjs/react-querybuilder_datetime.cjs.production.jsdate.js +7 -0
- package/dist/cjs/react-querybuilder_datetime.cjs.production.jsdate.js.map +1 -0
- package/dist/cjs/react-querybuilder_datetime.cjs.production.luxon.js +6 -0
- package/dist/cjs/react-querybuilder_datetime.cjs.production.luxon.js.map +1 -0
- package/dist/react-querybuilder_datetime.date-fns.mjs +58 -0
- package/dist/react-querybuilder_datetime.date-fns.mjs.map +1 -0
- package/dist/react-querybuilder_datetime.dayjs.mjs +58 -0
- package/dist/react-querybuilder_datetime.dayjs.mjs.map +1 -0
- package/dist/react-querybuilder_datetime.jsdate.mjs +117 -0
- package/dist/react-querybuilder_datetime.jsdate.mjs.map +1 -0
- package/dist/react-querybuilder_datetime.legacy-esm.date-fns.js +58 -0
- package/dist/react-querybuilder_datetime.legacy-esm.date-fns.js.map +1 -0
- package/dist/react-querybuilder_datetime.legacy-esm.dayjs.js +58 -0
- package/dist/react-querybuilder_datetime.legacy-esm.dayjs.js.map +1 -0
- package/dist/react-querybuilder_datetime.legacy-esm.js +214 -0
- package/dist/react-querybuilder_datetime.legacy-esm.js.map +1 -0
- package/dist/react-querybuilder_datetime.legacy-esm.jsdate.js +117 -0
- package/dist/react-querybuilder_datetime.legacy-esm.jsdate.js.map +1 -0
- package/dist/react-querybuilder_datetime.legacy-esm.luxon.js +62 -0
- package/dist/react-querybuilder_datetime.legacy-esm.luxon.js.map +1 -0
- package/dist/react-querybuilder_datetime.luxon.mjs +62 -0
- package/dist/react-querybuilder_datetime.luxon.mjs.map +1 -0
- package/dist/react-querybuilder_datetime.mjs +214 -0
- package/dist/react-querybuilder_datetime.mjs.map +1 -0
- package/dist/react-querybuilder_datetime.production.date-fns.mjs +2 -0
- package/dist/react-querybuilder_datetime.production.date-fns.mjs.map +1 -0
- package/dist/react-querybuilder_datetime.production.dayjs.mjs +2 -0
- package/dist/react-querybuilder_datetime.production.dayjs.mjs.map +1 -0
- package/dist/react-querybuilder_datetime.production.jsdate.mjs +3 -0
- package/dist/react-querybuilder_datetime.production.jsdate.mjs.map +1 -0
- package/dist/react-querybuilder_datetime.production.luxon.mjs +2 -0
- package/dist/react-querybuilder_datetime.production.luxon.mjs.map +1 -0
- package/dist/react-querybuilder_datetime.production.mjs +3 -0
- package/dist/react-querybuilder_datetime.production.mjs.map +1 -0
- package/dist/types/QueryBuilderDateTime.d.ts +4 -0
- package/dist/types/datetimeRuleProcessorJsonLogic.d.ts +10 -0
- package/dist/types/getDatetimeJsonLogicOperations.d.ts +6 -0
- package/dist/types/getDatetimeRuleProcessorCEL.d.ts +7 -0
- package/dist/types/getDatetimeRuleProcessorJSONata.d.ts +7 -0
- package/dist/types/getDatetimeRuleProcessorMongoDBQuery.d.ts +7 -0
- package/dist/types/getDatetimeRuleProcessorSQL.d.ts +32 -0
- package/dist/types/index.d.ts +7 -0
- package/dist/types/index.date-fns.d.ts +44 -0
- package/dist/types/index.dayjs.d.ts +44 -0
- package/dist/types/index.jsdate.d.ts +44 -0
- package/dist/types/index.luxon.d.ts +44 -0
- package/dist/types/rqbDateTimeLibraryAPI.date-fns.d.ts +5 -0
- package/dist/types/rqbDateTimeLibraryAPI.dayjs.d.ts +5 -0
- package/dist/types/rqbDateTimeLibraryAPI.jsdate.d.ts +8 -0
- package/dist/types/rqbDateTimeLibraryAPI.luxon.d.ts +5 -0
- package/dist/types/types.d.ts +101 -0
- package/dist/types/utils.d.ts +5 -0
- package/dist/types-esm/QueryBuilderDateTime.d.mts +4 -0
- package/dist/types-esm/datetimeRuleProcessorJsonLogic.d.mts +10 -0
- package/dist/types-esm/getDatetimeJsonLogicOperations.d.mts +6 -0
- package/dist/types-esm/getDatetimeRuleProcessorCEL.d.mts +7 -0
- package/dist/types-esm/getDatetimeRuleProcessorJSONata.d.mts +7 -0
- package/dist/types-esm/getDatetimeRuleProcessorMongoDBQuery.d.mts +7 -0
- package/dist/types-esm/getDatetimeRuleProcessorSQL.d.mts +32 -0
- package/dist/types-esm/index.d.mts +7 -0
- package/dist/types-esm/index.date-fns.d.mts +44 -0
- package/dist/types-esm/index.dayjs.d.mts +44 -0
- package/dist/types-esm/index.jsdate.d.mts +44 -0
- package/dist/types-esm/index.luxon.d.mts +44 -0
- package/dist/types-esm/rqbDateTimeLibraryAPI.date-fns.d.mts +5 -0
- package/dist/types-esm/rqbDateTimeLibraryAPI.dayjs.d.mts +5 -0
- package/dist/types-esm/rqbDateTimeLibraryAPI.jsdate.d.mts +8 -0
- package/dist/types-esm/rqbDateTimeLibraryAPI.luxon.d.mts +5 -0
- package/dist/types-esm/types.d.mts +101 -0
- package/dist/types-esm/utils.d.mts +5 -0
- package/package.json +129 -0
package/LICENSE.md
ADDED
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
The MIT License (MIT)
|
|
2
|
+
|
|
3
|
+
Copyright (c) 2024 Jake Boone and other contributors
|
|
4
|
+
|
|
5
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
6
|
+
of this software and associated documentation files (the "Software"), to deal
|
|
7
|
+
in the Software without restriction, including without limitation the rights
|
|
8
|
+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
9
|
+
copies of the Software, and to permit persons to whom the Software is
|
|
10
|
+
furnished to do so, subject to the following conditions:
|
|
11
|
+
|
|
12
|
+
The above copyright notice and this permission notice shall be included in all
|
|
13
|
+
copies or substantial portions of the Software.
|
|
14
|
+
|
|
15
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
16
|
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
17
|
+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
18
|
+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
19
|
+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
20
|
+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
21
|
+
SOFTWARE.
|
package/README.md
ADDED
|
@@ -0,0 +1,71 @@
|
|
|
1
|
+
## @react-querybuilder/datetime
|
|
2
|
+
|
|
3
|
+
> [!NOTE]
|
|
4
|
+
>
|
|
5
|
+
> This package is experimental and its API is not guaranteed to be stable.
|
|
6
|
+
|
|
7
|
+
Augments [react-querybuilder](https://npmjs.com/package/react-querybuilder) with enhanced date/time functionality.
|
|
8
|
+
|
|
9
|
+
To see this in action, check out the [`react-querybuilder` demo](https://react-querybuilder.js.org/demo#datetime=true) with the "date/time" option enabled.
|
|
10
|
+
|
|
11
|
+
**[Full documentation](https://react-querybuilder.js.org/docs/datetime)**
|
|
12
|
+
|
|
13
|
+
<!--  -->
|
|
14
|
+
|
|
15
|
+
## Installation
|
|
16
|
+
|
|
17
|
+
```bash
|
|
18
|
+
npm i react-querybuilder @react-querybuilder/datetime
|
|
19
|
+
# OR yarn add / pnpm add / bun add
|
|
20
|
+
```
|
|
21
|
+
|
|
22
|
+
## Usage
|
|
23
|
+
|
|
24
|
+
<!--
|
|
25
|
+
To enable the date and time functionality of a query builder, nest the `QueryBuilder` element under `QueryBuilderDateTime`.
|
|
26
|
+
|
|
27
|
+
```tsx
|
|
28
|
+
import { QueryBuilderDateTime } from '@react-querybuilder/datetime';
|
|
29
|
+
import { useState } from 'react';
|
|
30
|
+
import { QueryBuilder, RuleGroupType } from 'react-querybuilder';
|
|
31
|
+
|
|
32
|
+
const fields = [
|
|
33
|
+
{ name: 'firstName', label: 'First Name' },
|
|
34
|
+
{ name: 'lastName', label: 'Last Name' },
|
|
35
|
+
];
|
|
36
|
+
|
|
37
|
+
const App = () => {
|
|
38
|
+
const [query, setQuery] = useState<RuleGroupType>({ combinator: 'and', rules: [] });
|
|
39
|
+
|
|
40
|
+
return (
|
|
41
|
+
<QueryBuilderDateTime>
|
|
42
|
+
<QueryBuilder fields={fields} defaultQuery={query} onQueryChange={setQuery} />
|
|
43
|
+
</QueryBuilderDateTime>
|
|
44
|
+
);
|
|
45
|
+
};
|
|
46
|
+
```
|
|
47
|
+
-->
|
|
48
|
+
|
|
49
|
+
To add date/time functionality to `formatQuery`, import a rule processor from `@react-querybuilder/datetime/dayjs`, `@react-querybuilder/datetime/date-fns`, or `@react-querybuilder/datetime/luxon`—depending on which library you wish to use or are already using—and pass it to the `ruleProcessor` option.
|
|
50
|
+
|
|
51
|
+
```ts
|
|
52
|
+
import { formatQuery } from 'react-querybuilder';
|
|
53
|
+
import {
|
|
54
|
+
datetimeRuleProcessorMongoDBQuery,
|
|
55
|
+
datetimeRuleProcessorSQL,
|
|
56
|
+
} from '@react-querybuilder/datetime/dayjs';
|
|
57
|
+
|
|
58
|
+
// SQL
|
|
59
|
+
formatQuery(query, { preset: 'postgresql', fields, ruleProcessor: datetimeRuleProcessorSQL });
|
|
60
|
+
|
|
61
|
+
// MongoDB
|
|
62
|
+
formatQuery(query, {
|
|
63
|
+
format: 'mongodb_query',
|
|
64
|
+
fields,
|
|
65
|
+
ruleProcessor: datetimeRuleProcessorMongoDBQuery,
|
|
66
|
+
});
|
|
67
|
+
```
|
|
68
|
+
|
|
69
|
+
The date/time rule processors will fallback to using the default rule processors if the rule's field configuration does not have a `datatype` value of "date", "datetime", "datetimeoffset", or "timestamp", or if the `operator` is specific to string comparisons ("contains", "beginsWith", "endsWith", etc.). You can provide a custom `isDateField` function to override this behavior through the `context` option.
|
|
70
|
+
|
|
71
|
+
<!-- ## Notes -->
|
|
@@ -0,0 +1,536 @@
|
|
|
1
|
+
// src/getDatetimeJsonLogicOperations.ts
|
|
2
|
+
var getDatetimeJsonLogicOperations = function getDatetimeJsonLogicOperations2(_ref) {
|
|
3
|
+
var isAfter = _ref.isAfter, isBefore = _ref.isBefore, isSame = _ref.isSame;
|
|
4
|
+
return { dateAfter: function dateAfter(a, b) {
|
|
5
|
+
return isAfter(a, b);
|
|
6
|
+
}, dateBefore: function dateBefore(a, b) {
|
|
7
|
+
return isBefore(a, b);
|
|
8
|
+
}, dateBetween: function dateBetween(a, b, c) {
|
|
9
|
+
return isSame(b, a) || isSame(b, c) || isAfter(b, a) && isBefore(b, c) || isAfter(b, c) && isBefore(b, a);
|
|
10
|
+
}, dateNotBetween: function dateNotBetween(a, b, c) {
|
|
11
|
+
return !isSame(b, a) && !isSame(b, c) && (isBefore(a, c) && (isBefore(b, a) || isAfter(b, c)) || isAfter(a, c) && (isBefore(b, c) || isAfter(b, a)));
|
|
12
|
+
}, dateIn: function dateIn(a, b) {
|
|
13
|
+
return b.some(function(v) {
|
|
14
|
+
return isSame(a, v);
|
|
15
|
+
});
|
|
16
|
+
}, dateNotIn: function dateNotIn(a, b) {
|
|
17
|
+
return b.every(function(v) {
|
|
18
|
+
return !isSame(a, v);
|
|
19
|
+
});
|
|
20
|
+
}, dateNotOn: function dateNotOn(a, b) {
|
|
21
|
+
return !isSame(a, b);
|
|
22
|
+
}, dateOn: function dateOn(a, b) {
|
|
23
|
+
return isSame(a, b);
|
|
24
|
+
}, dateOnOrAfter: function dateOnOrAfter(a, b) {
|
|
25
|
+
return isAfter(a, b) || isSame(a, b);
|
|
26
|
+
}, dateOnOrBefore: function dateOnOrBefore(a, b) {
|
|
27
|
+
return isBefore(a, b) || isSame(a, b);
|
|
28
|
+
} };
|
|
29
|
+
};
|
|
30
|
+
|
|
31
|
+
// src/getDatetimeRuleProcessorCEL.ts
|
|
32
|
+
import { defaultRuleProcessorCEL, toArray } from "react-querybuilder";
|
|
33
|
+
|
|
34
|
+
// src/utils.ts
|
|
35
|
+
function _typeof(o) {
|
|
36
|
+
"@babel/helpers - typeof";
|
|
37
|
+
return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function(o2) {
|
|
38
|
+
return typeof o2;
|
|
39
|
+
} : function(o2) {
|
|
40
|
+
return o2 && "function" == typeof Symbol && o2.constructor === Symbol && o2 !== Symbol.prototype ? "symbol" : typeof o2;
|
|
41
|
+
}, _typeof(o);
|
|
42
|
+
}
|
|
43
|
+
function _slicedToArray(r, e) {
|
|
44
|
+
return _arrayWithHoles(r) || _iterableToArrayLimit(r, e) || _unsupportedIterableToArray(r, e) || _nonIterableRest();
|
|
45
|
+
}
|
|
46
|
+
function _nonIterableRest() {
|
|
47
|
+
throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.");
|
|
48
|
+
}
|
|
49
|
+
function _unsupportedIterableToArray(r, a) {
|
|
50
|
+
if (r) {
|
|
51
|
+
if ("string" == typeof r) return _arrayLikeToArray(r, a);
|
|
52
|
+
var t = {}.toString.call(r).slice(8, -1);
|
|
53
|
+
return "Object" === t && r.constructor && (t = r.constructor.name), "Map" === t || "Set" === t ? Array.from(r) : "Arguments" === t || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t) ? _arrayLikeToArray(r, a) : void 0;
|
|
54
|
+
}
|
|
55
|
+
}
|
|
56
|
+
function _arrayLikeToArray(r, a) {
|
|
57
|
+
(null == a || a > r.length) && (a = r.length);
|
|
58
|
+
for (var e = 0, n = Array(a); e < a; e++) n[e] = r[e];
|
|
59
|
+
return n;
|
|
60
|
+
}
|
|
61
|
+
function _iterableToArrayLimit(r, l) {
|
|
62
|
+
var t = null == r ? null : "undefined" != typeof Symbol && r[Symbol.iterator] || r["@@iterator"];
|
|
63
|
+
if (null != t) {
|
|
64
|
+
var e, n, i, u, a = [], f = true, o = false;
|
|
65
|
+
try {
|
|
66
|
+
if (i = (t = t.call(r)).next, 0 === l) {
|
|
67
|
+
if (Object(t) !== t) return;
|
|
68
|
+
f = false;
|
|
69
|
+
} else for (; !(f = (e = i.call(t)).done) && (a.push(e.value), a.length !== l); f = true) ;
|
|
70
|
+
} catch (r2) {
|
|
71
|
+
o = true, n = r2;
|
|
72
|
+
} finally {
|
|
73
|
+
try {
|
|
74
|
+
if (!f && null != t["return"] && (u = t["return"](), Object(u) !== u)) return;
|
|
75
|
+
} finally {
|
|
76
|
+
if (o) throw n;
|
|
77
|
+
}
|
|
78
|
+
}
|
|
79
|
+
return a;
|
|
80
|
+
}
|
|
81
|
+
}
|
|
82
|
+
function _arrayWithHoles(r) {
|
|
83
|
+
if (Array.isArray(r)) return r;
|
|
84
|
+
}
|
|
85
|
+
var isISOStringDateOnly = function isISOStringDateOnly2(date) {
|
|
86
|
+
return typeof date === "string" && /^\d{4}-\d{2}-\d{2}$/.test(date);
|
|
87
|
+
};
|
|
88
|
+
var defaultIsDateField = function defaultIsDateField2() {
|
|
89
|
+
var _opts$fieldData;
|
|
90
|
+
for (var _len = arguments.length, _ref = new Array(_len), _key = 0; _key < _len; _key++) {
|
|
91
|
+
_ref[_key] = arguments[_key];
|
|
92
|
+
}
|
|
93
|
+
var rule = _ref[0], opts = _ref[1];
|
|
94
|
+
return rule.operator !== "contains" && rule.operator !== "beginsWith" && rule.operator !== "endsWith" && rule.operator !== "doesNotContain" && rule.operator !== "doesNotBeginWith" && rule.operator !== "doesNotEndWith" && rule.operator !== "null" && rule.operator !== "notNull" && /^(?:date|datetime|datetimeoffset|timestamp)\b/i.test(opts === null || opts === void 0 || (_opts$fieldData = opts.fieldData) === null || _opts$fieldData === void 0 ? void 0 : _opts$fieldData.datatype);
|
|
95
|
+
};
|
|
96
|
+
var processIsDateField = function processIsDateField2(isDateField) {
|
|
97
|
+
for (var _len2 = arguments.length, _ref2 = new Array(_len2 > 1 ? _len2 - 1 : 0), _key2 = 1; _key2 < _len2; _key2++) {
|
|
98
|
+
_ref2[_key2 - 1] = arguments[_key2];
|
|
99
|
+
}
|
|
100
|
+
var rule = _ref2[0], opts = _ref2[1];
|
|
101
|
+
if (typeof isDateField === "boolean") {
|
|
102
|
+
return isDateField;
|
|
103
|
+
}
|
|
104
|
+
if (typeof isDateField === "function") {
|
|
105
|
+
return isDateField(rule, opts);
|
|
106
|
+
}
|
|
107
|
+
if (Array.isArray(isDateField)) {
|
|
108
|
+
return isDateField.some(function(condition) {
|
|
109
|
+
return Object.entries(condition).every(function(_ref3) {
|
|
110
|
+
var _opts$fieldData2;
|
|
111
|
+
var _ref4 = _slicedToArray(_ref3, 2), key = _ref4[0], value = _ref4[1];
|
|
112
|
+
return (opts === null || opts === void 0 || (_opts$fieldData2 = opts.fieldData) === null || _opts$fieldData2 === void 0 ? void 0 : _opts$fieldData2[key]) === value;
|
|
113
|
+
});
|
|
114
|
+
});
|
|
115
|
+
}
|
|
116
|
+
if (_typeof(isDateField) === "object") {
|
|
117
|
+
return Object.entries(isDateField).every(function(_ref5) {
|
|
118
|
+
var _opts$fieldData3;
|
|
119
|
+
var _ref6 = _slicedToArray(_ref5, 2), key = _ref6[0], value = _ref6[1];
|
|
120
|
+
return (opts === null || opts === void 0 || (_opts$fieldData3 = opts.fieldData) === null || _opts$fieldData3 === void 0 ? void 0 : _opts$fieldData3[key]) === value;
|
|
121
|
+
});
|
|
122
|
+
}
|
|
123
|
+
return defaultIsDateField(rule, opts);
|
|
124
|
+
};
|
|
125
|
+
|
|
126
|
+
// src/getDatetimeRuleProcessorCEL.ts
|
|
127
|
+
function _slicedToArray2(r, e) {
|
|
128
|
+
return _arrayWithHoles2(r) || _iterableToArrayLimit2(r, e) || _unsupportedIterableToArray2(r, e) || _nonIterableRest2();
|
|
129
|
+
}
|
|
130
|
+
function _nonIterableRest2() {
|
|
131
|
+
throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.");
|
|
132
|
+
}
|
|
133
|
+
function _unsupportedIterableToArray2(r, a) {
|
|
134
|
+
if (r) {
|
|
135
|
+
if ("string" == typeof r) return _arrayLikeToArray2(r, a);
|
|
136
|
+
var t = {}.toString.call(r).slice(8, -1);
|
|
137
|
+
return "Object" === t && r.constructor && (t = r.constructor.name), "Map" === t || "Set" === t ? Array.from(r) : "Arguments" === t || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t) ? _arrayLikeToArray2(r, a) : void 0;
|
|
138
|
+
}
|
|
139
|
+
}
|
|
140
|
+
function _arrayLikeToArray2(r, a) {
|
|
141
|
+
(null == a || a > r.length) && (a = r.length);
|
|
142
|
+
for (var e = 0, n = Array(a); e < a; e++) n[e] = r[e];
|
|
143
|
+
return n;
|
|
144
|
+
}
|
|
145
|
+
function _iterableToArrayLimit2(r, l) {
|
|
146
|
+
var t = null == r ? null : "undefined" != typeof Symbol && r[Symbol.iterator] || r["@@iterator"];
|
|
147
|
+
if (null != t) {
|
|
148
|
+
var e, n, i, u, a = [], f = true, o = false;
|
|
149
|
+
try {
|
|
150
|
+
if (i = (t = t.call(r)).next, 0 === l) {
|
|
151
|
+
if (Object(t) !== t) return;
|
|
152
|
+
f = false;
|
|
153
|
+
} else for (; !(f = (e = i.call(t)).done) && (a.push(e.value), a.length !== l); f = true) ;
|
|
154
|
+
} catch (r2) {
|
|
155
|
+
o = true, n = r2;
|
|
156
|
+
} finally {
|
|
157
|
+
try {
|
|
158
|
+
if (!f && null != t["return"] && (u = t["return"](), Object(u) !== u)) return;
|
|
159
|
+
} finally {
|
|
160
|
+
if (o) throw n;
|
|
161
|
+
}
|
|
162
|
+
}
|
|
163
|
+
return a;
|
|
164
|
+
}
|
|
165
|
+
}
|
|
166
|
+
function _arrayWithHoles2(r) {
|
|
167
|
+
if (Array.isArray(r)) return r;
|
|
168
|
+
}
|
|
169
|
+
var shouldNegate = function shouldNegate2(op) {
|
|
170
|
+
return /^(does)?not/i.test(op);
|
|
171
|
+
};
|
|
172
|
+
var getDatetimeRuleProcessorCEL = function getDatetimeRuleProcessorCEL2(apiFns) {
|
|
173
|
+
return function(rule, options) {
|
|
174
|
+
var opts = options !== null && options !== void 0 ? options : (
|
|
175
|
+
/* istanbul ignore next */
|
|
176
|
+
{}
|
|
177
|
+
);
|
|
178
|
+
var _opts$context = opts.context, context = _opts$context === void 0 ? {} : _opts$context;
|
|
179
|
+
if (rule.valueSource === "field" || !processIsDateField(context.isDateField, rule, opts)) {
|
|
180
|
+
return defaultRuleProcessorCEL(rule, opts);
|
|
181
|
+
}
|
|
182
|
+
var ts = function ts2(d) {
|
|
183
|
+
return 'timestamp("'.concat(apiFns.toISOString(d), '")');
|
|
184
|
+
};
|
|
185
|
+
var operatorTL = rule.operator.replace(/^=$/, "==").toLowerCase();
|
|
186
|
+
switch (operatorTL) {
|
|
187
|
+
case "<":
|
|
188
|
+
case "<=":
|
|
189
|
+
case "==":
|
|
190
|
+
case "!=":
|
|
191
|
+
case ">":
|
|
192
|
+
case ">=":
|
|
193
|
+
return "".concat(rule.field, " ").concat(operatorTL, " ").concat(ts(rule.value));
|
|
194
|
+
}
|
|
195
|
+
var valueAsArray = toArray(rule.value, { retainEmptyStrings: false });
|
|
196
|
+
var valueAsDateArray = valueAsArray.map(function(v) {
|
|
197
|
+
return apiFns.toDate(v);
|
|
198
|
+
}).filter(function(dateVal) {
|
|
199
|
+
return apiFns.isValid(dateVal);
|
|
200
|
+
});
|
|
201
|
+
switch (operatorTL) {
|
|
202
|
+
case "in":
|
|
203
|
+
case "notin": {
|
|
204
|
+
if (valueAsDateArray.length === 0) return "";
|
|
205
|
+
var _ref = shouldNegate(operatorTL) ? ["!(", ")"] : ["", ""], _ref2 = _slicedToArray2(_ref, 2), prefix = _ref2[0], suffix = _ref2[1];
|
|
206
|
+
return "".concat(prefix).concat(rule.field, " in [").concat(valueAsDateArray.map(function(val) {
|
|
207
|
+
return ts(val);
|
|
208
|
+
}).join(", "), "]").concat(suffix);
|
|
209
|
+
}
|
|
210
|
+
case "between":
|
|
211
|
+
case "notbetween": {
|
|
212
|
+
if (valueAsDateArray.length < 2) return "";
|
|
213
|
+
var _valueAsDateArray = _slicedToArray2(valueAsDateArray, 2), first = _valueAsDateArray[0], second = _valueAsDateArray[1];
|
|
214
|
+
var _ref3 = apiFns.isBefore(first, second) ? [first, second] : [second, first], _ref4 = _slicedToArray2(_ref3, 2), firstDate = _ref4[0], secondDate = _ref4[1];
|
|
215
|
+
return operatorTL === "between" ? "(".concat(rule.field, " >= ").concat(ts(firstDate), " && ").concat(rule.field, " <= ").concat(ts(secondDate), ")") : "(".concat(rule.field, " < ").concat(ts(firstDate), " || ").concat(rule.field, " > ").concat(ts(secondDate), ")");
|
|
216
|
+
}
|
|
217
|
+
}
|
|
218
|
+
return defaultRuleProcessorCEL(rule, opts);
|
|
219
|
+
};
|
|
220
|
+
};
|
|
221
|
+
|
|
222
|
+
// src/getDatetimeRuleProcessorMongoDBQuery.ts
|
|
223
|
+
import { defaultRuleProcessorMongoDBQuery, mongoOperators, toArray as toArray2 } from "react-querybuilder";
|
|
224
|
+
function _typeof2(o) {
|
|
225
|
+
"@babel/helpers - typeof";
|
|
226
|
+
return _typeof2 = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function(o2) {
|
|
227
|
+
return typeof o2;
|
|
228
|
+
} : function(o2) {
|
|
229
|
+
return o2 && "function" == typeof Symbol && o2.constructor === Symbol && o2 !== Symbol.prototype ? "symbol" : typeof o2;
|
|
230
|
+
}, _typeof2(o);
|
|
231
|
+
}
|
|
232
|
+
function _slicedToArray3(r, e) {
|
|
233
|
+
return _arrayWithHoles3(r) || _iterableToArrayLimit3(r, e) || _unsupportedIterableToArray3(r, e) || _nonIterableRest3();
|
|
234
|
+
}
|
|
235
|
+
function _nonIterableRest3() {
|
|
236
|
+
throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.");
|
|
237
|
+
}
|
|
238
|
+
function _unsupportedIterableToArray3(r, a) {
|
|
239
|
+
if (r) {
|
|
240
|
+
if ("string" == typeof r) return _arrayLikeToArray3(r, a);
|
|
241
|
+
var t = {}.toString.call(r).slice(8, -1);
|
|
242
|
+
return "Object" === t && r.constructor && (t = r.constructor.name), "Map" === t || "Set" === t ? Array.from(r) : "Arguments" === t || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t) ? _arrayLikeToArray3(r, a) : void 0;
|
|
243
|
+
}
|
|
244
|
+
}
|
|
245
|
+
function _arrayLikeToArray3(r, a) {
|
|
246
|
+
(null == a || a > r.length) && (a = r.length);
|
|
247
|
+
for (var e = 0, n = Array(a); e < a; e++) n[e] = r[e];
|
|
248
|
+
return n;
|
|
249
|
+
}
|
|
250
|
+
function _iterableToArrayLimit3(r, l) {
|
|
251
|
+
var t = null == r ? null : "undefined" != typeof Symbol && r[Symbol.iterator] || r["@@iterator"];
|
|
252
|
+
if (null != t) {
|
|
253
|
+
var e, n, i, u, a = [], f = true, o = false;
|
|
254
|
+
try {
|
|
255
|
+
if (i = (t = t.call(r)).next, 0 === l) {
|
|
256
|
+
if (Object(t) !== t) return;
|
|
257
|
+
f = false;
|
|
258
|
+
} else for (; !(f = (e = i.call(t)).done) && (a.push(e.value), a.length !== l); f = true) ;
|
|
259
|
+
} catch (r2) {
|
|
260
|
+
o = true, n = r2;
|
|
261
|
+
} finally {
|
|
262
|
+
try {
|
|
263
|
+
if (!f && null != t["return"] && (u = t["return"](), Object(u) !== u)) return;
|
|
264
|
+
} finally {
|
|
265
|
+
if (o) throw n;
|
|
266
|
+
}
|
|
267
|
+
}
|
|
268
|
+
return a;
|
|
269
|
+
}
|
|
270
|
+
}
|
|
271
|
+
function _arrayWithHoles3(r) {
|
|
272
|
+
if (Array.isArray(r)) return r;
|
|
273
|
+
}
|
|
274
|
+
function _defineProperty(e, r, t) {
|
|
275
|
+
return (r = _toPropertyKey(r)) in e ? Object.defineProperty(e, r, { value: t, enumerable: true, configurable: true, writable: true }) : e[r] = t, e;
|
|
276
|
+
}
|
|
277
|
+
function _toPropertyKey(t) {
|
|
278
|
+
var i = _toPrimitive(t, "string");
|
|
279
|
+
return "symbol" == _typeof2(i) ? i : i + "";
|
|
280
|
+
}
|
|
281
|
+
function _toPrimitive(t, r) {
|
|
282
|
+
if ("object" != _typeof2(t) || !t) return t;
|
|
283
|
+
var e = t[Symbol.toPrimitive];
|
|
284
|
+
if (void 0 !== e) {
|
|
285
|
+
var i = e.call(t, r || "default");
|
|
286
|
+
if ("object" != _typeof2(i)) return i;
|
|
287
|
+
throw new TypeError("@@toPrimitive must return a primitive value.");
|
|
288
|
+
}
|
|
289
|
+
return ("string" === r ? String : Number)(t);
|
|
290
|
+
}
|
|
291
|
+
var getDatetimeRuleProcessorMongoDBQuery = function getDatetimeRuleProcessorMongoDBQuery2(apiFns) {
|
|
292
|
+
return function(rule, options) {
|
|
293
|
+
var _opts$context;
|
|
294
|
+
var opts = options !== null && options !== void 0 ? options : (
|
|
295
|
+
/* istanbul ignore next */
|
|
296
|
+
{}
|
|
297
|
+
);
|
|
298
|
+
var field = rule.field, operator = rule.operator, value = rule.value, valueSource = rule.valueSource;
|
|
299
|
+
if (valueSource === "field" || !processIsDateField((_opts$context = opts.context) === null || _opts$context === void 0 ? void 0 : _opts$context.isDateField, rule, opts)) {
|
|
300
|
+
return defaultRuleProcessorMongoDBQuery(rule, opts);
|
|
301
|
+
}
|
|
302
|
+
if (operator === "=") {
|
|
303
|
+
return _defineProperty({}, field, apiFns.toDate(value));
|
|
304
|
+
}
|
|
305
|
+
switch (operator) {
|
|
306
|
+
case "<":
|
|
307
|
+
case "<=":
|
|
308
|
+
case "!=":
|
|
309
|
+
case ">":
|
|
310
|
+
case ">=":
|
|
311
|
+
return _defineProperty({}, field, _defineProperty({}, mongoOperators[operator], apiFns.toDate(value)));
|
|
312
|
+
}
|
|
313
|
+
var valueAsArray = toArray2(rule.value, { retainEmptyStrings: false });
|
|
314
|
+
var valueAsDateArray = valueAsArray.map(function(v) {
|
|
315
|
+
return apiFns.toDate(v);
|
|
316
|
+
}).filter(function(dateVal) {
|
|
317
|
+
return apiFns.isValid(dateVal);
|
|
318
|
+
});
|
|
319
|
+
switch (operator) {
|
|
320
|
+
case "in":
|
|
321
|
+
case "notIn":
|
|
322
|
+
return _defineProperty({}, field, _defineProperty({}, mongoOperators[operator], valueAsDateArray));
|
|
323
|
+
case "between":
|
|
324
|
+
case "notBetween": {
|
|
325
|
+
if (valueAsDateArray.length < 2) return "";
|
|
326
|
+
var _valueAsDateArray = _slicedToArray3(valueAsDateArray, 2), first = _valueAsDateArray[0], second = _valueAsDateArray[1];
|
|
327
|
+
var orderedArray = apiFns.isBefore(first, second) ? [first, second] : [second, first];
|
|
328
|
+
return operator === "between" ? _defineProperty({}, field, { $gte: orderedArray[0], $lte: orderedArray[1] }) : { $or: [_defineProperty({}, field, { $lt: orderedArray[0] }), _defineProperty({}, field, { $gt: orderedArray[1] })] };
|
|
329
|
+
}
|
|
330
|
+
}
|
|
331
|
+
return defaultRuleProcessorMongoDBQuery(rule, opts);
|
|
332
|
+
};
|
|
333
|
+
};
|
|
334
|
+
|
|
335
|
+
// src/getDatetimeRuleProcessorSQL.ts
|
|
336
|
+
import { defaultRuleProcessorSQL, defaultValueProcessorByRule, getQuotedFieldName, mapSQLOperator, toArray as toArray3 } from "react-querybuilder";
|
|
337
|
+
function _typeof3(o) {
|
|
338
|
+
"@babel/helpers - typeof";
|
|
339
|
+
return _typeof3 = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function(o2) {
|
|
340
|
+
return typeof o2;
|
|
341
|
+
} : function(o2) {
|
|
342
|
+
return o2 && "function" == typeof Symbol && o2.constructor === Symbol && o2 !== Symbol.prototype ? "symbol" : typeof o2;
|
|
343
|
+
}, _typeof3(o);
|
|
344
|
+
}
|
|
345
|
+
function _slicedToArray4(r, e) {
|
|
346
|
+
return _arrayWithHoles4(r) || _iterableToArrayLimit4(r, e) || _unsupportedIterableToArray4(r, e) || _nonIterableRest4();
|
|
347
|
+
}
|
|
348
|
+
function _nonIterableRest4() {
|
|
349
|
+
throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.");
|
|
350
|
+
}
|
|
351
|
+
function _unsupportedIterableToArray4(r, a) {
|
|
352
|
+
if (r) {
|
|
353
|
+
if ("string" == typeof r) return _arrayLikeToArray4(r, a);
|
|
354
|
+
var t = {}.toString.call(r).slice(8, -1);
|
|
355
|
+
return "Object" === t && r.constructor && (t = r.constructor.name), "Map" === t || "Set" === t ? Array.from(r) : "Arguments" === t || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t) ? _arrayLikeToArray4(r, a) : void 0;
|
|
356
|
+
}
|
|
357
|
+
}
|
|
358
|
+
function _arrayLikeToArray4(r, a) {
|
|
359
|
+
(null == a || a > r.length) && (a = r.length);
|
|
360
|
+
for (var e = 0, n = Array(a); e < a; e++) n[e] = r[e];
|
|
361
|
+
return n;
|
|
362
|
+
}
|
|
363
|
+
function _iterableToArrayLimit4(r, l) {
|
|
364
|
+
var t = null == r ? null : "undefined" != typeof Symbol && r[Symbol.iterator] || r["@@iterator"];
|
|
365
|
+
if (null != t) {
|
|
366
|
+
var e, n, i, u, a = [], f = true, o = false;
|
|
367
|
+
try {
|
|
368
|
+
if (i = (t = t.call(r)).next, 0 === l) {
|
|
369
|
+
if (Object(t) !== t) return;
|
|
370
|
+
f = false;
|
|
371
|
+
} else for (; !(f = (e = i.call(t)).done) && (a.push(e.value), a.length !== l); f = true) ;
|
|
372
|
+
} catch (r2) {
|
|
373
|
+
o = true, n = r2;
|
|
374
|
+
} finally {
|
|
375
|
+
try {
|
|
376
|
+
if (!f && null != t["return"] && (u = t["return"](), Object(u) !== u)) return;
|
|
377
|
+
} finally {
|
|
378
|
+
if (o) throw n;
|
|
379
|
+
}
|
|
380
|
+
}
|
|
381
|
+
return a;
|
|
382
|
+
}
|
|
383
|
+
}
|
|
384
|
+
function _arrayWithHoles4(r) {
|
|
385
|
+
if (Array.isArray(r)) return r;
|
|
386
|
+
}
|
|
387
|
+
function ownKeys(e, r) {
|
|
388
|
+
var t = Object.keys(e);
|
|
389
|
+
if (Object.getOwnPropertySymbols) {
|
|
390
|
+
var o = Object.getOwnPropertySymbols(e);
|
|
391
|
+
r && (o = o.filter(function(r2) {
|
|
392
|
+
return Object.getOwnPropertyDescriptor(e, r2).enumerable;
|
|
393
|
+
})), t.push.apply(t, o);
|
|
394
|
+
}
|
|
395
|
+
return t;
|
|
396
|
+
}
|
|
397
|
+
function _objectSpread(e) {
|
|
398
|
+
for (var r = 1; r < arguments.length; r++) {
|
|
399
|
+
var t = null != arguments[r] ? arguments[r] : {};
|
|
400
|
+
r % 2 ? ownKeys(Object(t), true).forEach(function(r2) {
|
|
401
|
+
_defineProperty2(e, r2, t[r2]);
|
|
402
|
+
}) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function(r2) {
|
|
403
|
+
Object.defineProperty(e, r2, Object.getOwnPropertyDescriptor(t, r2));
|
|
404
|
+
});
|
|
405
|
+
}
|
|
406
|
+
return e;
|
|
407
|
+
}
|
|
408
|
+
function _defineProperty2(e, r, t) {
|
|
409
|
+
return (r = _toPropertyKey2(r)) in e ? Object.defineProperty(e, r, { value: t, enumerable: true, configurable: true, writable: true }) : e[r] = t, e;
|
|
410
|
+
}
|
|
411
|
+
function _toPropertyKey2(t) {
|
|
412
|
+
var i = _toPrimitive2(t, "string");
|
|
413
|
+
return "symbol" == _typeof3(i) ? i : i + "";
|
|
414
|
+
}
|
|
415
|
+
function _toPrimitive2(t, r) {
|
|
416
|
+
if ("object" != _typeof3(t) || !t) return t;
|
|
417
|
+
var e = t[Symbol.toPrimitive];
|
|
418
|
+
if (void 0 !== e) {
|
|
419
|
+
var i = e.call(t, r || "default");
|
|
420
|
+
if ("object" != _typeof3(i)) return i;
|
|
421
|
+
throw new TypeError("@@toPrimitive must return a primitive value.");
|
|
422
|
+
}
|
|
423
|
+
return ("string" === r ? String : Number)(t);
|
|
424
|
+
}
|
|
425
|
+
var getDatetimeValueProcessorANSI = function getDatetimeValueProcessorANSI2(_ref) {
|
|
426
|
+
var toISOStringDateOnly = _ref.toISOStringDateOnly, toISOString = _ref.toISOString;
|
|
427
|
+
return function(rule, opts) {
|
|
428
|
+
var _opts$context;
|
|
429
|
+
if (isISOStringDateOnly(opts === null || opts === void 0 || (_opts$context = opts.context) === null || _opts$context === void 0 ? void 0 : _opts$context.originalValue)) {
|
|
430
|
+
return defaultValueProcessorByRule(_objectSpread(_objectSpread({}, rule), {}, { value: toISOStringDateOnly(rule.value) }), opts);
|
|
431
|
+
}
|
|
432
|
+
return defaultValueProcessorByRule(_objectSpread(_objectSpread({}, rule), {}, { value: toISOString(rule.value) }), opts);
|
|
433
|
+
};
|
|
434
|
+
};
|
|
435
|
+
var getDatetimeValueProcessorMSSQL = function getDatetimeValueProcessorMSSQL2(_ref2) {
|
|
436
|
+
var toISOStringDateOnly = _ref2.toISOStringDateOnly, toISOString = _ref2.toISOString;
|
|
437
|
+
return function(rule, opts) {
|
|
438
|
+
var _opts$fieldData;
|
|
439
|
+
var datatype = /^(?:small)?datetime/i.test(opts === null || opts === void 0 || (_opts$fieldData = opts.fieldData) === null || _opts$fieldData === void 0 ? void 0 : _opts$fieldData.datatype) ? "datetimeoffset" : "date";
|
|
440
|
+
var value = datatype === "datetimeoffset" ? toISOString(rule.value) : toISOStringDateOnly(rule.value);
|
|
441
|
+
return defaultValueProcessorByRule(_objectSpread(_objectSpread({}, rule), {}, { value }), _objectSpread(_objectSpread({}, opts), {}, { wrapValueWith: ["cast(", " as ".concat(datatype, ")")] }));
|
|
442
|
+
};
|
|
443
|
+
};
|
|
444
|
+
var getDatetimeValueProcessorMySQL = function getDatetimeValueProcessorMySQL2(_ref3) {
|
|
445
|
+
var toISOStringDateOnly = _ref3.toISOStringDateOnly, toISOString = _ref3.toISOString;
|
|
446
|
+
return function(rule, opts) {
|
|
447
|
+
var _opts$fieldData2;
|
|
448
|
+
var datatype = /^(?:datetime|timestamp)/i.test(opts === null || opts === void 0 || (_opts$fieldData2 = opts.fieldData) === null || _opts$fieldData2 === void 0 ? void 0 : _opts$fieldData2.datatype) ? "datetime" : "date";
|
|
449
|
+
var value = datatype === "datetime" ? toISOString(rule.value) : toISOStringDateOnly(rule.value);
|
|
450
|
+
return defaultValueProcessorByRule(_objectSpread(_objectSpread({}, rule), {}, { value }), _objectSpread(_objectSpread({}, opts), {}, { wrapValueWith: ["cast(", " as ".concat(datatype, ")")] }));
|
|
451
|
+
};
|
|
452
|
+
};
|
|
453
|
+
var getDatetimeValueProcessorOracle = function getDatetimeValueProcessorOracle2(_ref4) {
|
|
454
|
+
var toISOStringDateOnly = _ref4.toISOStringDateOnly, toISOString = _ref4.toISOString;
|
|
455
|
+
return function(rule, opts) {
|
|
456
|
+
var _opts$fieldData3;
|
|
457
|
+
var datatype = /^timestamp/i.test(opts === null || opts === void 0 || (_opts$fieldData3 = opts.fieldData) === null || _opts$fieldData3 === void 0 ? void 0 : _opts$fieldData3.datatype) ? "timestamp" : "date";
|
|
458
|
+
var value = datatype === "timestamp" ? toISOString(rule.value).replaceAll("T", " ").replace("Z", " UTC") : toISOStringDateOnly(rule.value);
|
|
459
|
+
return defaultValueProcessorByRule(_objectSpread(_objectSpread({}, rule), {}, { value }), _objectSpread(_objectSpread({}, opts), {}, { wrapValueWith: [datatype, ""] }));
|
|
460
|
+
};
|
|
461
|
+
};
|
|
462
|
+
var getDatetimeValueProcessorPostgreSQL = function getDatetimeValueProcessorPostgreSQL2(_ref5) {
|
|
463
|
+
var toISOStringDateOnly = _ref5.toISOStringDateOnly, toISOString = _ref5.toISOString;
|
|
464
|
+
return function(rule, opts) {
|
|
465
|
+
var _opts$fieldData4;
|
|
466
|
+
var datatype = /^timestamp/i.test(opts === null || opts === void 0 || (_opts$fieldData4 = opts.fieldData) === null || _opts$fieldData4 === void 0 ? void 0 : _opts$fieldData4.datatype) ? "timestamp" : "date";
|
|
467
|
+
var value = datatype === "timestamp" ? toISOString(rule.value) : toISOStringDateOnly(rule.value);
|
|
468
|
+
return defaultValueProcessorByRule(_objectSpread(_objectSpread({}, rule), {}, { value }), _objectSpread(_objectSpread({}, opts), {}, { wrapValueWith: [datatype, ""] }));
|
|
469
|
+
};
|
|
470
|
+
};
|
|
471
|
+
var presetToValueProcessorMap = { ansi: getDatetimeValueProcessorANSI, mssql: getDatetimeValueProcessorMSSQL, mysql: getDatetimeValueProcessorMySQL, oracle: getDatetimeValueProcessorOracle, postgresql: getDatetimeValueProcessorPostgreSQL, sqlite: getDatetimeValueProcessorANSI };
|
|
472
|
+
var getDatetimeRuleProcessorSQL = function getDatetimeRuleProcessorSQL2(apiFns) {
|
|
473
|
+
return function(rule, options) {
|
|
474
|
+
var opts = options !== null && options !== void 0 ? options : (
|
|
475
|
+
/* istanbul ignore next */
|
|
476
|
+
{}
|
|
477
|
+
);
|
|
478
|
+
var operator = mapSQLOperator(rule.operator);
|
|
479
|
+
var operatorLowerCase = operator.toLowerCase();
|
|
480
|
+
var _opts$quoteFieldNames = opts.quoteFieldNamesWith, quoteFieldNamesWith = _opts$quoteFieldNames === void 0 ? ["", ""] : _opts$quoteFieldNames, _opts$fieldIdentifier = opts.fieldIdentifierSeparator, fieldIdentifierSeparator = _opts$fieldIdentifier === void 0 ? "" : _opts$fieldIdentifier, _opts$context2 = opts.context, context = _opts$context2 === void 0 ? {} : _opts$context2;
|
|
481
|
+
var finalValue = "";
|
|
482
|
+
if (rule.valueSource === "field" || !processIsDateField(context.isDateField, rule, opts)) {
|
|
483
|
+
return defaultRuleProcessorSQL(rule, opts);
|
|
484
|
+
}
|
|
485
|
+
var valueProcessor = presetToValueProcessorMap[opts.preset](apiFns);
|
|
486
|
+
var valueAsArray = toArray3(rule.value, { retainEmptyStrings: false });
|
|
487
|
+
var valueAsDateArray = valueAsArray.map(function(v) {
|
|
488
|
+
return [v, apiFns.toDate(v)];
|
|
489
|
+
}).filter(function(v) {
|
|
490
|
+
return apiFns.isValid(v[1]);
|
|
491
|
+
});
|
|
492
|
+
switch (operatorLowerCase) {
|
|
493
|
+
case "in":
|
|
494
|
+
case "not in":
|
|
495
|
+
{
|
|
496
|
+
if (valueAsDateArray.length === 0) return "";
|
|
497
|
+
finalValue = "(".concat(valueAsDateArray.map(function(value2) {
|
|
498
|
+
return valueProcessor({ field: rule.field, operator: "=", value: value2[1] }, _objectSpread(_objectSpread({}, opts), {}, { context: { originalValue: value2[0] } }));
|
|
499
|
+
}).join(", "), ")");
|
|
500
|
+
}
|
|
501
|
+
break;
|
|
502
|
+
case "between":
|
|
503
|
+
case "not between":
|
|
504
|
+
{
|
|
505
|
+
if (valueAsDateArray.length < 2) return "";
|
|
506
|
+
var _valueAsDateArray = _slicedToArray4(valueAsDateArray, 2), first = _valueAsDateArray[0], second = _valueAsDateArray[1];
|
|
507
|
+
var orderedArray = apiFns.isBefore(first[1], second[1]) ? [first, second] : [second, first];
|
|
508
|
+
finalValue = orderedArray.map(function(_ref6) {
|
|
509
|
+
var _ref7 = _slicedToArray4(_ref6, 2), originalValue2 = _ref7[0], value2 = _ref7[1];
|
|
510
|
+
return valueProcessor({ field: rule.field, operator: "=", value: value2 }, _objectSpread(_objectSpread({}, opts), {}, { context: { originalValue: originalValue2 } }));
|
|
511
|
+
}).join(" and ");
|
|
512
|
+
}
|
|
513
|
+
break;
|
|
514
|
+
default: {
|
|
515
|
+
var _valueAsDateArray$ = _slicedToArray4(valueAsDateArray[0], 2), originalValue = _valueAsDateArray$[0], value = _valueAsDateArray$[1];
|
|
516
|
+
finalValue = valueProcessor({ field: rule.field, operator: "=", value }, _objectSpread(_objectSpread({}, opts), {}, { context: { originalValue } }));
|
|
517
|
+
}
|
|
518
|
+
}
|
|
519
|
+
return "".concat(getQuotedFieldName(rule.field, { quoteFieldNamesWith, fieldIdentifierSeparator }), " ").concat(operator, " ").concat(finalValue).trim();
|
|
520
|
+
};
|
|
521
|
+
};
|
|
522
|
+
|
|
523
|
+
export {
|
|
524
|
+
isISOStringDateOnly,
|
|
525
|
+
processIsDateField,
|
|
526
|
+
getDatetimeJsonLogicOperations,
|
|
527
|
+
getDatetimeRuleProcessorCEL,
|
|
528
|
+
getDatetimeRuleProcessorMongoDBQuery,
|
|
529
|
+
getDatetimeValueProcessorANSI,
|
|
530
|
+
getDatetimeValueProcessorMSSQL,
|
|
531
|
+
getDatetimeValueProcessorMySQL,
|
|
532
|
+
getDatetimeValueProcessorOracle,
|
|
533
|
+
getDatetimeValueProcessorPostgreSQL,
|
|
534
|
+
getDatetimeRuleProcessorSQL
|
|
535
|
+
};
|
|
536
|
+
//# sourceMappingURL=chunk-6RML23AL.mjs.map
|