@onereach/billing-shared 11.66.2-beta.3422.0 → 11.67.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/cjs/utils/date.js +28 -0
- package/dist/cjs/utils/date.js.map +1 -1
- package/dist/esm/utils/date.js +26 -0
- package/dist/esm/utils/date.js.map +1 -1
- package/dist/types/utils/date.d.ts +2 -0
- package/dist/types/utils/date.d.ts.map +1 -1
- package/package.json +1 -1
- package/src/utils/date.ts +74 -0
package/dist/cjs/utils/date.js
CHANGED
|
@@ -1,8 +1,36 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.formatDateToString = formatDateToString;
|
|
4
|
+
exports.dateRangesOverlap = dateRangesOverlap;
|
|
5
|
+
exports.parseDateString = parseDateString;
|
|
4
6
|
function formatDateToString(date) {
|
|
5
7
|
var targetDate = date || new Date();
|
|
6
8
|
return targetDate.toISOString().split('T')[0];
|
|
7
9
|
}
|
|
10
|
+
function dateRangesOverlap(start1, end1, start2, end2) {
|
|
11
|
+
return start1 <= end2 && start2 <= end1;
|
|
12
|
+
}
|
|
13
|
+
function parseDateString(dateStr) {
|
|
14
|
+
var ddmmyyyyMatch = dateStr.match(/^(\d{1,2})\/(\d{1,2})\/(\d{4})$/);
|
|
15
|
+
if (ddmmyyyyMatch && ddmmyyyyMatch[1] && ddmmyyyyMatch[2] && ddmmyyyyMatch[3]) {
|
|
16
|
+
var day = ddmmyyyyMatch[1], month = ddmmyyyyMatch[2], year = ddmmyyyyMatch[3];
|
|
17
|
+
var date_1 = new Date(Date.UTC(parseInt(year), parseInt(month) - 1, parseInt(day)));
|
|
18
|
+
if (!isNaN(date_1.getTime())) {
|
|
19
|
+
return date_1;
|
|
20
|
+
}
|
|
21
|
+
}
|
|
22
|
+
var ddmmyyyyDashMatch = dateStr.match(/^(\d{1,2})-(\d{1,2})-(\d{4})$/);
|
|
23
|
+
if (ddmmyyyyDashMatch && ddmmyyyyDashMatch[1] && ddmmyyyyDashMatch[2] && ddmmyyyyDashMatch[3]) {
|
|
24
|
+
var day = ddmmyyyyDashMatch[1], month = ddmmyyyyDashMatch[2], year = ddmmyyyyDashMatch[3];
|
|
25
|
+
var date_2 = new Date(Date.UTC(parseInt(year), parseInt(month) - 1, parseInt(day)));
|
|
26
|
+
if (!isNaN(date_2.getTime())) {
|
|
27
|
+
return date_2;
|
|
28
|
+
}
|
|
29
|
+
}
|
|
30
|
+
var date = new Date(dateStr);
|
|
31
|
+
if (!isNaN(date.getTime())) {
|
|
32
|
+
return date;
|
|
33
|
+
}
|
|
34
|
+
return new Date('invalid');
|
|
35
|
+
}
|
|
8
36
|
//# sourceMappingURL=date.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"date.js","sourceRoot":"","sources":["../../../src/utils/date.ts"],"names":[],"mappings":";;AASA,gDAGC;
|
|
1
|
+
{"version":3,"file":"date.js","sourceRoot":"","sources":["../../../src/utils/date.ts"],"names":[],"mappings":";;AASA,gDAGC;AA0BD,8CAOC;AAYD,0CA6BC;AA7ED,SAAgB,kBAAkB,CAAC,IAAW;IAC5C,IAAM,UAAU,GAAG,IAAI,IAAI,IAAI,IAAI,EAAE,CAAC;IACtC,OAAO,UAAU,CAAC,WAAW,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;AAChD,CAAC;AA0BD,SAAgB,iBAAiB,CAC/B,MAAY,EACZ,IAAU,EACV,MAAY,EACZ,IAAU;IAEV,OAAO,MAAM,IAAI,IAAI,IAAI,MAAM,IAAI,IAAI,CAAC;AAC1C,CAAC;AAYD,SAAgB,eAAe,CAAC,OAAe;IAE7C,IAAM,aAAa,GAAG,OAAO,CAAC,KAAK,CAAC,iCAAiC,CAAC,CAAC;IACvE,IAAI,aAAa,IAAI,aAAa,CAAC,CAAC,CAAC,IAAI,aAAa,CAAC,CAAC,CAAC,IAAI,aAAa,CAAC,CAAC,CAAC,EAAE,CAAC;QACrE,IAAA,GAAG,GAAiB,aAAa,GAA9B,EAAE,KAAK,GAAU,aAAa,GAAvB,EAAE,IAAI,GAAI,aAAa,GAAjB,CAAkB;QAC3C,IAAM,MAAI,GAAG,IAAI,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,QAAQ,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;QACpF,IAAI,CAAC,KAAK,CAAC,MAAI,CAAC,OAAO,EAAE,CAAC,EAAE,CAAC;YAC3B,OAAO,MAAI,CAAC;QACd,CAAC;IACH,CAAC;IAGD,IAAM,iBAAiB,GAAG,OAAO,CAAC,KAAK,CAAC,+BAA+B,CAAC,CAAC;IACzE,IAAI,iBAAiB,IAAI,iBAAiB,CAAC,CAAC,CAAC,IAAI,iBAAiB,CAAC,CAAC,CAAC,IAAI,iBAAiB,CAAC,CAAC,CAAC,EAAE,CAAC;QACrF,IAAA,GAAG,GAAiB,iBAAiB,GAAlC,EAAE,KAAK,GAAU,iBAAiB,GAA3B,EAAE,IAAI,GAAI,iBAAiB,GAArB,CAAsB;QAC/C,IAAM,MAAI,GAAG,IAAI,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,QAAQ,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;QACpF,IAAI,CAAC,KAAK,CAAC,MAAI,CAAC,OAAO,EAAE,CAAC,EAAE,CAAC;YAC3B,OAAO,MAAI,CAAC;QACd,CAAC;IACH,CAAC;IAGD,IAAM,IAAI,GAAG,IAAI,IAAI,CAAC,OAAO,CAAC,CAAC;IAC/B,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC,EAAE,CAAC;QAC3B,OAAO,IAAI,CAAC;IACd,CAAC;IAGD,OAAO,IAAI,IAAI,CAAC,SAAS,CAAC,CAAC;AAC7B,CAAC"}
|
package/dist/esm/utils/date.js
CHANGED
|
@@ -2,4 +2,30 @@ export function formatDateToString(date) {
|
|
|
2
2
|
const targetDate = date || new Date();
|
|
3
3
|
return targetDate.toISOString().split('T')[0];
|
|
4
4
|
}
|
|
5
|
+
export function dateRangesOverlap(start1, end1, start2, end2) {
|
|
6
|
+
return start1 <= end2 && start2 <= end1;
|
|
7
|
+
}
|
|
8
|
+
export function parseDateString(dateStr) {
|
|
9
|
+
const ddmmyyyyMatch = dateStr.match(/^(\d{1,2})\/(\d{1,2})\/(\d{4})$/);
|
|
10
|
+
if (ddmmyyyyMatch && ddmmyyyyMatch[1] && ddmmyyyyMatch[2] && ddmmyyyyMatch[3]) {
|
|
11
|
+
const [, day, month, year] = ddmmyyyyMatch;
|
|
12
|
+
const date = new Date(Date.UTC(parseInt(year), parseInt(month) - 1, parseInt(day)));
|
|
13
|
+
if (!isNaN(date.getTime())) {
|
|
14
|
+
return date;
|
|
15
|
+
}
|
|
16
|
+
}
|
|
17
|
+
const ddmmyyyyDashMatch = dateStr.match(/^(\d{1,2})-(\d{1,2})-(\d{4})$/);
|
|
18
|
+
if (ddmmyyyyDashMatch && ddmmyyyyDashMatch[1] && ddmmyyyyDashMatch[2] && ddmmyyyyDashMatch[3]) {
|
|
19
|
+
const [, day, month, year] = ddmmyyyyDashMatch;
|
|
20
|
+
const date = new Date(Date.UTC(parseInt(year), parseInt(month) - 1, parseInt(day)));
|
|
21
|
+
if (!isNaN(date.getTime())) {
|
|
22
|
+
return date;
|
|
23
|
+
}
|
|
24
|
+
}
|
|
25
|
+
const date = new Date(dateStr);
|
|
26
|
+
if (!isNaN(date.getTime())) {
|
|
27
|
+
return date;
|
|
28
|
+
}
|
|
29
|
+
return new Date('invalid');
|
|
30
|
+
}
|
|
5
31
|
//# sourceMappingURL=date.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"date.js","sourceRoot":"","sources":["../../../src/utils/date.ts"],"names":[],"mappings":"AASA,MAAM,UAAU,kBAAkB,CAAC,IAAW;IAC5C,MAAM,UAAU,GAAG,IAAI,IAAI,IAAI,IAAI,EAAE,CAAC;IACtC,OAAO,UAAU,CAAC,WAAW,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;AAChD,CAAC"}
|
|
1
|
+
{"version":3,"file":"date.js","sourceRoot":"","sources":["../../../src/utils/date.ts"],"names":[],"mappings":"AASA,MAAM,UAAU,kBAAkB,CAAC,IAAW;IAC5C,MAAM,UAAU,GAAG,IAAI,IAAI,IAAI,IAAI,EAAE,CAAC;IACtC,OAAO,UAAU,CAAC,WAAW,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;AAChD,CAAC;AA0BD,MAAM,UAAU,iBAAiB,CAC/B,MAAY,EACZ,IAAU,EACV,MAAY,EACZ,IAAU;IAEV,OAAO,MAAM,IAAI,IAAI,IAAI,MAAM,IAAI,IAAI,CAAC;AAC1C,CAAC;AAYD,MAAM,UAAU,eAAe,CAAC,OAAe;IAE7C,MAAM,aAAa,GAAG,OAAO,CAAC,KAAK,CAAC,iCAAiC,CAAC,CAAC;IACvE,IAAI,aAAa,IAAI,aAAa,CAAC,CAAC,CAAC,IAAI,aAAa,CAAC,CAAC,CAAC,IAAI,aAAa,CAAC,CAAC,CAAC,EAAE,CAAC;QAC9E,MAAM,CAAC,EAAE,GAAG,EAAE,KAAK,EAAE,IAAI,CAAC,GAAG,aAAa,CAAC;QAC3C,MAAM,IAAI,GAAG,IAAI,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,QAAQ,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;QACpF,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC,EAAE,CAAC;YAC3B,OAAO,IAAI,CAAC;QACd,CAAC;IACH,CAAC;IAGD,MAAM,iBAAiB,GAAG,OAAO,CAAC,KAAK,CAAC,+BAA+B,CAAC,CAAC;IACzE,IAAI,iBAAiB,IAAI,iBAAiB,CAAC,CAAC,CAAC,IAAI,iBAAiB,CAAC,CAAC,CAAC,IAAI,iBAAiB,CAAC,CAAC,CAAC,EAAE,CAAC;QAC9F,MAAM,CAAC,EAAE,GAAG,EAAE,KAAK,EAAE,IAAI,CAAC,GAAG,iBAAiB,CAAC;QAC/C,MAAM,IAAI,GAAG,IAAI,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,QAAQ,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;QACpF,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC,EAAE,CAAC;YAC3B,OAAO,IAAI,CAAC;QACd,CAAC;IACH,CAAC;IAGD,MAAM,IAAI,GAAG,IAAI,IAAI,CAAC,OAAO,CAAC,CAAC;IAC/B,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC,EAAE,CAAC;QAC3B,OAAO,IAAI,CAAC;IACd,CAAC;IAGD,OAAO,IAAI,IAAI,CAAC,SAAS,CAAC,CAAC;AAC7B,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"date.d.ts","sourceRoot":"","sources":["../../../src/utils/date.ts"],"names":[],"mappings":"AASA,wBAAgB,kBAAkB,CAAC,IAAI,CAAC,EAAE,IAAI,GAAG,MAAM,CAGtD"}
|
|
1
|
+
{"version":3,"file":"date.d.ts","sourceRoot":"","sources":["../../../src/utils/date.ts"],"names":[],"mappings":"AASA,wBAAgB,kBAAkB,CAAC,IAAI,CAAC,EAAE,IAAI,GAAG,MAAM,CAGtD;AA0BD,wBAAgB,iBAAiB,CAC/B,MAAM,EAAE,IAAI,EACZ,IAAI,EAAE,IAAI,EACV,MAAM,EAAE,IAAI,EACZ,IAAI,EAAE,IAAI,GACT,OAAO,CAET;AAYD,wBAAgB,eAAe,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI,CA6BrD"}
|
package/package.json
CHANGED
package/src/utils/date.ts
CHANGED
|
@@ -11,3 +11,77 @@ export function formatDateToString(date?: Date): string {
|
|
|
11
11
|
const targetDate = date || new Date();
|
|
12
12
|
return targetDate.toISOString().split('T')[0];
|
|
13
13
|
}
|
|
14
|
+
|
|
15
|
+
/**
|
|
16
|
+
* Checks if two date ranges overlap
|
|
17
|
+
* @param start1 Start date of the first range
|
|
18
|
+
* @param end1 End date of the first range
|
|
19
|
+
* @param start2 Start date of the second range
|
|
20
|
+
* @param end2 End date of the second range
|
|
21
|
+
* @returns True if the date ranges overlap, false otherwise
|
|
22
|
+
* @example
|
|
23
|
+
* // Overlapping ranges
|
|
24
|
+
* dateRangesOverlap(
|
|
25
|
+
* new Date('2024-01-01'),
|
|
26
|
+
* new Date('2024-01-15'),
|
|
27
|
+
* new Date('2024-01-10'),
|
|
28
|
+
* new Date('2024-01-20')
|
|
29
|
+
* ) // returns true
|
|
30
|
+
*
|
|
31
|
+
* // Non-overlapping ranges
|
|
32
|
+
* dateRangesOverlap(
|
|
33
|
+
* new Date('2024-01-01'),
|
|
34
|
+
* new Date('2024-01-15'),
|
|
35
|
+
* new Date('2024-01-20'),
|
|
36
|
+
* new Date('2024-01-30')
|
|
37
|
+
* ) // returns false
|
|
38
|
+
*/
|
|
39
|
+
export function dateRangesOverlap(
|
|
40
|
+
start1: Date,
|
|
41
|
+
end1: Date,
|
|
42
|
+
start2: Date,
|
|
43
|
+
end2: Date,
|
|
44
|
+
): boolean {
|
|
45
|
+
return start1 <= end2 && start2 <= end1;
|
|
46
|
+
}
|
|
47
|
+
|
|
48
|
+
/**
|
|
49
|
+
* Parses a date string supporting multiple formats including dd/MM/yyyy and MM/dd/yyyy
|
|
50
|
+
* @param dateStr The date string to parse
|
|
51
|
+
* @returns A Date object, or invalid Date if parsing fails
|
|
52
|
+
* @example
|
|
53
|
+
* parseDateString('20/06/2025') // returns Date for June 20, 2025
|
|
54
|
+
* parseDateString('06/20/2025') // returns Date for June 20, 2025
|
|
55
|
+
* parseDateString('2025-06-20') // returns Date for June 20, 2025
|
|
56
|
+
* parseDateString('invalid') // returns new Date('invalid')
|
|
57
|
+
*/
|
|
58
|
+
export function parseDateString(dateStr: string): Date {
|
|
59
|
+
// Try dd/MM/yyyy format first (prioritize European format for CSV imports)
|
|
60
|
+
const ddmmyyyyMatch = dateStr.match(/^(\d{1,2})\/(\d{1,2})\/(\d{4})$/);
|
|
61
|
+
if (ddmmyyyyMatch && ddmmyyyyMatch[1] && ddmmyyyyMatch[2] && ddmmyyyyMatch[3]) {
|
|
62
|
+
const [, day, month, year] = ddmmyyyyMatch;
|
|
63
|
+
const date = new Date(Date.UTC(parseInt(year), parseInt(month) - 1, parseInt(day)));
|
|
64
|
+
if (!isNaN(date.getTime())) {
|
|
65
|
+
return date;
|
|
66
|
+
}
|
|
67
|
+
}
|
|
68
|
+
|
|
69
|
+
// Try dd-MM-yyyy format
|
|
70
|
+
const ddmmyyyyDashMatch = dateStr.match(/^(\d{1,2})-(\d{1,2})-(\d{4})$/);
|
|
71
|
+
if (ddmmyyyyDashMatch && ddmmyyyyDashMatch[1] && ddmmyyyyDashMatch[2] && ddmmyyyyDashMatch[3]) {
|
|
72
|
+
const [, day, month, year] = ddmmyyyyDashMatch;
|
|
73
|
+
const date = new Date(Date.UTC(parseInt(year), parseInt(month) - 1, parseInt(day)));
|
|
74
|
+
if (!isNaN(date.getTime())) {
|
|
75
|
+
return date;
|
|
76
|
+
}
|
|
77
|
+
}
|
|
78
|
+
|
|
79
|
+
// Finally try standard Date constructor (handles ISO format and MM/dd/yyyy)
|
|
80
|
+
const date = new Date(dateStr);
|
|
81
|
+
if (!isNaN(date.getTime())) {
|
|
82
|
+
return date;
|
|
83
|
+
}
|
|
84
|
+
|
|
85
|
+
// Return invalid date if no format matches
|
|
86
|
+
return new Date('invalid');
|
|
87
|
+
}
|