@react-querybuilder/datetime 8.14.0 → 8.14.2
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/dist/cjs/{getDatetimeRuleProcessorSQL-Dkg4HEtH.js → getDatetimeRuleProcessorSQL-Bn34z-S-.js} +73 -79
- package/dist/cjs/getDatetimeRuleProcessorSQL-Bn34z-S-.js.map +1 -0
- package/dist/cjs/getDatetimeRuleProcessorSQL-Cs8MroHp.js +2 -0
- package/dist/cjs/getDatetimeRuleProcessorSQL-Cs8MroHp.js.map +1 -0
- package/dist/cjs/react-querybuilder_datetime.cjs.development.d.ts +2 -2
- package/dist/cjs/react-querybuilder_datetime.cjs.development.date-fns.d.ts +2 -2
- package/dist/cjs/react-querybuilder_datetime.cjs.development.date-fns.js +4 -5
- package/dist/cjs/react-querybuilder_datetime.cjs.development.date-fns.js.map +1 -1
- package/dist/cjs/react-querybuilder_datetime.cjs.development.dayjs.d.ts +2 -2
- package/dist/cjs/react-querybuilder_datetime.cjs.development.dayjs.js +10 -16
- package/dist/cjs/react-querybuilder_datetime.cjs.development.dayjs.js.map +1 -1
- package/dist/cjs/react-querybuilder_datetime.cjs.development.js +7 -8
- package/dist/cjs/react-querybuilder_datetime.cjs.development.js.map +1 -1
- package/dist/cjs/react-querybuilder_datetime.cjs.development.jsdate.d.ts +2 -2
- package/dist/cjs/react-querybuilder_datetime.cjs.development.jsdate.js +3 -4
- package/dist/cjs/react-querybuilder_datetime.cjs.development.jsdate.js.map +1 -1
- package/dist/cjs/react-querybuilder_datetime.cjs.development.luxon.d.ts +2 -2
- package/dist/cjs/react-querybuilder_datetime.cjs.development.luxon.js +4 -5
- package/dist/cjs/react-querybuilder_datetime.cjs.development.luxon.js.map +1 -1
- package/dist/cjs/react-querybuilder_datetime.cjs.production.d.ts +2 -2
- package/dist/cjs/react-querybuilder_datetime.cjs.production.date-fns.d.ts +2 -2
- package/dist/cjs/react-querybuilder_datetime.cjs.production.date-fns.js +1 -1
- package/dist/cjs/react-querybuilder_datetime.cjs.production.date-fns.js.map +1 -1
- package/dist/cjs/react-querybuilder_datetime.cjs.production.dayjs.d.ts +2 -2
- package/dist/cjs/react-querybuilder_datetime.cjs.production.dayjs.js +1 -1
- package/dist/cjs/react-querybuilder_datetime.cjs.production.dayjs.js.map +1 -1
- package/dist/cjs/react-querybuilder_datetime.cjs.production.js +1 -1
- package/dist/cjs/react-querybuilder_datetime.cjs.production.js.map +1 -1
- package/dist/cjs/react-querybuilder_datetime.cjs.production.jsdate.d.ts +2 -2
- package/dist/cjs/react-querybuilder_datetime.cjs.production.jsdate.js +1 -1
- package/dist/cjs/react-querybuilder_datetime.cjs.production.jsdate.js.map +1 -1
- package/dist/cjs/react-querybuilder_datetime.cjs.production.luxon.d.ts +2 -2
- package/dist/cjs/react-querybuilder_datetime.cjs.production.luxon.js +1 -1
- package/dist/cjs/react-querybuilder_datetime.cjs.production.luxon.js.map +1 -1
- package/dist/cjs/types-BIfMyAwh.d.ts +105 -0
- package/dist/{getDatetimeRuleProcessorSQL-Dcqi5kh5.mjs → getDatetimeRuleProcessorSQL-Cbq2-tqd.mjs} +1 -1
- package/dist/getDatetimeRuleProcessorSQL-Cbq2-tqd.mjs.map +1 -0
- package/dist/{getDatetimeRuleProcessorSQL-CugqyF_a.mjs → getDatetimeRuleProcessorSQL-CnAPMZf2.mjs} +2 -8
- package/dist/getDatetimeRuleProcessorSQL-CnAPMZf2.mjs.map +1 -0
- package/dist/{getDatetimeRuleProcessorSQL-Cxyajj0g.js → getDatetimeRuleProcessorSQL-r7Vd5Cm4.js} +17 -28
- package/dist/getDatetimeRuleProcessorSQL-r7Vd5Cm4.js.map +1 -0
- package/dist/react-querybuilder_datetime.d.mts +2 -2
- package/dist/react-querybuilder_datetime.date-fns.d.mts +2 -2
- package/dist/react-querybuilder_datetime.date-fns.mjs +2 -4
- package/dist/react-querybuilder_datetime.date-fns.mjs.map +1 -1
- package/dist/react-querybuilder_datetime.dayjs.d.mts +2 -2
- package/dist/react-querybuilder_datetime.dayjs.mjs +2 -4
- package/dist/react-querybuilder_datetime.dayjs.mjs.map +1 -1
- package/dist/react-querybuilder_datetime.jsdate.d.mts +2 -2
- package/dist/react-querybuilder_datetime.jsdate.mjs +2 -4
- package/dist/react-querybuilder_datetime.jsdate.mjs.map +1 -1
- package/dist/react-querybuilder_datetime.legacy-esm.d.ts +2 -2
- package/dist/react-querybuilder_datetime.legacy-esm.date-fns.d.ts +2 -2
- package/dist/react-querybuilder_datetime.legacy-esm.date-fns.js +2 -4
- package/dist/react-querybuilder_datetime.legacy-esm.date-fns.js.map +1 -1
- package/dist/react-querybuilder_datetime.legacy-esm.dayjs.d.ts +2 -2
- package/dist/react-querybuilder_datetime.legacy-esm.dayjs.js +2 -4
- package/dist/react-querybuilder_datetime.legacy-esm.dayjs.js.map +1 -1
- package/dist/react-querybuilder_datetime.legacy-esm.js +5 -7
- package/dist/react-querybuilder_datetime.legacy-esm.js.map +1 -1
- package/dist/react-querybuilder_datetime.legacy-esm.jsdate.d.ts +2 -2
- package/dist/react-querybuilder_datetime.legacy-esm.jsdate.js +2 -4
- package/dist/react-querybuilder_datetime.legacy-esm.jsdate.js.map +1 -1
- package/dist/react-querybuilder_datetime.legacy-esm.luxon.d.ts +2 -2
- package/dist/react-querybuilder_datetime.legacy-esm.luxon.js +2 -4
- package/dist/react-querybuilder_datetime.legacy-esm.luxon.js.map +1 -1
- package/dist/react-querybuilder_datetime.luxon.d.mts +2 -2
- package/dist/react-querybuilder_datetime.luxon.mjs +2 -4
- package/dist/react-querybuilder_datetime.luxon.mjs.map +1 -1
- package/dist/react-querybuilder_datetime.mjs +5 -7
- package/dist/react-querybuilder_datetime.mjs.map +1 -1
- package/dist/react-querybuilder_datetime.production.d.mts +2 -2
- package/dist/react-querybuilder_datetime.production.date-fns.d.mts +2 -2
- package/dist/react-querybuilder_datetime.production.date-fns.mjs +1 -1
- package/dist/react-querybuilder_datetime.production.date-fns.mjs.map +1 -1
- package/dist/react-querybuilder_datetime.production.dayjs.d.mts +2 -2
- package/dist/react-querybuilder_datetime.production.dayjs.mjs +1 -1
- package/dist/react-querybuilder_datetime.production.dayjs.mjs.map +1 -1
- package/dist/react-querybuilder_datetime.production.jsdate.d.mts +2 -2
- package/dist/react-querybuilder_datetime.production.jsdate.mjs +1 -1
- package/dist/react-querybuilder_datetime.production.jsdate.mjs.map +1 -1
- package/dist/react-querybuilder_datetime.production.luxon.d.mts +2 -2
- package/dist/react-querybuilder_datetime.production.luxon.mjs +1 -1
- package/dist/react-querybuilder_datetime.production.luxon.mjs.map +1 -1
- package/dist/react-querybuilder_datetime.production.mjs +1 -1
- package/dist/react-querybuilder_datetime.production.mjs.map +1 -1
- package/dist/types-Dbg6IgzZ.d.ts +105 -0
- package/dist/types-IRRXKZl4.d.mts +105 -0
- package/package.json +16 -16
- package/dist/cjs/getDatetimeRuleProcessorSQL-Dkg4HEtH.js.map +0 -1
- package/dist/cjs/getDatetimeRuleProcessorSQL-xGETy1ec.js +0 -2
- package/dist/cjs/getDatetimeRuleProcessorSQL-xGETy1ec.js.map +0 -1
- package/dist/cjs/types-B0Eveeq4.d.ts +0 -1752
- package/dist/getDatetimeRuleProcessorSQL-CugqyF_a.mjs.map +0 -1
- package/dist/getDatetimeRuleProcessorSQL-Cxyajj0g.js.map +0 -1
- package/dist/getDatetimeRuleProcessorSQL-Dcqi5kh5.mjs.map +0 -1
- package/dist/types-C-P0L9xh.d.mts +0 -1753
- package/dist/types-DuaAB95e.d.ts +0 -1753
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"react-querybuilder_datetime.cjs.production.luxon.js","names":["DateTime","
|
|
1
|
+
{"version":3,"file":"react-querybuilder_datetime.cjs.production.luxon.js","names":["DateTime","isISOStringDateOnly","getDatetimeJsonLogicOperations","getDatetimeRuleProcessorSQL","getDatetimeValueProcessorANSI","getDatetimeValueProcessorMSSQL","getDatetimeValueProcessorMySQL","getDatetimeValueProcessorOracle","getDatetimeValueProcessorPostgreSQL","getDatetimeRuleProcessorCEL","getDatetimeRuleProcessorMongoDBQuery","getDatetimeRuleProcessorNL"],"sources":["../../src/rqbDateTimeLibraryAPI.luxon.ts","../../src/index.luxon.ts"],"sourcesContent":["import { DateTime } from 'luxon';\nimport type { RQBDateTimeLibraryAPI } from './types';\nimport { isISOStringDateOnly } from './utils';\n\nconst toDateTime = (a: string | Date) =>\n typeof a === 'string' ? DateTime.fromISO(a) : DateTime.fromJSDate(a);\nconst iso8601DateOnly = 'yyyy-MM-dd';\n\n/**\n * {@link RQBDateTimeLibraryAPI} for Luxon\n */\nexport const rqbDateTimeLibraryAPI: RQBDateTimeLibraryAPI = {\n format: (d, fmt) => toDateTime(d).toFormat(fmt.replace('YYYY-MM-DD', iso8601DateOnly)),\n isAfter: (a, b) => toDateTime(a) > toDateTime(b),\n isBefore: (a, b) => toDateTime(a) < toDateTime(b),\n isSame: (a, b) =>\n isISOStringDateOnly(a) || isISOStringDateOnly(b)\n ? toDateTime(a).hasSame(toDateTime(b), 'day')\n : +toDateTime(a) === +toDateTime(b),\n isValid: d => toDateTime(d).isValid,\n toDate: d => toDateTime(d).toJSDate(),\n toISOString: d => {\n const dToDate = toDateTime(d);\n return dToDate.isValid ? dToDate.toJSDate().toISOString() : '';\n },\n toISOStringDateOnly: d => {\n const dToDate = toDateTime(d);\n return dToDate.isValid ? dToDate.toFormat(iso8601DateOnly) : '';\n },\n};\n","/**\n * Import from `\"@react-querybuilder/datetime/luxon\"` for enhanced date/time support using [Luxon](https://moment.github.io/luxon/).\n *\n * @module luxon\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.luxon';\nimport type { RQBJsonLogicDateTimeOperations } from './types';\n\n/**\n * Custom JsonLogic date/time operations using Luxon\n */\nexport const jsonLogicDateTimeOperations: RQBJsonLogicDateTimeOperations =\n getDatetimeJsonLogicOperations(rqbDateTimeLibraryAPI);\n\n/**\n * {@link @react-querybuilder/core!formatQuery formatQuery} rule processor for \"sql\" format using Luxon\n */\nexport const datetimeRuleProcessorSQL: RuleProcessor =\n getDatetimeRuleProcessorSQL(rqbDateTimeLibraryAPI);\n/**\n * {@link @react-querybuilder/core!formatQuery formatQuery} value processor for \"sql\" format (\"ansi\" preset) using Luxon\n */\nexport const datetimeValueProcessorANSI: ValueProcessorByRule =\n getDatetimeValueProcessorANSI(rqbDateTimeLibraryAPI);\n/**\n * {@link @react-querybuilder/core!formatQuery formatQuery} value processor for \"sql\" format (\"mssql\" preset) using Luxon\n */\nexport const datetimeValueProcessorMSSQL: ValueProcessorByRule =\n getDatetimeValueProcessorMSSQL(rqbDateTimeLibraryAPI);\n/**\n * {@link @react-querybuilder/core!formatQuery formatQuery} value processor for \"sql\" format (\"mysql\" preset) using Luxon\n */\nexport const datetimeValueProcessorMySQL: ValueProcessorByRule =\n getDatetimeValueProcessorMySQL(rqbDateTimeLibraryAPI);\n/**\n * {@link @react-querybuilder/core!formatQuery formatQuery} value processor for \"sql\" format (\"oracle\" preset) using Luxon\n */\nexport const datetimeValueProcessorOracle: ValueProcessorByRule =\n getDatetimeValueProcessorOracle(rqbDateTimeLibraryAPI);\n/**\n * {@link @react-querybuilder/core!formatQuery formatQuery} value processor for \"sql\" format (\"postgresql\" preset) using Luxon\n */\nexport const datetimeValueProcessorPostgreSQL: ValueProcessorByRule =\n getDatetimeValueProcessorPostgreSQL(rqbDateTimeLibraryAPI);\n\n/**\n * {@link @react-querybuilder/core!formatQuery formatQuery} rule processor for \"cel\" format using Luxon\n */\nexport const datetimeRuleProcessorCEL: ValueProcessorByRule =\n getDatetimeRuleProcessorCEL(rqbDateTimeLibraryAPI);\n\n/**\n * {@link @react-querybuilder/core!formatQuery formatQuery} rule processor for \"mongodb_query\" format using Luxon\n */\nexport const datetimeRuleProcessorMongoDBQuery: ValueProcessorByRule =\n getDatetimeRuleProcessorMongoDBQuery(rqbDateTimeLibraryAPI);\n\n/**\n * {@link @react-querybuilder/core!formatQuery formatQuery} rule processor for \"natural_language\" format using Luxon\n */\nexport const datetimeRuleProcessorNL: ValueProcessorByRule =\n getDatetimeRuleProcessorNL(rqbDateTimeLibraryAPI);\n\nexport * from './rqbDateTimeLibraryAPI.luxon';\n"],"mappings":"wNAIA,MAAM,EAAc,GAClB,OAAO,GAAM,SAAWA,EAAAA,SAAS,QAAQ,EAAE,CAAGA,EAAAA,SAAS,WAAW,EAAE,CAChE,EAAkB,aAKX,EAA+C,CAC1D,QAAS,EAAG,IAAQ,EAAW,EAAE,CAAC,SAAS,EAAI,QAAQ,aAAc,EAAgB,CAAC,CACtF,SAAU,EAAG,IAAM,EAAW,EAAE,CAAG,EAAW,EAAE,CAChD,UAAW,EAAG,IAAM,EAAW,EAAE,CAAG,EAAW,EAAE,CACjD,QAAS,EAAG,IACVC,EAAAA,EAAoB,EAAE,EAAIA,EAAAA,EAAoB,EAAE,CAC5C,EAAW,EAAE,CAAC,QAAQ,EAAW,EAAE,CAAE,MAAM,CAC3C,CAAC,EAAW,EAAE,EAAK,CAAC,EAAW,EAAE,CACvC,QAAS,GAAK,EAAW,EAAE,CAAC,QAC5B,OAAQ,GAAK,EAAW,EAAE,CAAC,UAAU,CACrC,YAAa,GAAK,CAChB,IAAM,EAAU,EAAW,EAAE,CAC7B,OAAO,EAAQ,QAAU,EAAQ,UAAU,CAAC,aAAa,CAAG,IAE9D,oBAAqB,GAAK,CACxB,IAAM,EAAU,EAAW,EAAE,CAC7B,OAAO,EAAQ,QAAU,EAAQ,SAAS,EAAgB,CAAG,IAEhE,CCJY,EACXC,EAAAA,EAA+B,EAAsB,CAK1C,EACXC,EAAAA,EAA4B,EAAsB,CAIvC,EACXC,EAAAA,EAA8B,EAAsB,CAIzC,EACXC,EAAAA,EAA+B,EAAsB,CAI1C,EACXC,EAAAA,EAA+B,EAAsB,CAI1C,EACXC,EAAAA,EAAgC,EAAsB,CAI3C,EACXC,EAAAA,EAAoC,EAAsB,CAK/C,EACXC,EAAAA,EAA4B,EAAsB,CAKvC,EACXC,EAAAA,EAAqC,EAAsB,CAKhD,EACXC,EAAAA,EAA2B,EAAsB"}
|
|
@@ -0,0 +1,105 @@
|
|
|
1
|
+
import { RQBJsonLogic, RuleProcessor } from "react-querybuilder";
|
|
2
|
+
import { RulesLogic } from "json-logic-js";
|
|
3
|
+
|
|
4
|
+
//#region src/types.d.ts
|
|
5
|
+
interface RQBJsonLogicDateBetween {
|
|
6
|
+
dateBetween: [RQBJsonLogic, RQBJsonLogic, RQBJsonLogic];
|
|
7
|
+
}
|
|
8
|
+
interface RQBJsonLogicDateNotBetween {
|
|
9
|
+
dateNotBetween: [RQBJsonLogic, RQBJsonLogic, RQBJsonLogic];
|
|
10
|
+
}
|
|
11
|
+
interface RQBJsonLogicDateIn {
|
|
12
|
+
dateIn: [RQBJsonLogic, RQBJsonLogic[]];
|
|
13
|
+
}
|
|
14
|
+
interface RQBJsonLogicDateNotIn {
|
|
15
|
+
dateNotIn: [RQBJsonLogic, RQBJsonLogic[]];
|
|
16
|
+
}
|
|
17
|
+
interface RQBJsonLogicDateBefore {
|
|
18
|
+
dateBefore: [RQBJsonLogic, RQBJsonLogic, ...RQBJsonLogic[]];
|
|
19
|
+
}
|
|
20
|
+
interface RQBJsonLogicDateOnOrBefore {
|
|
21
|
+
dateOnOrBefore: [RQBJsonLogic, RQBJsonLogic, ...RQBJsonLogic[]];
|
|
22
|
+
}
|
|
23
|
+
interface RQBJsonLogicDateOn {
|
|
24
|
+
dateOn: [RQBJsonLogic, RQBJsonLogic, ...RQBJsonLogic[]];
|
|
25
|
+
}
|
|
26
|
+
interface RQBJsonLogicDateNotOn {
|
|
27
|
+
dateNotOn: [RQBJsonLogic, RQBJsonLogic, ...RQBJsonLogic[]];
|
|
28
|
+
}
|
|
29
|
+
interface RQBJsonLogicDateAfter {
|
|
30
|
+
dateAfter: [RQBJsonLogic, RQBJsonLogic, ...RQBJsonLogic[]];
|
|
31
|
+
}
|
|
32
|
+
interface RQBJsonLogicDateOnOrAfter {
|
|
33
|
+
dateOnOrAfter: [RQBJsonLogic, RQBJsonLogic, ...RQBJsonLogic[]];
|
|
34
|
+
}
|
|
35
|
+
/**
|
|
36
|
+
* JsonLogic rule object with additional operators generated by
|
|
37
|
+
* {@link @react-querybuilder/core!formatQuery formatQuery} and accepted by
|
|
38
|
+
* {@link @react-querybuilder/core!parseJsonLogic parseJsonLogic}.
|
|
39
|
+
*/
|
|
40
|
+
type RQBDateTimeJsonLogic = RQBJsonLogic | RulesLogic<RQBJsonLogicDateAfter | RQBJsonLogicDateBefore | RQBJsonLogicDateBetween | RQBJsonLogicDateIn | RQBJsonLogicDateNotBetween | RQBJsonLogicDateNotIn | RQBJsonLogicDateNotOn | RQBJsonLogicDateOn | RQBJsonLogicDateOnOrAfter | RQBJsonLogicDateOnOrBefore>;
|
|
41
|
+
type DateOrString = string | Date;
|
|
42
|
+
interface RQBDateTimeLibraryAPI {
|
|
43
|
+
/**
|
|
44
|
+
* Formats a date as a string.
|
|
45
|
+
*/
|
|
46
|
+
format: (d: DateOrString, fmt: string) => string;
|
|
47
|
+
/**
|
|
48
|
+
* Formats a date as an ISO 8601 string, only including
|
|
49
|
+
* the year, month, and day ('YYYY-MM-DD').
|
|
50
|
+
*/
|
|
51
|
+
toISOStringDateOnly: (d: DateOrString) => string;
|
|
52
|
+
/**
|
|
53
|
+
* Determines whether the first date is after the second date.
|
|
54
|
+
*/
|
|
55
|
+
isAfter: (a: DateOrString, b: DateOrString) => boolean;
|
|
56
|
+
/**
|
|
57
|
+
* Determines whether the first date is before the second date.
|
|
58
|
+
*/
|
|
59
|
+
isBefore: (a: DateOrString, b: DateOrString) => boolean;
|
|
60
|
+
/**
|
|
61
|
+
* Determines whether the first date is the same as the second date.
|
|
62
|
+
*
|
|
63
|
+
* If either the first date or the second date is a string in the
|
|
64
|
+
* format 'YYYY-MM-DD', then the dates will only be compared at
|
|
65
|
+
* the date level (no time component). Otherwise, they will be
|
|
66
|
+
* compared to the millisecond.
|
|
67
|
+
*/
|
|
68
|
+
isSame: (a: DateOrString, b: DateOrString) => boolean;
|
|
69
|
+
/**
|
|
70
|
+
* Determines whether the date is either a valid `Date` object or an
|
|
71
|
+
* ISO 8601-formatted string representing a valid date.
|
|
72
|
+
*/
|
|
73
|
+
isValid: (d: DateOrString) => boolean;
|
|
74
|
+
/**
|
|
75
|
+
* Converts a string to a `Date` object or returns a valid `Date` as is.
|
|
76
|
+
*/
|
|
77
|
+
toDate: (d: DateOrString) => Date;
|
|
78
|
+
/**
|
|
79
|
+
* Converts a `Date` or ISO 8601-formatted string into a full ISO 8601 UTC
|
|
80
|
+
* string, in the format 'YYYY-MM-DDTHH:mm:ss.SSSZ' (the "T" and "Z" are
|
|
81
|
+
* static; other parts represent standard time units, increasing in precision
|
|
82
|
+
* from left to right).
|
|
83
|
+
*/
|
|
84
|
+
toISOString: (d: DateOrString) => string;
|
|
85
|
+
}
|
|
86
|
+
type FnDateDate = (a: DateOrString, b: DateOrString) => boolean;
|
|
87
|
+
type FnDateArrayOfDates = (a: DateOrString, b: DateOrString[]) => boolean;
|
|
88
|
+
type FnDateDateDate = (a: DateOrString, b: DateOrString, c: DateOrString) => boolean;
|
|
89
|
+
type RQBJsonLogicDateTimeOperations = {
|
|
90
|
+
/** Determines if the first date is after the second date. */dateAfter: FnDateDate; /** Determines if the first date is before the second date. */
|
|
91
|
+
dateBefore: FnDateDate; /** Determines if the second date is between the first and third dates (inclusive). */
|
|
92
|
+
dateBetween: FnDateDateDate; /** Determines if the first date is one of the values in the array of dates. */
|
|
93
|
+
dateIn: FnDateArrayOfDates; /** Determines if the second date is not between the first and third dates. */
|
|
94
|
+
dateNotBetween: FnDateDateDate; /** Determines if the first date is not one of the values in the array of dates. */
|
|
95
|
+
dateNotIn: FnDateArrayOfDates; /** Determines if the first date is not the same as the second date. */
|
|
96
|
+
dateNotOn: FnDateDate; /** Determines if the first date is the same as the second date (at the level of least precision between the two). */
|
|
97
|
+
dateOn: FnDateDate; /** Determines if the first date is either the same as the second date or after it. */
|
|
98
|
+
dateOnOrAfter: FnDateDate; /** Determines if the first date is either the same as the second date or before it. */
|
|
99
|
+
dateOnOrBefore: FnDateDate;
|
|
100
|
+
};
|
|
101
|
+
type IsDateFieldFunction = (...[rule, opts]: Parameters<RuleProcessor>) => boolean;
|
|
102
|
+
type IsDateField = IsDateFieldFunction | Record<string, unknown> | Record<string, unknown>[] | boolean | undefined;
|
|
103
|
+
//#endregion
|
|
104
|
+
export { RQBJsonLogicDateAfter as a, RQBJsonLogicDateIn as c, RQBJsonLogicDateNotOn as d, RQBJsonLogicDateOn as f, RQBJsonLogicDateTimeOperations as h, RQBDateTimeLibraryAPI as i, RQBJsonLogicDateNotBetween as l, RQBJsonLogicDateOnOrBefore as m, IsDateFieldFunction as n, RQBJsonLogicDateBefore as o, RQBJsonLogicDateOnOrAfter as p, RQBDateTimeJsonLogic as r, RQBJsonLogicDateBetween as s, IsDateField as t, RQBJsonLogicDateNotIn as u };
|
|
105
|
+
//# sourceMappingURL=types-BIfMyAwh.d.ts.map
|
package/dist/{getDatetimeRuleProcessorSQL-Dcqi5kh5.mjs → getDatetimeRuleProcessorSQL-Cbq2-tqd.mjs}
RENAMED
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
import{defaultOperatorProcessorNL as e,defaultRuleProcessorCEL as t,defaultRuleProcessorMongoDBQuery as n,defaultRuleProcessorNL as r,defaultRuleProcessorSQL as i,defaultValueProcessorByRule as a,getQuotedFieldName as o,lc as s,mapSQLOperator as c,mongoOperators as l,normalizeConstituentWordOrder as u,toArray as d}from"react-querybuilder";const f=e=>typeof e==`string`&&/^\d{4}-\d{2}-\d{2}$/.test(e),p=(...[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),m=(e,...[t,n])=>typeof e==`boolean`?e:typeof e==`function`?e(t,n):Array.isArray(e)?e.some(e=>Object.entries(e).every(([e,t])=>n?.fieldData?.[e]===t)):typeof e==`object`?Object.entries(e).every(([e,t])=>n?.fieldData?.[e]===t):p(t,n),h=({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)}),g=e=>/^(does)?not/i.test(e),_=e=>(n,r)=>{let i=r??{},{context:a={}}=i;if(n.valueSource===`field`||!m(a.isDateField,n,i))return t(n,i);let o=t=>`timestamp("${e.toISOString(t)}")`,c=s(n.operator.replace(/^=$/,`==`));switch(c){case`<`:case`<=`:case`==`:case`!=`:case`>`:case`>=`:return`${n.field} ${c} ${o(n.value)}`}let l=d(n.value,{retainEmptyStrings:!1}).map(t=>e.toDate(t)).filter(t=>e.isValid(t));switch(c){case`in`:case`notin`:{if(l.length===0)return``;let[e,t]=g(c)?[`!(`,`)`]:[``,``];return`${e}${n.field} in [${l.map(e=>o(e)).join(`, `)}]${t}`}case`between`:case`notbetween`:{if(l.length<2)return``;let[t,r]=l,[i,a]=e.isBefore(t,r)?[t,r]:[r,t];return c===`between`?`(${n.field} >= ${o(i)} && ${n.field} <= ${o(a)})`:`(${n.field} < ${o(i)} || ${n.field} > ${o(a)})`}}return t(n,i)},v=e=>(t,r)=>{let i=r??{},{field:a,operator:o,value:s,valueSource:c}=t;if(c===`field`||!m(i.context?.isDateField,t,i))return n(t,i);if(o===`=`)return{[a]:e.toDate(s)};switch(o){case`<`:case`<=`:case`!=`:case`>`:case`>=`:return{[a]:{[l[o]]:e.toDate(s)}}}let u=d(t.value,{retainEmptyStrings:!1}).map(t=>e.toDate(t)).filter(t=>e.isValid(t));switch(o){case`in`:case`notIn`:return{[a]:{[l[o]]:u}};case`between`:case`notBetween`:{if(u.length<2)return``;let[t,n]=u,r=e.isBefore(t,n)?[t,n]:[n,t];return o===`between`?{[a]:{$gte:r[0],$lte:r[1]}}:{$or:[{[a]:{$lt:r[0]}},{[a]:{$gt:r[1]}}]}}}return n(t,i)},y={"<":`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`]},b=(e,t)=>f(t?.context?.originalValue)?new Intl.DateTimeFormat(t?.context?.locales,{dateStyle:`full`,...t?.context?.dateFormat}).format(e.value):new Intl.DateTimeFormat(t?.context?.locales,{dateStyle:`full`,timeStyle:`long`,...t?.context?.dateTimeFormat}).format(e.value),x=t=>(n,i)=>{let a=i??{},c=s(n.operator),l=``,{fieldData:f,quoteFieldNamesWith:p=[``,``],fieldIdentifierSeparator:h=``,operatorProcessor:g=e,wordOrder:_=`SVO`,context:v={},operatorMap:x=y}=a;if(!m(v.isDateField,n,a))return r(n,a);if(n.valueSource===`field`)return r(n,{...a,operatorMap:y});if((c===`in`||c===`notin`||c===`between`||c===`notbetween`)&&!n.value)return``;let S=d(n.value,{retainEmptyStrings:!1}).map(e=>[e,t.toDate(e)]).filter(e=>t.isValid(e[1]));switch(c){case`in`:case`notin`:if(S.length===0)return``;l=`(${S.map(e=>b({field:n.field,operator:`=`,value:e[1]},{...a,context:{...v,originalValue:e[0]}})).join(`, `)})`;break;case`between`:case`notbetween`:{if(S.length<2)return``;let[e,r]=S;l=(t.isBefore(e[1],r[1])?[e,r]:[r,e]).map(([e,t])=>b({field:n.field,operator:`=`,value:t},{...a,context:{...v,originalValue:e}})).join(` ${a.translations?.and??`and`} `)}break;default:{let[e,t]=S[0]??[``,``];l=e?b({field:n.field,operator:`=`,value:t},{...a,context:{...v,originalValue:e}}):``}}let C={S:o(f?.label??n.field,{quoteFieldNamesWith:p,fieldIdentifierSeparator:h}),V:g(n,{...a,operatorMap:{...y,...x}}),O:l};return u(_).map(e=>`${C[e]}`).join(` `).trim()},S=({toISOStringDateOnly:e,toISOString:t})=>(n,r)=>f(r?.context?.originalValue)?a({...n,value:e(n.value)},r):a({...n,value:t(n.value)},r),C=({toISOStringDateOnly:e,toISOString:t})=>(n,r)=>{let i=/^(?:small)?datetime/i.test(r?.fieldData?.datatype)?`datetimeoffset`:`date`,o=i===`datetimeoffset`?t(n.value):e(n.value);return a({...n,value:o},{...r,wrapValueWith:[`cast(`,` as ${i})`]})},w=({toISOStringDateOnly:e,toISOString:t})=>(n,r)=>{let i=/^(?:datetime|timestamp)/i.test(r?.fieldData?.datatype)?`datetime`:`date`,o=i===`datetime`?t(n.value):e(n.value);return a({...n,value:o},{...r,wrapValueWith:[`cast(`,` as ${i})`]})},T=({toISOStringDateOnly:e,toISOString:t})=>(n,r)=>{let i=/^timestamp/i.test(r?.fieldData?.datatype)?`timestamp`:`date`,o=i===`timestamp`?t(n.value).replaceAll(`T`,` `).replace(`Z`,` UTC`):e(n.value);return a({...n,value:o},{...r,wrapValueWith:[i,``]})},E=({toISOStringDateOnly:e,toISOString:t})=>(n,r)=>{let i=/^timestamp/i.test(r?.fieldData?.datatype)?`timestamp`:`date`,o=i===`timestamp`?t(n.value):e(n.value);return a({...n,value:o},{...r,wrapValueWith:[i,``]})},D={ansi:S,mssql:C,mysql:w,oracle:T,postgresql:E,sqlite:S},O=e=>(t,n)=>{let r=n??{},a=c(t.operator),l=s(a),{quoteFieldNamesWith:u=[``,``],fieldIdentifierSeparator:f=``,context:p={}}=r,h=``;if(t.valueSource===`field`||!m(p.isDateField,t,r))return i(t,r);let g=D[r.preset](e),_=d(t.value,{retainEmptyStrings:!1}).map(t=>[t,e.toDate(t)]).filter(t=>e.isValid(t[1]));switch(l){case`in`:case`not in`:if(_.length===0)return``;h=`(${_.map(e=>g({field:t.field,operator:`=`,value:e[1]},{...r,context:{originalValue:e[0]}})).join(`, `)})`;break;case`between`:case`not between`:{if(_.length<2)return``;let[n,i]=_;h=(e.isBefore(n[1],i[1])?[n,i]:[i,n]).map(([e,n])=>g({field:t.field,operator:`=`,value:n},{...r,context:{originalValue:e}})).join(` and `)}break;default:{let[e,n]=_[0]??[``,``];h=g({field:t.field,operator:`=`,value:n},{...r,context:{originalValue:e}})}}return`${o(t.field,{quoteFieldNamesWith:u,fieldIdentifierSeparator:f})} ${a} ${h}`.trim()};export{T as a,y as c,_ as d,h as f,w as i,x as l,m,S as n,E as o,f as p,C as r,b as s,O as t,v as u};
|
|
2
|
-
//# sourceMappingURL=getDatetimeRuleProcessorSQL-
|
|
2
|
+
//# sourceMappingURL=getDatetimeRuleProcessorSQL-Cbq2-tqd.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"getDatetimeRuleProcessorSQL-Cbq2-tqd.mjs","names":[],"sources":["../src/utils.ts","../src/getDatetimeJsonLogicOperations.ts","../src/getDatetimeRuleProcessorCEL.ts","../src/getDatetimeRuleProcessorMongoDBQuery.ts","../src/getDatetimeRuleProcessorNL.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 ?? /* istanbul ignore next */ {};\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 { 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 ?? /* istanbul ignore next */ {};\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 ?? /* istanbul ignore next */ {};\n const operatorLowerCase = lc(rule.operator);\n let finalValue = '';\n\n // istanbul 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, 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 ?? /* istanbul ignore next */ {};\n const operator = mapSQLOperator(rule.operator);\n const operatorLowerCase = lc(operator);\n // istanbul 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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"}
|
package/dist/{getDatetimeRuleProcessorSQL-CugqyF_a.mjs → getDatetimeRuleProcessorSQL-CnAPMZf2.mjs}
RENAMED
|
@@ -1,5 +1,4 @@
|
|
|
1
1
|
import { defaultOperatorProcessorNL, defaultRuleProcessorCEL, defaultRuleProcessorMongoDBQuery, defaultRuleProcessorNL, defaultRuleProcessorSQL, defaultValueProcessorByRule, getQuotedFieldName, lc, mapSQLOperator, mongoOperators, normalizeConstituentWordOrder, toArray } from "react-querybuilder";
|
|
2
|
-
|
|
3
2
|
//#region src/utils.ts
|
|
4
3
|
const isISOStringDateOnly = (date) => typeof date === "string" && /^\d{4}-\d{2}-\d{2}$/.test(date);
|
|
5
4
|
const defaultIsDateField = (...[rule, opts]) => 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?.fieldData?.datatype);
|
|
@@ -10,7 +9,6 @@ const processIsDateField = (isDateField, ...[rule, opts]) => {
|
|
|
10
9
|
if (typeof isDateField === "object") return Object.entries(isDateField).every(([key, value]) => opts?.fieldData?.[key] === value);
|
|
11
10
|
return defaultIsDateField(rule, opts);
|
|
12
11
|
};
|
|
13
|
-
|
|
14
12
|
//#endregion
|
|
15
13
|
//#region src/getDatetimeJsonLogicOperations.ts
|
|
16
14
|
/**
|
|
@@ -29,7 +27,6 @@ const getDatetimeJsonLogicOperations = ({ isAfter, isBefore, isSame }) => ({
|
|
|
29
27
|
dateOnOrAfter: (a, b) => isAfter(a, b) || isSame(a, b),
|
|
30
28
|
dateOnOrBefore: (a, b) => isBefore(a, b) || isSame(a, b)
|
|
31
29
|
});
|
|
32
|
-
|
|
33
30
|
//#endregion
|
|
34
31
|
//#region src/getDatetimeRuleProcessorCEL.ts
|
|
35
32
|
const shouldNegate = (op) => /^(does)?not/i.test(op);
|
|
@@ -69,7 +66,6 @@ const getDatetimeRuleProcessorCEL = (apiFns) => (rule, options) => {
|
|
|
69
66
|
}
|
|
70
67
|
return defaultRuleProcessorCEL(rule, opts);
|
|
71
68
|
};
|
|
72
|
-
|
|
73
69
|
//#endregion
|
|
74
70
|
//#region src/getDatetimeRuleProcessorMongoDBQuery.ts
|
|
75
71
|
/**
|
|
@@ -105,7 +101,6 @@ const getDatetimeRuleProcessorMongoDBQuery = (apiFns) => (rule, options) => {
|
|
|
105
101
|
}
|
|
106
102
|
return defaultRuleProcessorMongoDBQuery(rule, opts);
|
|
107
103
|
};
|
|
108
|
-
|
|
109
104
|
//#endregion
|
|
110
105
|
//#region src/getDatetimeRuleProcessorNL.ts
|
|
111
106
|
const defaultDateTimeNLOperatorMap = {
|
|
@@ -215,7 +210,6 @@ const getDatetimeRuleProcessorNL = (apiFns) => (rule, options) => {
|
|
|
215
210
|
};
|
|
216
211
|
return normalizeConstituentWordOrder(wordOrder).map((term) => `${wordOrderMap[term]}`).join(" ").trim();
|
|
217
212
|
};
|
|
218
|
-
|
|
219
213
|
//#endregion
|
|
220
214
|
//#region src/getDatetimeRuleProcessorSQL.ts
|
|
221
215
|
/**
|
|
@@ -359,7 +353,7 @@ const getDatetimeRuleProcessorSQL = (apiFns) => (rule, options) => {
|
|
|
359
353
|
fieldIdentifierSeparator
|
|
360
354
|
})} ${operator} ${finalValue}`.trim();
|
|
361
355
|
};
|
|
362
|
-
|
|
363
356
|
//#endregion
|
|
364
357
|
export { getDatetimeValueProcessorOracle as a, defaultDateTimeNLOperatorMap as c, getDatetimeRuleProcessorCEL as d, getDatetimeJsonLogicOperations as f, getDatetimeValueProcessorMySQL as i, getDatetimeRuleProcessorNL as l, processIsDateField as m, getDatetimeValueProcessorANSI as n, getDatetimeValueProcessorPostgreSQL as o, isISOStringDateOnly as p, getDatetimeValueProcessorMSSQL as r, datetimeValueProcessorNL as s, getDatetimeRuleProcessorSQL as t, getDatetimeRuleProcessorMongoDBQuery as u };
|
|
365
|
-
|
|
358
|
+
|
|
359
|
+
//# sourceMappingURL=getDatetimeRuleProcessorSQL-CnAPMZf2.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"getDatetimeRuleProcessorSQL-CnAPMZf2.mjs","names":[],"sources":["../src/utils.ts","../src/getDatetimeJsonLogicOperations.ts","../src/getDatetimeRuleProcessorCEL.ts","../src/getDatetimeRuleProcessorMongoDBQuery.ts","../src/getDatetimeRuleProcessorNL.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 ?? /* istanbul ignore next */ {};\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 { 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 ?? /* istanbul ignore next */ {};\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 ?? /* istanbul ignore next */ {};\n const operatorLowerCase = lc(rule.operator);\n let finalValue = '';\n\n // istanbul 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, 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 ?? /* istanbul ignore next */ {};\n const operator = mapSQLOperator(rule.operator);\n const operatorLowerCase = lc(operator);\n // istanbul 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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"}
|
package/dist/{getDatetimeRuleProcessorSQL-Cxyajj0g.js → getDatetimeRuleProcessorSQL-r7Vd5Cm4.js}
RENAMED
|
@@ -1,5 +1,4 @@
|
|
|
1
1
|
import { defaultOperatorProcessorNL, defaultRuleProcessorCEL, defaultRuleProcessorMongoDBQuery, defaultRuleProcessorNL, defaultRuleProcessorSQL, defaultValueProcessorByRule, getQuotedFieldName, lc, mapSQLOperator, mongoOperators, normalizeConstituentWordOrder, toArray } from "react-querybuilder";
|
|
2
|
-
|
|
3
2
|
//#region src/utils.ts
|
|
4
3
|
const isISOStringDateOnly = (date) => typeof date === "string" && /^\d{4}-\d{2}-\d{2}$/.test(date);
|
|
5
4
|
const defaultIsDateField = (...[rule, opts]) => {
|
|
@@ -19,7 +18,6 @@ const processIsDateField = (isDateField, ...[rule, opts]) => {
|
|
|
19
18
|
});
|
|
20
19
|
return defaultIsDateField(rule, opts);
|
|
21
20
|
};
|
|
22
|
-
|
|
23
21
|
//#endregion
|
|
24
22
|
//#region src/getDatetimeJsonLogicOperations.ts
|
|
25
23
|
/**
|
|
@@ -38,7 +36,6 @@ const getDatetimeJsonLogicOperations = ({ isAfter, isBefore, isSame }) => ({
|
|
|
38
36
|
dateOnOrAfter: (a, b) => isAfter(a, b) || isSame(a, b),
|
|
39
37
|
dateOnOrBefore: (a, b) => isBefore(a, b) || isSame(a, b)
|
|
40
38
|
});
|
|
41
|
-
|
|
42
39
|
//#endregion
|
|
43
40
|
//#region src/getDatetimeRuleProcessorCEL.ts
|
|
44
41
|
const shouldNegate = (op) => /^(does)?not/i.test(op);
|
|
@@ -78,7 +75,6 @@ const getDatetimeRuleProcessorCEL = (apiFns) => (rule, options) => {
|
|
|
78
75
|
}
|
|
79
76
|
return defaultRuleProcessorCEL(rule, opts);
|
|
80
77
|
};
|
|
81
|
-
|
|
82
78
|
//#endregion
|
|
83
79
|
//#region src/getDatetimeRuleProcessorMongoDBQuery.ts
|
|
84
80
|
/**
|
|
@@ -115,20 +111,18 @@ const getDatetimeRuleProcessorMongoDBQuery = (apiFns) => (rule, options) => {
|
|
|
115
111
|
}
|
|
116
112
|
return defaultRuleProcessorMongoDBQuery(rule, opts);
|
|
117
113
|
};
|
|
118
|
-
|
|
119
114
|
//#endregion
|
|
120
|
-
//#region \0@oxc-project+runtime@0.
|
|
115
|
+
//#region \0@oxc-project+runtime@0.115.0/helpers/typeof.js
|
|
121
116
|
function _typeof(o) {
|
|
122
117
|
"@babel/helpers - typeof";
|
|
123
|
-
return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function(o
|
|
124
|
-
return typeof o
|
|
125
|
-
} : function(o
|
|
126
|
-
return o
|
|
118
|
+
return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function(o) {
|
|
119
|
+
return typeof o;
|
|
120
|
+
} : function(o) {
|
|
121
|
+
return o && "function" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? "symbol" : typeof o;
|
|
127
122
|
}, _typeof(o);
|
|
128
123
|
}
|
|
129
|
-
|
|
130
124
|
//#endregion
|
|
131
|
-
//#region \0@oxc-project+runtime@0.
|
|
125
|
+
//#region \0@oxc-project+runtime@0.115.0/helpers/toPrimitive.js
|
|
132
126
|
function toPrimitive(t, r) {
|
|
133
127
|
if ("object" != _typeof(t) || !t) return t;
|
|
134
128
|
var e = t[Symbol.toPrimitive];
|
|
@@ -139,16 +133,14 @@ function toPrimitive(t, r) {
|
|
|
139
133
|
}
|
|
140
134
|
return ("string" === r ? String : Number)(t);
|
|
141
135
|
}
|
|
142
|
-
|
|
143
136
|
//#endregion
|
|
144
|
-
//#region \0@oxc-project+runtime@0.
|
|
137
|
+
//#region \0@oxc-project+runtime@0.115.0/helpers/toPropertyKey.js
|
|
145
138
|
function toPropertyKey(t) {
|
|
146
139
|
var i = toPrimitive(t, "string");
|
|
147
140
|
return "symbol" == _typeof(i) ? i : i + "";
|
|
148
141
|
}
|
|
149
|
-
|
|
150
142
|
//#endregion
|
|
151
|
-
//#region \0@oxc-project+runtime@0.
|
|
143
|
+
//#region \0@oxc-project+runtime@0.115.0/helpers/defineProperty.js
|
|
152
144
|
function _defineProperty(e, r, t) {
|
|
153
145
|
return (r = toPropertyKey(r)) in e ? Object.defineProperty(e, r, {
|
|
154
146
|
value: t,
|
|
@@ -157,15 +149,14 @@ function _defineProperty(e, r, t) {
|
|
|
157
149
|
writable: !0
|
|
158
150
|
}) : e[r] = t, e;
|
|
159
151
|
}
|
|
160
|
-
|
|
161
152
|
//#endregion
|
|
162
|
-
//#region \0@oxc-project+runtime@0.
|
|
153
|
+
//#region \0@oxc-project+runtime@0.115.0/helpers/objectSpread2.js
|
|
163
154
|
function ownKeys(e, r) {
|
|
164
155
|
var t = Object.keys(e);
|
|
165
156
|
if (Object.getOwnPropertySymbols) {
|
|
166
157
|
var o = Object.getOwnPropertySymbols(e);
|
|
167
|
-
r && (o = o.filter(function(r
|
|
168
|
-
return Object.getOwnPropertyDescriptor(e, r
|
|
158
|
+
r && (o = o.filter(function(r) {
|
|
159
|
+
return Object.getOwnPropertyDescriptor(e, r).enumerable;
|
|
169
160
|
})), t.push.apply(t, o);
|
|
170
161
|
}
|
|
171
162
|
return t;
|
|
@@ -173,15 +164,14 @@ function ownKeys(e, r) {
|
|
|
173
164
|
function _objectSpread2(e) {
|
|
174
165
|
for (var r = 1; r < arguments.length; r++) {
|
|
175
166
|
var t = null != arguments[r] ? arguments[r] : {};
|
|
176
|
-
r % 2 ? ownKeys(Object(t), !0).forEach(function(r
|
|
177
|
-
_defineProperty(e, r
|
|
178
|
-
}) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function(r
|
|
179
|
-
Object.defineProperty(e, r
|
|
167
|
+
r % 2 ? ownKeys(Object(t), !0).forEach(function(r) {
|
|
168
|
+
_defineProperty(e, r, t[r]);
|
|
169
|
+
}) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function(r) {
|
|
170
|
+
Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r));
|
|
180
171
|
});
|
|
181
172
|
}
|
|
182
173
|
return e;
|
|
183
174
|
}
|
|
184
|
-
|
|
185
175
|
//#endregion
|
|
186
176
|
//#region src/getDatetimeRuleProcessorNL.ts
|
|
187
177
|
const defaultDateTimeNLOperatorMap = {
|
|
@@ -267,7 +257,6 @@ const getDatetimeRuleProcessorNL = (apiFns) => (rule, options) => {
|
|
|
267
257
|
};
|
|
268
258
|
return normalizeConstituentWordOrder(wordOrder).map((term) => `${wordOrderMap[term]}`).join(" ").trim();
|
|
269
259
|
};
|
|
270
|
-
|
|
271
260
|
//#endregion
|
|
272
261
|
//#region src/getDatetimeRuleProcessorSQL.ts
|
|
273
262
|
/**
|
|
@@ -378,7 +367,7 @@ const getDatetimeRuleProcessorSQL = (apiFns) => (rule, options) => {
|
|
|
378
367
|
fieldIdentifierSeparator
|
|
379
368
|
})} ${operator} ${finalValue}`.trim();
|
|
380
369
|
};
|
|
381
|
-
|
|
382
370
|
//#endregion
|
|
383
371
|
export { getDatetimeValueProcessorOracle as a, defaultDateTimeNLOperatorMap as c, getDatetimeRuleProcessorCEL as d, getDatetimeJsonLogicOperations as f, getDatetimeValueProcessorMySQL as i, getDatetimeRuleProcessorNL as l, processIsDateField as m, getDatetimeValueProcessorANSI as n, getDatetimeValueProcessorPostgreSQL as o, isISOStringDateOnly as p, getDatetimeValueProcessorMSSQL as r, datetimeValueProcessorNL as s, getDatetimeRuleProcessorSQL as t, getDatetimeRuleProcessorMongoDBQuery as u };
|
|
384
|
-
|
|
372
|
+
|
|
373
|
+
//# sourceMappingURL=getDatetimeRuleProcessorSQL-r7Vd5Cm4.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"getDatetimeRuleProcessorSQL-r7Vd5Cm4.js","names":[],"sources":["../src/utils.ts","../src/getDatetimeJsonLogicOperations.ts","../src/getDatetimeRuleProcessorCEL.ts","../src/getDatetimeRuleProcessorMongoDBQuery.ts","../src/getDatetimeRuleProcessorNL.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 ?? /* istanbul ignore next */ {};\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 { 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 ?? /* istanbul ignore next */ {};\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 ?? /* istanbul ignore next */ {};\n const operatorLowerCase = lc(rule.operator);\n let finalValue = '';\n\n // istanbul 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, 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 ?? /* istanbul ignore next */ {};\n const operator = mapSQLOperator(rule.operator);\n const operatorLowerCase = lc(operator);\n // istanbul 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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"}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { a as RQBJsonLogicDateAfter, c as RQBJsonLogicDateIn, d as RQBJsonLogicDateNotOn, f as RQBJsonLogicDateOn, h as RQBJsonLogicDateTimeOperations, i as RQBDateTimeLibraryAPI, l as RQBJsonLogicDateNotBetween, m as RQBJsonLogicDateOnOrBefore, n as IsDateFieldFunction, o as RQBJsonLogicDateBefore, p as RQBJsonLogicDateOnOrAfter, r as RQBDateTimeJsonLogic, s as RQBJsonLogicDateBetween, t as IsDateField, u as RQBJsonLogicDateNotIn } from "./types-IRRXKZl4.mjs";
|
|
2
|
+
import { ExportOperatorMap, RuleProcessor, ValueProcessorByRule } from "react-querybuilder";
|
|
2
3
|
|
|
3
4
|
//#region src/datetimeRuleProcessorJsonLogic.d.ts
|
|
4
|
-
|
|
5
5
|
/**
|
|
6
6
|
* Date/time rule processor for use by {@link @react-querybuilder/core!formatQuery formatQuery}
|
|
7
7
|
* with the "jsonlogic" format.
|
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { h as RQBJsonLogicDateTimeOperations, i as RQBDateTimeLibraryAPI } from "./types-IRRXKZl4.mjs";
|
|
2
|
+
import { RuleProcessor, ValueProcessorByRule } from "react-querybuilder";
|
|
2
3
|
|
|
3
4
|
//#region src/rqbDateTimeLibraryAPI.date-fns.d.ts
|
|
4
|
-
|
|
5
5
|
/**
|
|
6
6
|
* {@link RQBDateTimeLibraryAPI} for date-fns
|
|
7
7
|
*/
|
|
@@ -1,6 +1,5 @@
|
|
|
1
|
-
import { a as getDatetimeValueProcessorOracle, d as getDatetimeRuleProcessorCEL, f as getDatetimeJsonLogicOperations, i as getDatetimeValueProcessorMySQL, l as getDatetimeRuleProcessorNL, n as getDatetimeValueProcessorANSI, o as getDatetimeValueProcessorPostgreSQL, p as isISOStringDateOnly, r as getDatetimeValueProcessorMSSQL, t as getDatetimeRuleProcessorSQL, u as getDatetimeRuleProcessorMongoDBQuery } from "./getDatetimeRuleProcessorSQL-
|
|
1
|
+
import { a as getDatetimeValueProcessorOracle, d as getDatetimeRuleProcessorCEL, f as getDatetimeJsonLogicOperations, i as getDatetimeValueProcessorMySQL, l as getDatetimeRuleProcessorNL, n as getDatetimeValueProcessorANSI, o as getDatetimeValueProcessorPostgreSQL, p as isISOStringDateOnly, r as getDatetimeValueProcessorMSSQL, t as getDatetimeRuleProcessorSQL, u as getDatetimeRuleProcessorMongoDBQuery } from "./getDatetimeRuleProcessorSQL-CnAPMZf2.mjs";
|
|
2
2
|
import { format, isAfter, isBefore, isSameDay, isValid, parseISO, toDate } from "date-fns";
|
|
3
|
-
|
|
4
3
|
//#region src/rqbDateTimeLibraryAPI.date-fns.ts
|
|
5
4
|
const toDate$1 = (a) => typeof a === "string" ? parseISO(a) : toDate(a);
|
|
6
5
|
const iso8601DateOnly = "yyyy-MM-dd";
|
|
@@ -27,7 +26,6 @@ const rqbDateTimeLibraryAPI = {
|
|
|
27
26
|
return isValid(dToDate) ? format(dToDate, iso8601DateOnly) : "";
|
|
28
27
|
}
|
|
29
28
|
};
|
|
30
|
-
|
|
31
29
|
//#endregion
|
|
32
30
|
//#region src/index.date-fns.ts
|
|
33
31
|
/**
|
|
@@ -70,7 +68,7 @@ const datetimeRuleProcessorMongoDBQuery = getDatetimeRuleProcessorMongoDBQuery(r
|
|
|
70
68
|
* {@link @react-querybuilder/core!formatQuery formatQuery} rule processor for "natural_language" format using date-fns
|
|
71
69
|
*/
|
|
72
70
|
const datetimeRuleProcessorNL = getDatetimeRuleProcessorNL(rqbDateTimeLibraryAPI);
|
|
73
|
-
|
|
74
71
|
//#endregion
|
|
75
72
|
export { datetimeRuleProcessorCEL, datetimeRuleProcessorMongoDBQuery, datetimeRuleProcessorNL, datetimeRuleProcessorSQL, datetimeValueProcessorANSI, datetimeValueProcessorMSSQL, datetimeValueProcessorMySQL, datetimeValueProcessorOracle, datetimeValueProcessorPostgreSQL, jsonLogicDateTimeOperations, rqbDateTimeLibraryAPI };
|
|
73
|
+
|
|
76
74
|
//# sourceMappingURL=react-querybuilder_datetime.date-fns.mjs.map
|