@usertour/helpers 0.0.35 → 0.0.37
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/__tests__/condition.test.cjs +1007 -29
- package/dist/__tests__/condition.test.js +900 -3
- package/dist/__tests__/time.test.cjs +482 -42
- package/dist/__tests__/time.test.js +349 -28
- package/dist/{chunk-NVSDWUJP.js → chunk-E3B3AWMJ.js} +3 -3
- package/dist/chunk-JQWKLXW6.js +147 -0
- package/dist/{chunk-G5P7KULU.js → chunk-QWYOGIRR.js} +20 -1
- package/dist/conditions/condition.cjs +109 -28
- package/dist/conditions/condition.js +2 -2
- package/dist/conditions/index.cjs +151 -27
- package/dist/conditions/index.d.cts +1 -1
- package/dist/conditions/index.d.ts +1 -1
- package/dist/conditions/index.js +12 -4
- package/dist/conditions/time.cjs +150 -18
- package/dist/conditions/time.d.cts +29 -2
- package/dist/conditions/time.d.ts +29 -2
- package/dist/conditions/time.js +12 -3
- package/dist/convert-settings.js +2 -2
- package/dist/error.cjs +34 -1
- package/dist/error.js +3 -1
- package/dist/index.cjs +162 -31
- package/dist/index.d.cts +1 -1
- package/dist/index.d.ts +1 -1
- package/dist/index.js +32 -24
- package/package.json +2 -2
- package/dist/chunk-CEK3SCQO.js +0 -31
- package/dist/{chunk-USHOKNHQ.js → chunk-F7ZHCELE.js} +3 -3
|
@@ -1,10 +1,37 @@
|
|
|
1
|
-
import { RulesCondition } from '@usertour/types';
|
|
1
|
+
import { TimeConditionDataV2, TimeConditionDataLegacy, TimeConditionData, RulesCondition } from '@usertour/types';
|
|
2
2
|
|
|
3
|
+
/**
|
|
4
|
+
* Type guard to check if data is in new format (TimeConditionDataV2)
|
|
5
|
+
* @param data - The data to check
|
|
6
|
+
* @returns true if data has startTime or endTime fields
|
|
7
|
+
*/
|
|
8
|
+
declare function isTimeConditionDataV2(data: any): data is TimeConditionDataV2;
|
|
9
|
+
/**
|
|
10
|
+
* Type guard to check if data is in legacy format (TimeConditionDataLegacy)
|
|
11
|
+
* @param data - The data to check
|
|
12
|
+
* @returns true if data has startDate or startDateHour fields
|
|
13
|
+
*/
|
|
14
|
+
declare function isTimeConditionDataLegacy(data: any): data is TimeConditionDataLegacy;
|
|
15
|
+
/**
|
|
16
|
+
* Convert legacy format to new format (ISO 8601)
|
|
17
|
+
* @param legacyData - Legacy time condition data
|
|
18
|
+
* @returns New format time condition data, or null if conversion fails
|
|
19
|
+
*/
|
|
20
|
+
declare function convertTimeConditionLegacyToV2(legacyData: TimeConditionDataLegacy): TimeConditionDataV2 | null;
|
|
21
|
+
/**
|
|
22
|
+
* Normalize time condition data to new format
|
|
23
|
+
* If data is already in new format, returns it as-is
|
|
24
|
+
* If data is in legacy format, converts it to new format
|
|
25
|
+
* @param data - Time condition data (either format)
|
|
26
|
+
* @returns New format time condition data, or null if conversion fails
|
|
27
|
+
*/
|
|
28
|
+
declare function normalizeTimeConditionData(data: TimeConditionData | null | undefined): TimeConditionDataV2 | null;
|
|
3
29
|
/**
|
|
4
30
|
* Evaluate time condition based on start and end time rules
|
|
31
|
+
* Supports both new ISO 8601 format and legacy format for backward compatibility
|
|
5
32
|
* @param rules - Time condition rules
|
|
6
33
|
* @returns boolean indicating if current time matches the condition
|
|
7
34
|
*/
|
|
8
35
|
declare const evaluateTimeCondition: (rules: RulesCondition) => boolean;
|
|
9
36
|
|
|
10
|
-
export { evaluateTimeCondition };
|
|
37
|
+
export { convertTimeConditionLegacyToV2, evaluateTimeCondition, isTimeConditionDataLegacy, isTimeConditionDataV2, normalizeTimeConditionData };
|
|
@@ -1,10 +1,37 @@
|
|
|
1
|
-
import { RulesCondition } from '@usertour/types';
|
|
1
|
+
import { TimeConditionDataV2, TimeConditionDataLegacy, TimeConditionData, RulesCondition } from '@usertour/types';
|
|
2
2
|
|
|
3
|
+
/**
|
|
4
|
+
* Type guard to check if data is in new format (TimeConditionDataV2)
|
|
5
|
+
* @param data - The data to check
|
|
6
|
+
* @returns true if data has startTime or endTime fields
|
|
7
|
+
*/
|
|
8
|
+
declare function isTimeConditionDataV2(data: any): data is TimeConditionDataV2;
|
|
9
|
+
/**
|
|
10
|
+
* Type guard to check if data is in legacy format (TimeConditionDataLegacy)
|
|
11
|
+
* @param data - The data to check
|
|
12
|
+
* @returns true if data has startDate or startDateHour fields
|
|
13
|
+
*/
|
|
14
|
+
declare function isTimeConditionDataLegacy(data: any): data is TimeConditionDataLegacy;
|
|
15
|
+
/**
|
|
16
|
+
* Convert legacy format to new format (ISO 8601)
|
|
17
|
+
* @param legacyData - Legacy time condition data
|
|
18
|
+
* @returns New format time condition data, or null if conversion fails
|
|
19
|
+
*/
|
|
20
|
+
declare function convertTimeConditionLegacyToV2(legacyData: TimeConditionDataLegacy): TimeConditionDataV2 | null;
|
|
21
|
+
/**
|
|
22
|
+
* Normalize time condition data to new format
|
|
23
|
+
* If data is already in new format, returns it as-is
|
|
24
|
+
* If data is in legacy format, converts it to new format
|
|
25
|
+
* @param data - Time condition data (either format)
|
|
26
|
+
* @returns New format time condition data, or null if conversion fails
|
|
27
|
+
*/
|
|
28
|
+
declare function normalizeTimeConditionData(data: TimeConditionData | null | undefined): TimeConditionDataV2 | null;
|
|
3
29
|
/**
|
|
4
30
|
* Evaluate time condition based on start and end time rules
|
|
31
|
+
* Supports both new ISO 8601 format and legacy format for backward compatibility
|
|
5
32
|
* @param rules - Time condition rules
|
|
6
33
|
* @returns boolean indicating if current time matches the condition
|
|
7
34
|
*/
|
|
8
35
|
declare const evaluateTimeCondition: (rules: RulesCondition) => boolean;
|
|
9
36
|
|
|
10
|
-
export { evaluateTimeCondition };
|
|
37
|
+
export { convertTimeConditionLegacyToV2, evaluateTimeCondition, isTimeConditionDataLegacy, isTimeConditionDataV2, normalizeTimeConditionData };
|
package/dist/conditions/time.js
CHANGED
|
@@ -1,7 +1,16 @@
|
|
|
1
1
|
import {
|
|
2
|
-
|
|
3
|
-
|
|
2
|
+
convertTimeConditionLegacyToV2,
|
|
3
|
+
evaluateTimeCondition,
|
|
4
|
+
isTimeConditionDataLegacy,
|
|
5
|
+
isTimeConditionDataV2,
|
|
6
|
+
normalizeTimeConditionData
|
|
7
|
+
} from "../chunk-JQWKLXW6.js";
|
|
8
|
+
import "../chunk-GFH3VWOC.js";
|
|
4
9
|
import "../chunk-XEO3YXBM.js";
|
|
5
10
|
export {
|
|
6
|
-
|
|
11
|
+
convertTimeConditionLegacyToV2,
|
|
12
|
+
evaluateTimeCondition,
|
|
13
|
+
isTimeConditionDataLegacy,
|
|
14
|
+
isTimeConditionDataV2,
|
|
15
|
+
normalizeTimeConditionData
|
|
7
16
|
};
|
package/dist/convert-settings.js
CHANGED
|
@@ -2,9 +2,9 @@ import {
|
|
|
2
2
|
convertSettings,
|
|
3
3
|
convertToCssVars,
|
|
4
4
|
mergeThemeDefaultSettings
|
|
5
|
-
} from "./chunk-
|
|
6
|
-
import "./chunk-GFH3VWOC.js";
|
|
5
|
+
} from "./chunk-F7ZHCELE.js";
|
|
7
6
|
import "./chunk-VT24VOAZ.js";
|
|
7
|
+
import "./chunk-GFH3VWOC.js";
|
|
8
8
|
import "./chunk-XEO3YXBM.js";
|
|
9
9
|
export {
|
|
10
10
|
convertSettings,
|
package/dist/error.cjs
CHANGED
|
@@ -39,6 +39,25 @@ __export(error_exports, {
|
|
|
39
39
|
});
|
|
40
40
|
module.exports = __toCommonJS(error_exports);
|
|
41
41
|
var import_types = require("@usertour/types");
|
|
42
|
+
|
|
43
|
+
// src/conditions/time.ts
|
|
44
|
+
var import_date_fns = require("date-fns");
|
|
45
|
+
|
|
46
|
+
// src/type-utils.ts
|
|
47
|
+
var nativeIsArray = Array.isArray;
|
|
48
|
+
var ObjProto = Object.prototype;
|
|
49
|
+
var objToString = ObjProto.toString;
|
|
50
|
+
var objHasOwn = ObjProto.hasOwnProperty;
|
|
51
|
+
|
|
52
|
+
// src/conditions/time.ts
|
|
53
|
+
function isTimeConditionDataV2(data) {
|
|
54
|
+
return data && ("startTime" in data || "endTime" in data);
|
|
55
|
+
}
|
|
56
|
+
function isTimeConditionDataLegacy(data) {
|
|
57
|
+
return data && ("startDate" in data || "startDateHour" in data);
|
|
58
|
+
}
|
|
59
|
+
|
|
60
|
+
// src/error.ts
|
|
42
61
|
var isValidSelector = (selector) => {
|
|
43
62
|
if (!selector) {
|
|
44
63
|
return false;
|
|
@@ -89,7 +108,21 @@ var getUrlPatternError = (data) => {
|
|
|
89
108
|
};
|
|
90
109
|
var getCurrentTimeError = (data) => {
|
|
91
110
|
const ret = { showError: false, errorInfo: "" };
|
|
92
|
-
if (
|
|
111
|
+
if (isTimeConditionDataV2(data)) {
|
|
112
|
+
if (!data.startTime && !data.endTime) {
|
|
113
|
+
ret.showError = true;
|
|
114
|
+
ret.errorInfo = "Either start or end time be filled in";
|
|
115
|
+
}
|
|
116
|
+
return ret;
|
|
117
|
+
}
|
|
118
|
+
if (isTimeConditionDataLegacy(data)) {
|
|
119
|
+
if (!data.startDate && !data.endDate) {
|
|
120
|
+
ret.showError = true;
|
|
121
|
+
ret.errorInfo = "Either start or end time be filled in";
|
|
122
|
+
}
|
|
123
|
+
return ret;
|
|
124
|
+
}
|
|
125
|
+
if (!data || typeof data === "object" && Object.keys(data).length === 0) {
|
|
93
126
|
ret.showError = true;
|
|
94
127
|
ret.errorInfo = "Either start or end time be filled in";
|
|
95
128
|
}
|
package/dist/error.js
CHANGED
package/dist/index.cjs
CHANGED
|
@@ -47,6 +47,7 @@ __export(src_exports, {
|
|
|
47
47
|
cn: () => cn,
|
|
48
48
|
conditionsIsSame: () => conditionsIsSame,
|
|
49
49
|
convertSettings: () => convertSettings,
|
|
50
|
+
convertTimeConditionLegacyToV2: () => convertTimeConditionLegacyToV2,
|
|
50
51
|
convertToCssVars: () => convertToCssVars,
|
|
51
52
|
cuid: () => cuid,
|
|
52
53
|
deepClone: () => deepClone,
|
|
@@ -105,6 +106,8 @@ __export(src_exports, {
|
|
|
105
106
|
isPublishedAtLeastOneEnvironment: () => isPublishedAtLeastOneEnvironment,
|
|
106
107
|
isPublishedInAllEnvironments: () => isPublishedInAllEnvironments,
|
|
107
108
|
isString: () => isString,
|
|
109
|
+
isTimeConditionDataLegacy: () => isTimeConditionDataLegacy,
|
|
110
|
+
isTimeConditionDataV2: () => isTimeConditionDataV2,
|
|
108
111
|
isUint8Array: () => isUint8Array,
|
|
109
112
|
isUndefined: () => isUndefined,
|
|
110
113
|
isUrl: () => isUrl,
|
|
@@ -114,6 +117,7 @@ __export(src_exports, {
|
|
|
114
117
|
nativeForEach: () => nativeForEach,
|
|
115
118
|
nativeIndexOf: () => nativeIndexOf,
|
|
116
119
|
navigator: () => navigator,
|
|
120
|
+
normalizeTimeConditionData: () => normalizeTimeConditionData,
|
|
117
121
|
parseUrlParams: () => parseUrlParams,
|
|
118
122
|
regenerateConditionIds: () => regenerateConditionIds,
|
|
119
123
|
removeAuthToken: () => removeAuthToken,
|
|
@@ -457,6 +461,143 @@ var convertToCssVars = (settings, type = "tooltip") => {
|
|
|
457
461
|
|
|
458
462
|
// src/error.ts
|
|
459
463
|
var import_types2 = require("@usertour/types");
|
|
464
|
+
|
|
465
|
+
// src/conditions/time.ts
|
|
466
|
+
var import_date_fns = require("date-fns");
|
|
467
|
+
function isEmpty(value) {
|
|
468
|
+
return isNullish(value) || isEmptyString(value);
|
|
469
|
+
}
|
|
470
|
+
function hasRequiredFields(data, type) {
|
|
471
|
+
if (type === "start") {
|
|
472
|
+
return !isEmpty(data.startDate) && !isEmpty(data.startDateHour) && !isEmpty(data.startDateMinute);
|
|
473
|
+
}
|
|
474
|
+
return !isEmpty(data.endDate) && !isEmpty(data.endDateHour) && !isEmpty(data.endDateMinute);
|
|
475
|
+
}
|
|
476
|
+
function parseLegacyDate(dateStr) {
|
|
477
|
+
const [month, day, year] = dateStr.split("/");
|
|
478
|
+
if (!month || !day || !year) {
|
|
479
|
+
return null;
|
|
480
|
+
}
|
|
481
|
+
return {
|
|
482
|
+
month: Number.parseInt(month),
|
|
483
|
+
day: Number.parseInt(day),
|
|
484
|
+
year: Number.parseInt(year)
|
|
485
|
+
};
|
|
486
|
+
}
|
|
487
|
+
function createLegacyDateTime(data, type) {
|
|
488
|
+
const dateStr = type === "start" ? data.startDate : data.endDate;
|
|
489
|
+
const hourStr = type === "start" ? data.startDateHour : data.endDateHour;
|
|
490
|
+
const minuteStr = type === "start" ? data.startDateMinute : data.endDateMinute;
|
|
491
|
+
if (!dateStr || !hourStr || !minuteStr) {
|
|
492
|
+
return null;
|
|
493
|
+
}
|
|
494
|
+
const dateParts = parseLegacyDate(dateStr);
|
|
495
|
+
if (!dateParts) {
|
|
496
|
+
return null;
|
|
497
|
+
}
|
|
498
|
+
const dateTime = new Date(
|
|
499
|
+
dateParts.year,
|
|
500
|
+
dateParts.month - 1,
|
|
501
|
+
dateParts.day,
|
|
502
|
+
Number.parseInt(hourStr),
|
|
503
|
+
Number.parseInt(minuteStr),
|
|
504
|
+
0
|
|
505
|
+
);
|
|
506
|
+
return (0, import_date_fns.isValid)(dateTime) ? dateTime : null;
|
|
507
|
+
}
|
|
508
|
+
function isTimeConditionDataV2(data) {
|
|
509
|
+
return data && ("startTime" in data || "endTime" in data);
|
|
510
|
+
}
|
|
511
|
+
function isTimeConditionDataLegacy(data) {
|
|
512
|
+
return data && ("startDate" in data || "startDateHour" in data);
|
|
513
|
+
}
|
|
514
|
+
function convertTimeConditionLegacyToV2(legacyData) {
|
|
515
|
+
try {
|
|
516
|
+
if (!hasRequiredFields(legacyData, "start")) {
|
|
517
|
+
return null;
|
|
518
|
+
}
|
|
519
|
+
const startDateTime = createLegacyDateTime(legacyData, "start");
|
|
520
|
+
if (!startDateTime) {
|
|
521
|
+
return null;
|
|
522
|
+
}
|
|
523
|
+
const result = {
|
|
524
|
+
startTime: startDateTime.toISOString()
|
|
525
|
+
};
|
|
526
|
+
if (hasRequiredFields(legacyData, "end")) {
|
|
527
|
+
const endDateTime = createLegacyDateTime(legacyData, "end");
|
|
528
|
+
if (endDateTime) {
|
|
529
|
+
result.endTime = endDateTime.toISOString();
|
|
530
|
+
}
|
|
531
|
+
}
|
|
532
|
+
return result;
|
|
533
|
+
} catch {
|
|
534
|
+
return null;
|
|
535
|
+
}
|
|
536
|
+
}
|
|
537
|
+
function normalizeTimeConditionData(data) {
|
|
538
|
+
if (!data) {
|
|
539
|
+
return null;
|
|
540
|
+
}
|
|
541
|
+
if (isTimeConditionDataV2(data)) {
|
|
542
|
+
return data;
|
|
543
|
+
}
|
|
544
|
+
if (isTimeConditionDataLegacy(data)) {
|
|
545
|
+
return convertTimeConditionLegacyToV2(data);
|
|
546
|
+
}
|
|
547
|
+
return null;
|
|
548
|
+
}
|
|
549
|
+
function evaluateTimeConditionV2(data) {
|
|
550
|
+
if (!data.startTime) {
|
|
551
|
+
return false;
|
|
552
|
+
}
|
|
553
|
+
const startTime = (0, import_date_fns.parseISO)(data.startTime);
|
|
554
|
+
if (!(0, import_date_fns.isValid)(startTime)) {
|
|
555
|
+
return false;
|
|
556
|
+
}
|
|
557
|
+
const now = /* @__PURE__ */ new Date();
|
|
558
|
+
if (!data.endTime) {
|
|
559
|
+
return (0, import_date_fns.isAfter)(now, startTime);
|
|
560
|
+
}
|
|
561
|
+
const endTime = (0, import_date_fns.parseISO)(data.endTime);
|
|
562
|
+
if (!(0, import_date_fns.isValid)(endTime)) {
|
|
563
|
+
return false;
|
|
564
|
+
}
|
|
565
|
+
return (0, import_date_fns.isAfter)(now, startTime) && (0, import_date_fns.isBefore)(now, endTime);
|
|
566
|
+
}
|
|
567
|
+
function evaluateTimeConditionLegacy(data) {
|
|
568
|
+
if (!hasRequiredFields(data, "start")) {
|
|
569
|
+
return false;
|
|
570
|
+
}
|
|
571
|
+
const startDateTime = createLegacyDateTime(data, "start");
|
|
572
|
+
if (!startDateTime) {
|
|
573
|
+
return false;
|
|
574
|
+
}
|
|
575
|
+
const now = /* @__PURE__ */ new Date();
|
|
576
|
+
if (!hasRequiredFields(data, "end")) {
|
|
577
|
+
return (0, import_date_fns.isAfter)(now, startDateTime);
|
|
578
|
+
}
|
|
579
|
+
const endDateTime = createLegacyDateTime(data, "end");
|
|
580
|
+
if (!endDateTime) {
|
|
581
|
+
return false;
|
|
582
|
+
}
|
|
583
|
+
return (0, import_date_fns.isAfter)(now, startDateTime) && (0, import_date_fns.isBefore)(now, endDateTime);
|
|
584
|
+
}
|
|
585
|
+
var evaluateTimeCondition = (rules) => {
|
|
586
|
+
try {
|
|
587
|
+
const data = rules.data || {};
|
|
588
|
+
if (isTimeConditionDataV2(data)) {
|
|
589
|
+
return evaluateTimeConditionV2(data);
|
|
590
|
+
}
|
|
591
|
+
if (isTimeConditionDataLegacy(data)) {
|
|
592
|
+
return evaluateTimeConditionLegacy(data);
|
|
593
|
+
}
|
|
594
|
+
return false;
|
|
595
|
+
} catch {
|
|
596
|
+
return false;
|
|
597
|
+
}
|
|
598
|
+
};
|
|
599
|
+
|
|
600
|
+
// src/error.ts
|
|
460
601
|
var isValidSelector = (selector) => {
|
|
461
602
|
if (!selector) {
|
|
462
603
|
return false;
|
|
@@ -507,7 +648,21 @@ var getUrlPatternError = (data) => {
|
|
|
507
648
|
};
|
|
508
649
|
var getCurrentTimeError = (data) => {
|
|
509
650
|
const ret = { showError: false, errorInfo: "" };
|
|
510
|
-
if (
|
|
651
|
+
if (isTimeConditionDataV2(data)) {
|
|
652
|
+
if (!data.startTime && !data.endTime) {
|
|
653
|
+
ret.showError = true;
|
|
654
|
+
ret.errorInfo = "Either start or end time be filled in";
|
|
655
|
+
}
|
|
656
|
+
return ret;
|
|
657
|
+
}
|
|
658
|
+
if (isTimeConditionDataLegacy(data)) {
|
|
659
|
+
if (!data.startDate && !data.endDate) {
|
|
660
|
+
ret.showError = true;
|
|
661
|
+
ret.errorInfo = "Either start or end time be filled in";
|
|
662
|
+
}
|
|
663
|
+
return ret;
|
|
664
|
+
}
|
|
665
|
+
if (!data || typeof data === "object" && Object.keys(data).length === 0) {
|
|
511
666
|
ret.showError = true;
|
|
512
667
|
ret.errorInfo = "Either start or end time be filled in";
|
|
513
668
|
}
|
|
@@ -1101,34 +1256,6 @@ var evaluateUrlCondition = (rules, url) => {
|
|
|
1101
1256
|
return isMatchUrlPattern(url, includes, excludes);
|
|
1102
1257
|
};
|
|
1103
1258
|
|
|
1104
|
-
// src/conditions/time.ts
|
|
1105
|
-
var import_date_fns = require("date-fns");
|
|
1106
|
-
var evaluateTimeCondition = (rules) => {
|
|
1107
|
-
try {
|
|
1108
|
-
const { endDate, endDateHour, endDateMinute, startDate, startDateHour, startDateMinute } = rules.data || {};
|
|
1109
|
-
if (!startDate || !startDateHour || !startDateMinute) {
|
|
1110
|
-
return false;
|
|
1111
|
-
}
|
|
1112
|
-
const startTimeString = `${startDate}T${startDateHour.padStart(2, "0")}:${startDateMinute.padStart(2, "0")}:00`;
|
|
1113
|
-
const startTime = (0, import_date_fns.parseISO)(startTimeString);
|
|
1114
|
-
if (!(0, import_date_fns.isValid)(startTime)) {
|
|
1115
|
-
return false;
|
|
1116
|
-
}
|
|
1117
|
-
const now = /* @__PURE__ */ new Date();
|
|
1118
|
-
if (!endDate || !endDateHour || !endDateMinute) {
|
|
1119
|
-
return (0, import_date_fns.isAfter)(now, startTime);
|
|
1120
|
-
}
|
|
1121
|
-
const endTimeString = `${endDate}T${endDateHour.padStart(2, "0")}:${endDateMinute.padStart(2, "0")}:00`;
|
|
1122
|
-
const endTime = (0, import_date_fns.parseISO)(endTimeString);
|
|
1123
|
-
if (!(0, import_date_fns.isValid)(endTime)) {
|
|
1124
|
-
return false;
|
|
1125
|
-
}
|
|
1126
|
-
return (0, import_date_fns.isAfter)(now, startTime) && (0, import_date_fns.isBefore)(now, endTime);
|
|
1127
|
-
} catch {
|
|
1128
|
-
return false;
|
|
1129
|
-
}
|
|
1130
|
-
};
|
|
1131
|
-
|
|
1132
1259
|
// src/conditions/attribute.ts
|
|
1133
1260
|
var import_types4 = require("@usertour/types");
|
|
1134
1261
|
var import_date_fns2 = require("date-fns");
|
|
@@ -1189,8 +1316,8 @@ function evaluateStringCondition(logic, actualValue, expectedValue) {
|
|
|
1189
1316
|
case "endsWith":
|
|
1190
1317
|
return stringValue.endsWith(expectedValue);
|
|
1191
1318
|
case "empty": {
|
|
1192
|
-
const
|
|
1193
|
-
return
|
|
1319
|
+
const isEmpty2 = !stringValue || stringValue === "";
|
|
1320
|
+
return isEmpty2;
|
|
1194
1321
|
}
|
|
1195
1322
|
case "any":
|
|
1196
1323
|
return Boolean(stringValue && stringValue !== "");
|
|
@@ -1510,6 +1637,7 @@ var filterNullAttributes = (attributes) => {
|
|
|
1510
1637
|
cn,
|
|
1511
1638
|
conditionsIsSame,
|
|
1512
1639
|
convertSettings,
|
|
1640
|
+
convertTimeConditionLegacyToV2,
|
|
1513
1641
|
convertToCssVars,
|
|
1514
1642
|
cuid,
|
|
1515
1643
|
deepClone,
|
|
@@ -1568,6 +1696,8 @@ var filterNullAttributes = (attributes) => {
|
|
|
1568
1696
|
isPublishedAtLeastOneEnvironment,
|
|
1569
1697
|
isPublishedInAllEnvironments,
|
|
1570
1698
|
isString,
|
|
1699
|
+
isTimeConditionDataLegacy,
|
|
1700
|
+
isTimeConditionDataV2,
|
|
1571
1701
|
isUint8Array,
|
|
1572
1702
|
isUndefined,
|
|
1573
1703
|
isUrl,
|
|
@@ -1577,6 +1707,7 @@ var filterNullAttributes = (attributes) => {
|
|
|
1577
1707
|
nativeForEach,
|
|
1578
1708
|
nativeIndexOf,
|
|
1579
1709
|
navigator,
|
|
1710
|
+
normalizeTimeConditionData,
|
|
1580
1711
|
parseUrlParams,
|
|
1581
1712
|
regenerateConditionIds,
|
|
1582
1713
|
removeAuthToken,
|
package/dist/index.d.cts
CHANGED
|
@@ -11,7 +11,7 @@ export { generateAutoStateColors, hexToHSLString, hexToRGBStr } from './color.cj
|
|
|
11
11
|
export { absoluteUrl, cn, cuid, evalCode, formatDate, getRandomColor, hexToRgb, isDark, uuidV4 } from './helper.cjs';
|
|
12
12
|
export { allConditionsHaveIds, assignConditionIds, conditionsIsSame, evaluateRule, evaluateRulesConditions, filterConditionsByType, isConditionsActived, regenerateConditionIds } from './conditions/condition.cjs';
|
|
13
13
|
export { evaluateUrlCondition, isMatchUrlPattern } from './conditions/url.cjs';
|
|
14
|
-
export { evaluateTimeCondition } from './conditions/time.cjs';
|
|
14
|
+
export { convertTimeConditionLegacyToV2, evaluateTimeCondition, isTimeConditionDataLegacy, isTimeConditionDataV2, normalizeTimeConditionData } from './conditions/time.cjs';
|
|
15
15
|
export { evaluateAttributeCondition } from './conditions/attribute.cjs';
|
|
16
16
|
export { capitalizeFirstLetter, filterNullAttributes, getAttributeType } from './attribute.cjs';
|
|
17
17
|
export { default as isEqual } from 'fast-deep-equal';
|
package/dist/index.d.ts
CHANGED
|
@@ -11,7 +11,7 @@ export { generateAutoStateColors, hexToHSLString, hexToRGBStr } from './color.js
|
|
|
11
11
|
export { absoluteUrl, cn, cuid, evalCode, formatDate, getRandomColor, hexToRgb, isDark, uuidV4 } from './helper.js';
|
|
12
12
|
export { allConditionsHaveIds, assignConditionIds, conditionsIsSame, evaluateRule, evaluateRulesConditions, filterConditionsByType, isConditionsActived, regenerateConditionIds } from './conditions/condition.js';
|
|
13
13
|
export { evaluateUrlCondition, isMatchUrlPattern } from './conditions/url.js';
|
|
14
|
-
export { evaluateTimeCondition } from './conditions/time.js';
|
|
14
|
+
export { convertTimeConditionLegacyToV2, evaluateTimeCondition, isTimeConditionDataLegacy, isTimeConditionDataV2, normalizeTimeConditionData } from './conditions/time.js';
|
|
15
15
|
export { evaluateAttributeCondition } from './conditions/attribute.js';
|
|
16
16
|
export { capitalizeFirstLetter, filterNullAttributes, getAttributeType } from './attribute.js';
|
|
17
17
|
export { default as isEqual } from 'fast-deep-equal';
|
package/dist/index.js
CHANGED
|
@@ -20,15 +20,12 @@ import {
|
|
|
20
20
|
isConditionsActived,
|
|
21
21
|
isEqual,
|
|
22
22
|
regenerateConditionIds
|
|
23
|
-
} from "./chunk-
|
|
23
|
+
} from "./chunk-E3B3AWMJ.js";
|
|
24
24
|
import {
|
|
25
25
|
evaluateUrlCondition,
|
|
26
26
|
isMatchUrlPattern
|
|
27
27
|
} from "./chunk-YYIGUZNZ.js";
|
|
28
28
|
import "./chunk-PAESAL23.js";
|
|
29
|
-
import {
|
|
30
|
-
evaluateTimeCondition
|
|
31
|
-
} from "./chunk-CEK3SCQO.js";
|
|
32
29
|
import {
|
|
33
30
|
evaluateAttributeCondition
|
|
34
31
|
} from "./chunk-KYDXF7SU.js";
|
|
@@ -54,25 +51,7 @@ import {
|
|
|
54
51
|
convertSettings,
|
|
55
52
|
convertToCssVars,
|
|
56
53
|
mergeThemeDefaultSettings
|
|
57
|
-
} from "./chunk-
|
|
58
|
-
import {
|
|
59
|
-
isArray,
|
|
60
|
-
isBoolean,
|
|
61
|
-
isDate,
|
|
62
|
-
isDocument,
|
|
63
|
-
isEmptyObject,
|
|
64
|
-
isEmptyString,
|
|
65
|
-
isFile,
|
|
66
|
-
isFormData,
|
|
67
|
-
isFunction,
|
|
68
|
-
isNull,
|
|
69
|
-
isNullish,
|
|
70
|
-
isNumber,
|
|
71
|
-
isObject,
|
|
72
|
-
isString,
|
|
73
|
-
isUint8Array,
|
|
74
|
-
isUndefined
|
|
75
|
-
} from "./chunk-GFH3VWOC.js";
|
|
54
|
+
} from "./chunk-F7ZHCELE.js";
|
|
76
55
|
import {
|
|
77
56
|
generateAutoStateColors,
|
|
78
57
|
hexToHSLString,
|
|
@@ -95,7 +74,32 @@ import {
|
|
|
95
74
|
hasActionError,
|
|
96
75
|
hasError,
|
|
97
76
|
isValidSelector
|
|
98
|
-
} from "./chunk-
|
|
77
|
+
} from "./chunk-QWYOGIRR.js";
|
|
78
|
+
import {
|
|
79
|
+
convertTimeConditionLegacyToV2,
|
|
80
|
+
evaluateTimeCondition,
|
|
81
|
+
isTimeConditionDataLegacy,
|
|
82
|
+
isTimeConditionDataV2,
|
|
83
|
+
normalizeTimeConditionData
|
|
84
|
+
} from "./chunk-JQWKLXW6.js";
|
|
85
|
+
import {
|
|
86
|
+
isArray,
|
|
87
|
+
isBoolean,
|
|
88
|
+
isDate,
|
|
89
|
+
isDocument,
|
|
90
|
+
isEmptyObject,
|
|
91
|
+
isEmptyString,
|
|
92
|
+
isFile,
|
|
93
|
+
isFormData,
|
|
94
|
+
isFunction,
|
|
95
|
+
isNull,
|
|
96
|
+
isNullish,
|
|
97
|
+
isNumber,
|
|
98
|
+
isObject,
|
|
99
|
+
isString,
|
|
100
|
+
isUint8Array,
|
|
101
|
+
isUndefined
|
|
102
|
+
} from "./chunk-GFH3VWOC.js";
|
|
99
103
|
import {
|
|
100
104
|
AbortController,
|
|
101
105
|
ArrayProto,
|
|
@@ -135,6 +139,7 @@ export {
|
|
|
135
139
|
cn,
|
|
136
140
|
conditionsIsSame,
|
|
137
141
|
convertSettings,
|
|
142
|
+
convertTimeConditionLegacyToV2,
|
|
138
143
|
convertToCssVars,
|
|
139
144
|
cuid,
|
|
140
145
|
deepClone,
|
|
@@ -193,6 +198,8 @@ export {
|
|
|
193
198
|
isPublishedAtLeastOneEnvironment,
|
|
194
199
|
isPublishedInAllEnvironments,
|
|
195
200
|
isString,
|
|
201
|
+
isTimeConditionDataLegacy,
|
|
202
|
+
isTimeConditionDataV2,
|
|
196
203
|
isUint8Array,
|
|
197
204
|
isUndefined,
|
|
198
205
|
isUrl,
|
|
@@ -202,6 +209,7 @@ export {
|
|
|
202
209
|
nativeForEach,
|
|
203
210
|
nativeIndexOf,
|
|
204
211
|
navigator,
|
|
212
|
+
normalizeTimeConditionData,
|
|
205
213
|
parseUrlParams,
|
|
206
214
|
regenerateConditionIds,
|
|
207
215
|
removeAuthToken,
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@usertour/helpers",
|
|
3
|
-
"version": "0.0.
|
|
3
|
+
"version": "0.0.37",
|
|
4
4
|
"type": "module",
|
|
5
5
|
"description": "Utility functions and helpers shared across the UserTour project",
|
|
6
6
|
"homepage": "https://www.usertour.io",
|
|
@@ -29,7 +29,7 @@
|
|
|
29
29
|
},
|
|
30
30
|
"dependencies": {
|
|
31
31
|
"@paralleldrive/cuid2": "^2.2.2",
|
|
32
|
-
"@usertour/types": "^0.0.
|
|
32
|
+
"@usertour/types": "^0.0.26",
|
|
33
33
|
"chroma-js": "^3.1.2",
|
|
34
34
|
"class-variance-authority": "^0.4.0",
|
|
35
35
|
"clsx": "^1.2.1",
|
package/dist/chunk-CEK3SCQO.js
DELETED
|
@@ -1,31 +0,0 @@
|
|
|
1
|
-
// src/conditions/time.ts
|
|
2
|
-
import { isAfter, isBefore, isValid, parseISO } from "date-fns";
|
|
3
|
-
var evaluateTimeCondition = (rules) => {
|
|
4
|
-
try {
|
|
5
|
-
const { endDate, endDateHour, endDateMinute, startDate, startDateHour, startDateMinute } = rules.data || {};
|
|
6
|
-
if (!startDate || !startDateHour || !startDateMinute) {
|
|
7
|
-
return false;
|
|
8
|
-
}
|
|
9
|
-
const startTimeString = `${startDate}T${startDateHour.padStart(2, "0")}:${startDateMinute.padStart(2, "0")}:00`;
|
|
10
|
-
const startTime = parseISO(startTimeString);
|
|
11
|
-
if (!isValid(startTime)) {
|
|
12
|
-
return false;
|
|
13
|
-
}
|
|
14
|
-
const now = /* @__PURE__ */ new Date();
|
|
15
|
-
if (!endDate || !endDateHour || !endDateMinute) {
|
|
16
|
-
return isAfter(now, startTime);
|
|
17
|
-
}
|
|
18
|
-
const endTimeString = `${endDate}T${endDateHour.padStart(2, "0")}:${endDateMinute.padStart(2, "0")}:00`;
|
|
19
|
-
const endTime = parseISO(endTimeString);
|
|
20
|
-
if (!isValid(endTime)) {
|
|
21
|
-
return false;
|
|
22
|
-
}
|
|
23
|
-
return isAfter(now, startTime) && isBefore(now, endTime);
|
|
24
|
-
} catch {
|
|
25
|
-
return false;
|
|
26
|
-
}
|
|
27
|
-
};
|
|
28
|
-
|
|
29
|
-
export {
|
|
30
|
-
evaluateTimeCondition
|
|
31
|
-
};
|
|
@@ -1,10 +1,10 @@
|
|
|
1
|
-
import {
|
|
2
|
-
isUndefined
|
|
3
|
-
} from "./chunk-GFH3VWOC.js";
|
|
4
1
|
import {
|
|
5
2
|
hexToHSLString,
|
|
6
3
|
hexToRGBStr
|
|
7
4
|
} from "./chunk-VT24VOAZ.js";
|
|
5
|
+
import {
|
|
6
|
+
isUndefined
|
|
7
|
+
} from "./chunk-GFH3VWOC.js";
|
|
8
8
|
|
|
9
9
|
// src/convert-settings.ts
|
|
10
10
|
import { defaultSettings } from "@usertour/types";
|