@lighthouse/common 6.10.0 → 6.10.1-canary.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/.mise.toml +6 -6
- package/CHANGELOG.md +758 -758
- package/README.md +1 -1
- package/dist/errors/FetchImageError.js +3 -3
- package/dist/helpers/fetch-image-for-pdf-generator-service/index.js +7 -7
- package/dist/helpers/floatify/index.js +6 -6
- package/dist/helpers/get-audit-items-data/index.js +47 -36
- package/dist/helpers/validate-url/index.js +4 -4
- package/dist/pdf/activity-report/index.js +32 -32
- package/dist/pdf/audit/index.js +23 -23
- package/dist/pdf/helpers/fields/index.js +47 -27
- package/dist/pdf/issue/index.js +23 -23
- package/dist/pdf/job/index.js +22 -22
- package/dist/pdf/shift-report/index.js +28 -28
- package/dist/pdf/task/index.js +23 -23
- package/dist/scheduling/generators/occurrenceIntervalsGenerator.js +2 -2
- package/dist/scheduling/generators/scheduleIntervalsGenerator.js +2 -2
- package/dist/scheduling/generators/serviceIntervalsGenerator.js +2 -2
- package/dist/scheduling/helpers/convertToTimezone.js +6 -6
- package/dist/scheduling/helpers/generateNonRepeatingSchedule.js +2 -2
- package/dist/scheduling/helpers/generateRepeatingSchedule.js +2 -2
- package/dist/scheduling/helpers/generateScheduleEnd.js +2 -2
- package/dist/scheduling/helpers/hasValidStartAndEnd.js +5 -5
- package/dist/scheduling/helpers/intervalCovers.js +6 -6
- package/dist/scheduling/helpers/intervalIntersectsEnd.js +6 -6
- package/dist/scheduling/helpers/intervalIntersectsStart.js +6 -6
- package/dist/scheduling/helpers/intervalOnlyIntersectsEnd.js +6 -6
- package/dist/scheduling/helpers/intervalOnlyIntersectsStart.js +6 -6
- package/dist/scheduling/helpers/intervalOutside.js +6 -6
- package/dist/scheduling/helpers/intervalWithin.js +6 -6
- package/dist/scheduling/helpers/mergeIntervals.js +6 -6
- package/dist/scheduling/helpers/splitIntervals.js +6 -6
- package/dist/scheduling/strategies/getNext.js +2 -2
- package/dist/scheduling/strategies/getNextExactDateOfMonth.js +2 -2
- package/dist/scheduling/strategies/getNextLastDayOfMonth.js +2 -2
- package/dist/scheduling/strategies/getNextLastWeekdayOfMonth.js +2 -2
- package/dist/scheduling/strategies/getNextNoRepeat.js +2 -2
- package/dist/scheduling/strategies/getNextWeekday.js +2 -2
- package/dist/scheduling/strategies/getNextXDayOfXWeekOfMonth.js +2 -2
- package/dist/service-hours/__helpers__/calculate-hours.js +4 -4
- package/dist/service-hours/__helpers__/isOpen.js +2 -2
- package/dist/service-hours/schema.js +4 -4
- package/lib/constants.js +12 -6
- package/lib/constants.js.map +1 -1
- package/lib/errors/DomainError.js +14 -21
- package/lib/errors/DomainError.js.map +1 -1
- package/lib/errors/FetchImageError.js +17 -24
- package/lib/errors/FetchImageError.js.map +1 -1
- package/lib/errors/ValidationError.js +30 -36
- package/lib/errors/ValidationError.js.map +1 -1
- package/lib/errors/index.js +23 -5
- package/lib/errors/index.js.map +1 -1
- package/lib/helpers/build-fetch-url/index.js +43 -47
- package/lib/helpers/build-fetch-url/index.js.map +1 -1
- package/lib/helpers/fetch-image/index.js +83 -82
- package/lib/helpers/fetch-image/index.js.map +1 -1
- package/lib/helpers/fetch-image-for-pdf-generator-service/index.js +168 -243
- package/lib/helpers/fetch-image-for-pdf-generator-service/index.js.map +1 -1
- package/lib/helpers/fetch-image-for-web/index.js +71 -94
- package/lib/helpers/fetch-image-for-web/index.js.map +1 -1
- package/lib/helpers/fetch-lighthouse-logo/index.js +36 -61
- package/lib/helpers/fetch-lighthouse-logo/index.js.map +1 -1
- package/lib/helpers/floatify/index.js +13 -7
- package/lib/helpers/floatify/index.js.map +1 -1
- package/lib/helpers/get-assignees-full-names/index.js +11 -7
- package/lib/helpers/get-assignees-full-names/index.js.map +1 -1
- package/lib/helpers/get-audit-entry-details/index.js +42 -32
- package/lib/helpers/get-audit-entry-details/index.js.map +1 -1
- package/lib/helpers/get-audit-items-data/index.js +104 -83
- package/lib/helpers/get-audit-items-data/index.js.map +1 -1
- package/lib/helpers/get-geometry-geocoded-string/index.js +10 -5
- package/lib/helpers/get-geometry-geocoded-string/index.js.map +1 -1
- package/lib/helpers/get-issue-details/index.js +53 -43
- package/lib/helpers/get-issue-details/index.js.map +1 -1
- package/lib/helpers/get-job-details/index.js +49 -41
- package/lib/helpers/get-job-details/index.js.map +1 -1
- package/lib/helpers/get-location-reference/index.js +32 -34
- package/lib/helpers/get-location-reference/index.js.map +1 -1
- package/lib/helpers/get-pretty-duration/index.js +16 -10
- package/lib/helpers/get-pretty-duration/index.js.map +1 -1
- package/lib/helpers/get-reference-details/index.js +20 -10
- package/lib/helpers/get-reference-details/index.js.map +1 -1
- package/lib/helpers/get-status-details/index.js +8 -2
- package/lib/helpers/get-status-details/index.js.map +1 -1
- package/lib/helpers/get-task-entry-details/index.js +32 -23
- package/lib/helpers/get-task-entry-details/index.js.map +1 -1
- package/lib/helpers/get-timezone-abbr/index.js +11 -4
- package/lib/helpers/get-timezone-abbr/index.js.map +1 -1
- package/lib/helpers/get-timezone-datetime/index.js +20 -13
- package/lib/helpers/get-timezone-datetime/index.js.map +1 -1
- package/lib/helpers/get-user-full-name/index.js +9 -3
- package/lib/helpers/get-user-full-name/index.js.map +1 -1
- package/lib/helpers/get-value-as-percentage/index.js +9 -4
- package/lib/helpers/get-value-as-percentage/index.js.map +1 -1
- package/lib/helpers/image-validators/index.js +18 -12
- package/lib/helpers/image-validators/index.js.map +1 -1
- package/lib/helpers/index.js +130 -18
- package/lib/helpers/index.js.map +1 -1
- package/lib/helpers/validate-url/index.js +11 -5
- package/lib/helpers/validate-url/index.js.map +1 -1
- package/lib/images/index.js +10 -4
- package/lib/images/index.js.map +1 -1
- package/lib/index.js +66 -10
- package/lib/index.js.map +1 -1
- package/lib/pdf/activity-report/index.js +407 -537
- package/lib/pdf/activity-report/index.js.map +1 -1
- package/lib/pdf/audit/index.js +137 -134
- package/lib/pdf/audit/index.js.map +1 -1
- package/lib/pdf/fonts/index.js +4 -2
- package/lib/pdf/fonts/index.js.map +1 -1
- package/lib/pdf/helpers/build-audit-content/index.js +57 -51
- package/lib/pdf/helpers/build-audit-content/index.js.map +1 -1
- package/lib/pdf/helpers/build-audit-follow-ups/index.js +52 -50
- package/lib/pdf/helpers/build-audit-follow-ups/index.js.map +1 -1
- package/lib/pdf/helpers/build-location-scans-content/index.js +22 -16
- package/lib/pdf/helpers/build-location-scans-content/index.js.map +1 -1
- package/lib/pdf/helpers/build-template-content/index.js +52 -51
- package/lib/pdf/helpers/build-template-content/index.js.map +1 -1
- package/lib/pdf/helpers/default-footer/index.js +38 -35
- package/lib/pdf/helpers/default-footer/index.js.map +1 -1
- package/lib/pdf/helpers/default-header/index.js +40 -35
- package/lib/pdf/helpers/default-header/index.js.map +1 -1
- package/lib/pdf/helpers/default-styles/index.js +7 -1
- package/lib/pdf/helpers/default-styles/index.js.map +1 -1
- package/lib/pdf/helpers/fields/index.js +225 -214
- package/lib/pdf/helpers/fields/index.js.map +1 -1
- package/lib/pdf/helpers/format-location-address/index.js +14 -8
- package/lib/pdf/helpers/format-location-address/index.js.map +1 -1
- package/lib/pdf/helpers/generate-definition/index.js +60 -65
- package/lib/pdf/helpers/generate-definition/index.js.map +1 -1
- package/lib/pdf/helpers/horizontal-line/index.js +14 -14
- package/lib/pdf/helpers/horizontal-line/index.js.map +1 -1
- package/lib/pdf/helpers/html-transformer/index.js +45 -35
- package/lib/pdf/helpers/html-transformer/index.js.map +1 -1
- package/lib/pdf/helpers/index.js +194 -15
- package/lib/pdf/helpers/index.js.map +1 -1
- package/lib/pdf/helpers/parse-value/index.js +10 -4
- package/lib/pdf/helpers/parse-value/index.js.map +1 -1
- package/lib/pdf/helpers/table/index.js +136 -205
- package/lib/pdf/helpers/table/index.js.map +1 -1
- package/lib/pdf/helpers/text/index.js +11 -8
- package/lib/pdf/helpers/text/index.js.map +1 -1
- package/lib/pdf/icons/index.js +8 -2
- package/lib/pdf/icons/index.js.map +1 -1
- package/lib/pdf/index.js +47 -6
- package/lib/pdf/index.js.map +1 -1
- package/lib/pdf/issue/index.js +141 -135
- package/lib/pdf/issue/index.js.map +1 -1
- package/lib/pdf/job/index.js +95 -81
- package/lib/pdf/job/index.js.map +1 -1
- package/lib/pdf/shift-report/emptyFixtures.js +8 -2
- package/lib/pdf/shift-report/emptyFixtures.js.map +1 -1
- package/lib/pdf/shift-report/index.js +399 -521
- package/lib/pdf/shift-report/index.js.map +1 -1
- package/lib/pdf/task/index.js +89 -83
- package/lib/pdf/task/index.js.map +1 -1
- package/lib/scheduling/generators/index.js +38 -3
- package/lib/scheduling/generators/index.js.map +1 -1
- package/lib/scheduling/generators/occurrenceIntervalsGenerator.js +44 -37
- package/lib/scheduling/generators/occurrenceIntervalsGenerator.js.map +1 -1
- package/lib/scheduling/generators/scheduleIntervalsGenerator.js +20 -28
- package/lib/scheduling/generators/scheduleIntervalsGenerator.js.map +1 -1
- package/lib/scheduling/generators/serviceIntervalsGenerator.js +120 -150
- package/lib/scheduling/generators/serviceIntervalsGenerator.js.map +1 -1
- package/lib/scheduling/helpers/convertToTimezone.js +18 -11
- package/lib/scheduling/helpers/convertToTimezone.js.map +1 -1
- package/lib/scheduling/helpers/generateNonRepeatingSchedule.js +57 -95
- package/lib/scheduling/helpers/generateNonRepeatingSchedule.js.map +1 -1
- package/lib/scheduling/helpers/generateRepeatingSchedule.js +80 -119
- package/lib/scheduling/helpers/generateRepeatingSchedule.js.map +1 -1
- package/lib/scheduling/helpers/generateScheduleEnd.js +24 -14
- package/lib/scheduling/helpers/generateScheduleEnd.js.map +1 -1
- package/lib/scheduling/helpers/hasValidStartAndEnd.js +19 -11
- package/lib/scheduling/helpers/hasValidStartAndEnd.js.map +1 -1
- package/lib/scheduling/helpers/index.js +159 -14
- package/lib/scheduling/helpers/index.js.map +1 -1
- package/lib/scheduling/helpers/intervalCovers.js +13 -7
- package/lib/scheduling/helpers/intervalCovers.js.map +1 -1
- package/lib/scheduling/helpers/intervalIntersectsEnd.js +13 -7
- package/lib/scheduling/helpers/intervalIntersectsEnd.js.map +1 -1
- package/lib/scheduling/helpers/intervalIntersectsStart.js +13 -7
- package/lib/scheduling/helpers/intervalIntersectsStart.js.map +1 -1
- package/lib/scheduling/helpers/intervalOnlyIntersectsEnd.js +15 -10
- package/lib/scheduling/helpers/intervalOnlyIntersectsEnd.js.map +1 -1
- package/lib/scheduling/helpers/intervalOnlyIntersectsStart.js +15 -10
- package/lib/scheduling/helpers/intervalOnlyIntersectsStart.js.map +1 -1
- package/lib/scheduling/helpers/intervalOutside.js +15 -9
- package/lib/scheduling/helpers/intervalOutside.js.map +1 -1
- package/lib/scheduling/helpers/intervalWithin.js +13 -7
- package/lib/scheduling/helpers/intervalWithin.js.map +1 -1
- package/lib/scheduling/helpers/mergeIntervals.js +21 -17
- package/lib/scheduling/helpers/mergeIntervals.js.map +1 -1
- package/lib/scheduling/helpers/splitIntervals.js +24 -23
- package/lib/scheduling/helpers/splitIntervals.js.map +1 -1
- package/lib/scheduling/index.js +38 -3
- package/lib/scheduling/index.js.map +1 -1
- package/lib/scheduling/scheduling.types.js +9 -3
- package/lib/scheduling/scheduling.types.js.map +1 -1
- package/lib/scheduling/strategies/getNext.js +57 -63
- package/lib/scheduling/strategies/getNext.js.map +1 -1
- package/lib/scheduling/strategies/getNextExactDateOfMonth.js +47 -56
- package/lib/scheduling/strategies/getNextExactDateOfMonth.js.map +1 -1
- package/lib/scheduling/strategies/getNextLastDayOfMonth.js +43 -51
- package/lib/scheduling/strategies/getNextLastDayOfMonth.js.map +1 -1
- package/lib/scheduling/strategies/getNextLastWeekdayOfMonth.js +49 -56
- package/lib/scheduling/strategies/getNextLastWeekdayOfMonth.js.map +1 -1
- package/lib/scheduling/strategies/getNextNoRepeat.js +25 -36
- package/lib/scheduling/strategies/getNextNoRepeat.js.map +1 -1
- package/lib/scheduling/strategies/getNextWeekday.js +47 -79
- package/lib/scheduling/strategies/getNextWeekday.js.map +1 -1
- package/lib/scheduling/strategies/getNextXDayOfXWeekOfMonth.js +52 -58
- package/lib/scheduling/strategies/getNextXDayOfXWeekOfMonth.js.map +1 -1
- package/lib/scheduling/strategies/index.js +82 -7
- package/lib/scheduling/strategies/index.js.map +1 -1
- package/lib/schema/index.js +16 -1
- package/lib/schema/index.js.map +1 -1
- package/lib/schema/schema.js +28 -34
- package/lib/schema/schema.js.map +1 -1
- package/lib/service-hours/__helpers__/calculate-hours.js +24 -22
- package/lib/service-hours/__helpers__/calculate-hours.js.map +1 -1
- package/lib/service-hours/__helpers__/isOpen.js +25 -24
- package/lib/service-hours/__helpers__/isOpen.js.map +1 -1
- package/lib/service-hours/index.js +27 -2
- package/lib/service-hours/index.js.map +1 -1
- package/lib/service-hours/schema.js +68 -55
- package/lib/service-hours/schema.js.map +1 -1
- package/package.json +86 -86
- package/vitest.config.ts +23 -23
- package/vitest.setup.js +7 -7
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"calculate-hours.js","names":["days","MON","TUE","WED","THU","FRI","SAT","SUN","MON2","TUE2","MINUTES","HOURS","DAYS","input","process","argv","Error","parts","split","length","startOffset","parse","endOffset","duration","output","type","start","end","description","console","dir","depth","def","day","time","undefined","timeParts","hour","minute","offset"],"sources":["../../../src/service-hours/__helpers__/calculate-hours.js"],"sourcesContent":["/**\n * Script to generate service hour definitions which is otherwise tedious to\n * calculate as we store them in millisecond offsets\n * Example Input: TUE 08:00 - TUE 17:00\n */\n\nconst days = {\n MON: 0,\n TUE: 1,\n WED: 2,\n THU: 3,\n FRI: 4,\n SAT: 5,\n SUN: 6,\n MON2: 7,\n TUE2: 8,\n}\n\nconst MINUTES = 60000\nconst HOURS = 60 * MINUTES\nconst DAYS = 24 * HOURS\n\nconst input = process.argv[2]\n\nif (!input) {\n throw new Error('invalid input')\n}\n\nconst parts = input.split(' - ')\n\nif (parts.length < 2) {\n throw new Error('invalid input')\n}\n\nconst startOffset = parse(parts[0])\nconst endOffset = parse(parts[1])\nconst duration = endOffset - startOffset\nconst output = {\n type: 'DEFAULT',\n start: startOffset,\n end: endOffset,\n duration,\n description: input,\n}\n\nconsole.dir(output, { depth: null })\n\nfunction parse(def) {\n const parts = def.split(' ')\n\n if (parts.length < 2) {\n throw new Error('invalid parts')\n }\n\n const day = days[parts[0]]\n const time = parts[1]\n\n if (day === undefined || day === null || !time) {\n throw new Error('invalid date/time')\n }\n\n const timeParts = time.split(':')\n const hour = timeParts[0]\n const minute = timeParts[1]\n\n if (!hour || !minute) {\n throw new Error('invalid end time')\n }\n\n // NOTE this isn't taking into account actual end of time if you target the\n // end of a minute, e.g. 23:59\n const offset = day * DAYS + hour * HOURS + minute * MINUTES\n\n return offset\n}\n"],"mappings":"AAAA;AACA;AACA;AACA;AACA;;AAEA,
|
|
1
|
+
{"version":3,"file":"calculate-hours.js","names":["days","MON","TUE","WED","THU","FRI","SAT","SUN","MON2","TUE2","MINUTES","HOURS","DAYS","input","process","argv","Error","parts","split","length","startOffset","parse","endOffset","duration","output","type","start","end","description","console","dir","depth","def","day","time","undefined","timeParts","hour","minute","offset"],"sources":["../../../src/service-hours/__helpers__/calculate-hours.js"],"sourcesContent":["/**\r\n * Script to generate service hour definitions which is otherwise tedious to\r\n * calculate as we store them in millisecond offsets\r\n * Example Input: TUE 08:00 - TUE 17:00\r\n */\r\n\r\nconst days = {\r\n MON: 0,\r\n TUE: 1,\r\n WED: 2,\r\n THU: 3,\r\n FRI: 4,\r\n SAT: 5,\r\n SUN: 6,\r\n MON2: 7,\r\n TUE2: 8,\r\n}\r\n\r\nconst MINUTES = 60000\r\nconst HOURS = 60 * MINUTES\r\nconst DAYS = 24 * HOURS\r\n\r\nconst input = process.argv[2]\r\n\r\nif (!input) {\r\n throw new Error('invalid input')\r\n}\r\n\r\nconst parts = input.split(' - ')\r\n\r\nif (parts.length < 2) {\r\n throw new Error('invalid input')\r\n}\r\n\r\nconst startOffset = parse(parts[0])\r\nconst endOffset = parse(parts[1])\r\nconst duration = endOffset - startOffset\r\nconst output = {\r\n type: 'DEFAULT',\r\n start: startOffset,\r\n end: endOffset,\r\n duration,\r\n description: input,\r\n}\r\n\r\nconsole.dir(output, { depth: null })\r\n\r\nfunction parse(def) {\r\n const parts = def.split(' ')\r\n\r\n if (parts.length < 2) {\r\n throw new Error('invalid parts')\r\n }\r\n\r\n const day = days[parts[0]]\r\n const time = parts[1]\r\n\r\n if (day === undefined || day === null || !time) {\r\n throw new Error('invalid date/time')\r\n }\r\n\r\n const timeParts = time.split(':')\r\n const hour = timeParts[0]\r\n const minute = timeParts[1]\r\n\r\n if (!hour || !minute) {\r\n throw new Error('invalid end time')\r\n }\r\n\r\n // NOTE this isn't taking into account actual end of time if you target the\r\n // end of a minute, e.g. 23:59\r\n const offset = day * DAYS + hour * HOURS + minute * MINUTES\r\n\r\n return offset\r\n}\r\n"],"mappings":";;AAAA;AACA;AACA;AACA;AACA;;AAEA,MAAMA,IAAI,GAAG;EACXC,GAAG,EAAE,CAAC;EACNC,GAAG,EAAE,CAAC;EACNC,GAAG,EAAE,CAAC;EACNC,GAAG,EAAE,CAAC;EACNC,GAAG,EAAE,CAAC;EACNC,GAAG,EAAE,CAAC;EACNC,GAAG,EAAE,CAAC;EACNC,IAAI,EAAE,CAAC;EACPC,IAAI,EAAE;AACR,CAAC;AAED,MAAMC,OAAO,GAAG,KAAK;AACrB,MAAMC,KAAK,GAAG,EAAE,GAAGD,OAAO;AAC1B,MAAME,IAAI,GAAG,EAAE,GAAGD,KAAK;AAEvB,MAAME,KAAK,GAAGC,OAAO,CAACC,IAAI,CAAC,CAAC,CAAC;AAE7B,IAAI,CAACF,KAAK,EAAE;EACV,MAAM,IAAIG,KAAK,CAAC,eAAe,CAAC;AAClC;AAEA,MAAMC,KAAK,GAAGJ,KAAK,CAACK,KAAK,CAAC,KAAK,CAAC;AAEhC,IAAID,KAAK,CAACE,MAAM,GAAG,CAAC,EAAE;EACpB,MAAM,IAAIH,KAAK,CAAC,eAAe,CAAC;AAClC;AAEA,MAAMI,WAAW,GAAGC,KAAK,CAACJ,KAAK,CAAC,CAAC,CAAC,CAAC;AACnC,MAAMK,SAAS,GAAGD,KAAK,CAACJ,KAAK,CAAC,CAAC,CAAC,CAAC;AACjC,MAAMM,QAAQ,GAAGD,SAAS,GAAGF,WAAW;AACxC,MAAMI,MAAM,GAAG;EACbC,IAAI,EAAE,SAAS;EACfC,KAAK,EAAEN,WAAW;EAClBO,GAAG,EAAEL,SAAS;EACdC,QAAQ;EACRK,WAAW,EAAEf;AACf,CAAC;AAEDgB,OAAO,CAACC,GAAG,CAACN,MAAM,EAAE;EAAEO,KAAK,EAAE;AAAK,CAAC,CAAC;AAEpC,SAASV,KAAKA,CAACW,GAAG,EAAE;EAClB,MAAMf,KAAK,GAAGe,GAAG,CAACd,KAAK,CAAC,GAAG,CAAC;EAE5B,IAAID,KAAK,CAACE,MAAM,GAAG,CAAC,EAAE;IACpB,MAAM,IAAIH,KAAK,CAAC,eAAe,CAAC;EAClC;EAEA,MAAMiB,GAAG,GAAGjC,IAAI,CAACiB,KAAK,CAAC,CAAC,CAAC,CAAC;EAC1B,MAAMiB,IAAI,GAAGjB,KAAK,CAAC,CAAC,CAAC;EAErB,IAAIgB,GAAG,KAAKE,SAAS,IAAIF,GAAG,KAAK,IAAI,IAAI,CAACC,IAAI,EAAE;IAC9C,MAAM,IAAIlB,KAAK,CAAC,mBAAmB,CAAC;EACtC;EAEA,MAAMoB,SAAS,GAAGF,IAAI,CAAChB,KAAK,CAAC,GAAG,CAAC;EACjC,MAAMmB,IAAI,GAAGD,SAAS,CAAC,CAAC,CAAC;EACzB,MAAME,MAAM,GAAGF,SAAS,CAAC,CAAC,CAAC;EAE3B,IAAI,CAACC,IAAI,IAAI,CAACC,MAAM,EAAE;IACpB,MAAM,IAAItB,KAAK,CAAC,kBAAkB,CAAC;EACrC;;EAEA;EACA;EACA,MAAMuB,MAAM,GAAGN,GAAG,GAAGrB,IAAI,GAAGyB,IAAI,GAAG1B,KAAK,GAAG2B,MAAM,GAAG5B,OAAO;EAE3D,OAAO6B,MAAM;AACf","ignoreList":[]}
|
|
@@ -1,30 +1,31 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
|
|
4
|
+
Object.defineProperty(exports, "__esModule", {
|
|
5
|
+
value: true
|
|
6
|
+
});
|
|
7
|
+
exports.isOpen = isOpen;
|
|
8
|
+
var _momentTimezone = _interopRequireDefault(require("moment-timezone"));
|
|
9
|
+
var _fp = require("lodash/fp");
|
|
10
|
+
var _generators = require("../../scheduling/generators");
|
|
11
|
+
var _scheduling = require("../../scheduling/scheduling.types");
|
|
12
|
+
/**
|
|
13
|
+
* Checks whether timestamp is within service hours for start and end
|
|
9
14
|
*/
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
15
|
+
function isOpen({
|
|
16
|
+
serviceHours,
|
|
17
|
+
timestamp
|
|
18
|
+
}) {
|
|
13
19
|
if (!timestamp) return false;
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
end
|
|
18
|
-
serviceHours
|
|
19
|
-
start
|
|
20
|
+
const start = _momentTimezone.default.utc(timestamp).subtract(1, _scheduling.Unit.Day).valueOf();
|
|
21
|
+
const end = _momentTimezone.default.utc(timestamp).add(1, _scheduling.Unit.Day).valueOf();
|
|
22
|
+
const serviceIntervalSequence = (0, _generators.serviceIntervalsGenerator)({
|
|
23
|
+
end,
|
|
24
|
+
serviceHours,
|
|
25
|
+
start
|
|
20
26
|
});
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
var _ref3 = _slicedToArray(_ref2, 2),
|
|
24
|
-
start = _ref3[0],
|
|
25
|
-
end = _ref3[1];
|
|
26
|
-
return timestamp >= start && timestamp <= end;
|
|
27
|
-
})(serviceIntervals);
|
|
27
|
+
const serviceIntervals = [...serviceIntervalSequence];
|
|
28
|
+
const isOpen = (0, _fp.some)(([start, end]) => timestamp >= start && timestamp <= end)(serviceIntervals);
|
|
28
29
|
return isOpen;
|
|
29
30
|
}
|
|
30
31
|
//# sourceMappingURL=isOpen.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"isOpen.js","names":["
|
|
1
|
+
{"version":3,"file":"isOpen.js","names":["_momentTimezone","_interopRequireDefault","require","_fp","_generators","_scheduling","isOpen","serviceHours","timestamp","start","moment","utc","subtract","Unit","Day","valueOf","end","add","serviceIntervalSequence","serviceIntervalsGenerator","serviceIntervals","some"],"sources":["../../../src/service-hours/__helpers__/isOpen.ts"],"sourcesContent":["import moment from 'moment-timezone'\r\nimport { some } from 'lodash/fp'\r\n\r\nimport { Schema as ServiceHoursSchema } from '..'\r\nimport { serviceIntervalsGenerator } from '../../scheduling/generators'\r\nimport { Unit } from '../../scheduling/scheduling.types'\r\n\r\ninterface IsOpen {\r\n serviceHours: ServiceHoursSchema\r\n timestamp: number\r\n}\r\n\r\n/**\r\n * Checks whether timestamp is within service hours for start and end\r\n */\r\nexport function isOpen({ serviceHours, timestamp }: IsOpen): boolean {\r\n if (!timestamp) return false\r\n\r\n const start = moment\r\n .utc(timestamp)\r\n .subtract(1, Unit.Day)\r\n .valueOf()\r\n const end = moment\r\n .utc(timestamp)\r\n .add(1, Unit.Day)\r\n .valueOf()\r\n\r\n const serviceIntervalSequence = serviceIntervalsGenerator({\r\n end,\r\n serviceHours,\r\n start,\r\n })\r\n\r\n const serviceIntervals = [...serviceIntervalSequence]\r\n const isOpen = some(([start, end]) => timestamp >= start && timestamp <= end)(\r\n serviceIntervals\r\n )\r\n\r\n return isOpen\r\n}\r\n"],"mappings":";;;;;;;AAAA,IAAAA,eAAA,GAAAC,sBAAA,CAAAC,OAAA;AACA,IAAAC,GAAA,GAAAD,OAAA;AAGA,IAAAE,WAAA,GAAAF,OAAA;AACA,IAAAG,WAAA,GAAAH,OAAA;AAOA;AACA;AACA;AACO,SAASI,MAAMA,CAAC;EAAEC,YAAY;EAAEC;AAAkB,CAAC,EAAW;EACnE,IAAI,CAACA,SAAS,EAAE,OAAO,KAAK;EAE5B,MAAMC,KAAK,GAAGC,uBAAM,CACjBC,GAAG,CAACH,SAAS,CAAC,CACdI,QAAQ,CAAC,CAAC,EAAEC,gBAAI,CAACC,GAAG,CAAC,CACrBC,OAAO,CAAC,CAAC;EACZ,MAAMC,GAAG,GAAGN,uBAAM,CACfC,GAAG,CAACH,SAAS,CAAC,CACdS,GAAG,CAAC,CAAC,EAAEJ,gBAAI,CAACC,GAAG,CAAC,CAChBC,OAAO,CAAC,CAAC;EAEZ,MAAMG,uBAAuB,GAAG,IAAAC,qCAAyB,EAAC;IACxDH,GAAG;IACHT,YAAY;IACZE;EACF,CAAC,CAAC;EAEF,MAAMW,gBAAgB,GAAG,CAAC,GAAGF,uBAAuB,CAAC;EACrD,MAAMZ,MAAM,GAAG,IAAAe,QAAI,EAAC,CAAC,CAACZ,KAAK,EAAEO,GAAG,CAAC,KAAKR,SAAS,IAAIC,KAAK,IAAID,SAAS,IAAIQ,GAAG,CAAC,CAC3EI,gBACF,CAAC;EAED,OAAOd,MAAM;AACf","ignoreList":[]}
|
|
@@ -1,3 +1,28 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
var _schema = require("./schema");
|
|
7
|
+
Object.keys(_schema).forEach(function (key) {
|
|
8
|
+
if (key === "default" || key === "__esModule") return;
|
|
9
|
+
if (key in exports && exports[key] === _schema[key]) return;
|
|
10
|
+
Object.defineProperty(exports, key, {
|
|
11
|
+
enumerable: true,
|
|
12
|
+
get: function () {
|
|
13
|
+
return _schema[key];
|
|
14
|
+
}
|
|
15
|
+
});
|
|
16
|
+
});
|
|
17
|
+
var _isOpen = require("./__helpers__/isOpen");
|
|
18
|
+
Object.keys(_isOpen).forEach(function (key) {
|
|
19
|
+
if (key === "default" || key === "__esModule") return;
|
|
20
|
+
if (key in exports && exports[key] === _isOpen[key]) return;
|
|
21
|
+
Object.defineProperty(exports, key, {
|
|
22
|
+
enumerable: true,
|
|
23
|
+
get: function () {
|
|
24
|
+
return _isOpen[key];
|
|
25
|
+
}
|
|
26
|
+
});
|
|
27
|
+
});
|
|
3
28
|
//# sourceMappingURL=index.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","names":[],"sources":["../../src/service-hours/index.ts"],"sourcesContent":["export * from './schema'\nexport * from './__helpers__/isOpen'\n"],"mappings":"AAAA,
|
|
1
|
+
{"version":3,"file":"index.js","names":["_schema","require","Object","keys","forEach","key","exports","defineProperty","enumerable","get","_isOpen"],"sources":["../../src/service-hours/index.ts"],"sourcesContent":["export * from './schema'\r\nexport * from './__helpers__/isOpen'\r\n"],"mappings":";;;;;AAAA,IAAAA,OAAA,GAAAC,OAAA;AAAAC,MAAA,CAAAC,IAAA,CAAAH,OAAA,EAAAI,OAAA,WAAAC,GAAA;EAAA,IAAAA,GAAA,kBAAAA,GAAA;EAAA,IAAAA,GAAA,IAAAC,OAAA,IAAAA,OAAA,CAAAD,GAAA,MAAAL,OAAA,CAAAK,GAAA;EAAAH,MAAA,CAAAK,cAAA,CAAAD,OAAA,EAAAD,GAAA;IAAAG,UAAA;IAAAC,GAAA,WAAAA,CAAA;MAAA,OAAAT,OAAA,CAAAK,GAAA;IAAA;EAAA;AAAA;AACA,IAAAK,OAAA,GAAAT,OAAA;AAAAC,MAAA,CAAAC,IAAA,CAAAO,OAAA,EAAAN,OAAA,WAAAC,GAAA;EAAA,IAAAA,GAAA,kBAAAA,GAAA;EAAA,IAAAA,GAAA,IAAAC,OAAA,IAAAA,OAAA,CAAAD,GAAA,MAAAK,OAAA,CAAAL,GAAA;EAAAH,MAAA,CAAAK,cAAA,CAAAD,OAAA,EAAAD,GAAA;IAAAG,UAAA;IAAAC,GAAA,WAAAA,CAAA;MAAA,OAAAC,OAAA,CAAAL,GAAA;IAAA;EAAA;AAAA","ignoreList":[]}
|
|
@@ -1,13 +1,20 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.schema = exports.default = exports.Weekdays = exports.Types = exports.Durations = exports.Behaviours = void 0;
|
|
7
|
+
exports.validateOverlappingHours = validateOverlappingHours;
|
|
8
|
+
var _yup = require("yup");
|
|
9
|
+
var _fp = require("lodash/fp");
|
|
10
|
+
var _lodash = require("lodash");
|
|
11
|
+
const MAX_OFFSET_MS = 604800000;
|
|
12
|
+
let Behaviours = exports.Behaviours = /*#__PURE__*/function (Behaviours) {
|
|
6
13
|
Behaviours["Open"] = "OPEN";
|
|
7
14
|
Behaviours["Close"] = "CLOSE";
|
|
8
15
|
return Behaviours;
|
|
9
16
|
}({});
|
|
10
|
-
|
|
17
|
+
let Durations = exports.Durations = /*#__PURE__*/function (Durations) {
|
|
11
18
|
Durations[Durations["Second"] = 1000] = "Second";
|
|
12
19
|
Durations[Durations["Minute"] = 60000] = "Minute";
|
|
13
20
|
Durations[Durations["Hour"] = 3600000] = "Hour";
|
|
@@ -15,12 +22,12 @@ export var Durations = /*#__PURE__*/function (Durations) {
|
|
|
15
22
|
Durations[Durations["Week"] = 604800000] = "Week";
|
|
16
23
|
return Durations;
|
|
17
24
|
}({});
|
|
18
|
-
|
|
25
|
+
let Types = exports.Types = /*#__PURE__*/function (Types) {
|
|
19
26
|
Types["Default"] = "DEFAULT";
|
|
20
27
|
Types["Override"] = "OVERRIDE";
|
|
21
28
|
return Types;
|
|
22
29
|
}({});
|
|
23
|
-
|
|
30
|
+
let Weekdays = exports.Weekdays = /*#__PURE__*/function (Weekdays) {
|
|
24
31
|
Weekdays["Monday"] = "MONDAY";
|
|
25
32
|
Weekdays["Tuesday"] = "TUESDAY";
|
|
26
33
|
Weekdays["Wednesday"] = "WEDNESDAY";
|
|
@@ -30,45 +37,43 @@ export var Weekdays = /*#__PURE__*/function (Weekdays) {
|
|
|
30
37
|
Weekdays["Sunday"] = "SUNDAY";
|
|
31
38
|
return Weekdays;
|
|
32
39
|
}({});
|
|
33
|
-
|
|
34
|
-
type: string().oneOf([Types.Default, Types.Override]).required(),
|
|
35
|
-
start: number().min(0).required(),
|
|
36
|
-
end: number().min(0).required().when('start',
|
|
40
|
+
const hoursSchema = (0, _yup.object)({
|
|
41
|
+
type: (0, _yup.string)().oneOf([Types.Default, Types.Override]).required(),
|
|
42
|
+
start: (0, _yup.number)().min(0).required(),
|
|
43
|
+
end: (0, _yup.number)().min(0).required().when('start', (start, endSchema) => {
|
|
37
44
|
return endSchema.min(start);
|
|
38
45
|
}),
|
|
39
|
-
duration: number().integer().when(['start', 'end'],
|
|
46
|
+
duration: (0, _yup.number)().integer().when(['start', 'end'], (start, end, durationSchema) => {
|
|
40
47
|
// NOTE This is a bit of a hack to check the exact value, but I can't find
|
|
41
48
|
// an API to check the exact value of a number
|
|
42
|
-
|
|
43
|
-
|
|
49
|
+
const expectedDuration = end - start;
|
|
50
|
+
const message = '${path} must be equal to ' + expectedDuration;
|
|
44
51
|
return durationSchema.min(expectedDuration, message).max(expectedDuration, message);
|
|
45
52
|
}),
|
|
46
|
-
description: string(),
|
|
47
|
-
behaviour: string().oneOf([Behaviours.Open, Behaviours.Close]).when('type',
|
|
53
|
+
description: (0, _yup.string)(),
|
|
54
|
+
behaviour: (0, _yup.string)().oneOf([Behaviours.Open, Behaviours.Close]).when('type', (type, behaviourSchema) => {
|
|
48
55
|
return type === Types.Override ? behaviourSchema.required() : behaviourSchema.strip(true);
|
|
49
56
|
})
|
|
50
57
|
});
|
|
51
|
-
|
|
52
|
-
timezone: string().required(),
|
|
53
|
-
options: object({
|
|
54
|
-
startWeekday: string().oneOf(values(Weekdays))
|
|
58
|
+
const schema = exports.schema = (0, _yup.object)({
|
|
59
|
+
timezone: (0, _yup.string)().required(),
|
|
60
|
+
options: (0, _yup.object)({
|
|
61
|
+
startWeekday: (0, _yup.string)().oneOf((0, _fp.values)(Weekdays))
|
|
55
62
|
}),
|
|
56
|
-
hours: array().of(hoursSchema).test('hasUndefinedHours', 'hours is a required field',
|
|
57
|
-
|
|
58
|
-
}).test('hasOverlappingDefaultHours', 'default hours must not overlap', function (value) {
|
|
59
|
-
var defaultHours = filter({
|
|
63
|
+
hours: (0, _yup.array)().of(hoursSchema).test('hasUndefinedHours', 'hours is a required field', value => !(0, _fp.isNil)(value)).test('hasOverlappingDefaultHours', 'default hours must not overlap', value => {
|
|
64
|
+
const defaultHours = (0, _fp.filter)({
|
|
60
65
|
type: Types.Default
|
|
61
66
|
}, value);
|
|
62
|
-
|
|
67
|
+
const hasOverlappingHours = validateOverlappingHours({
|
|
63
68
|
hoursArr: defaultHours
|
|
64
69
|
}) !== -1;
|
|
65
70
|
if (hasOverlappingHours) return false;
|
|
66
71
|
return true;
|
|
67
|
-
}).test('hasOverlappingOverrideHours', 'override hours must not overlap',
|
|
68
|
-
|
|
72
|
+
}).test('hasOverlappingOverrideHours', 'override hours must not overlap', value => {
|
|
73
|
+
const overrideHours = (0, _fp.filter)({
|
|
69
74
|
type: Types.Override
|
|
70
75
|
}, value);
|
|
71
|
-
|
|
76
|
+
const hasOverlappingHours = validateOverlappingHours({
|
|
72
77
|
hoursArr: overrideHours,
|
|
73
78
|
isUnix: true
|
|
74
79
|
}) !== -1;
|
|
@@ -76,46 +81,54 @@ export var schema = object({
|
|
|
76
81
|
return true;
|
|
77
82
|
})
|
|
78
83
|
});
|
|
79
|
-
/**
|
|
80
|
-
* validateOverlappingHours
|
|
81
|
-
* Validates that any hours do not overlap each other
|
|
82
|
-
* Validates default hours are within a week range
|
|
84
|
+
/**
|
|
85
|
+
* validateOverlappingHours
|
|
86
|
+
* Validates that any hours do not overlap each other
|
|
87
|
+
* Validates default hours are within a week range
|
|
83
88
|
*/
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
+
function validateOverlappingHours(options) {
|
|
90
|
+
const {
|
|
91
|
+
hoursArr,
|
|
92
|
+
isUnix
|
|
93
|
+
} = options;
|
|
94
|
+
let failingIndex = -1;
|
|
95
|
+
if ((0, _fp.isEmpty)(hoursArr)) {
|
|
89
96
|
return failingIndex;
|
|
90
97
|
}
|
|
91
98
|
|
|
92
99
|
// NOTE: when default hours and not override hours
|
|
93
100
|
if (!isUnix) {
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
firstStart
|
|
97
|
-
|
|
98
|
-
|
|
101
|
+
const sortedHoursArr = (0, _fp.orderBy)(['start', 'end'], ['asc', 'asc'], hoursArr);
|
|
102
|
+
const {
|
|
103
|
+
start: firstStart
|
|
104
|
+
} = (0, _fp.first)(sortedHoursArr);
|
|
105
|
+
const {
|
|
106
|
+
end: lastEnd
|
|
107
|
+
} = (0, _fp.last)(sortedHoursArr);
|
|
99
108
|
|
|
100
109
|
// NOTE: default service hour values are invalid if the first start and
|
|
101
110
|
// last end exceed the MAX_OFFSET_MS which is a week
|
|
102
|
-
|
|
111
|
+
const isRangeWithinWeek = lastEnd - firstStart <= MAX_OFFSET_MS;
|
|
103
112
|
if (!isRangeWithinWeek) {
|
|
104
113
|
failingIndex = 1;
|
|
105
114
|
return failingIndex;
|
|
106
115
|
}
|
|
107
116
|
}
|
|
108
|
-
some(hoursArr,
|
|
109
|
-
|
|
117
|
+
(0, _lodash.some)(hoursArr, (thisHours, thisIndex) => {
|
|
118
|
+
const overlap = (0, _lodash.some)(hoursArr, (otherHours, otherIndex) => {
|
|
110
119
|
if (otherIndex === thisIndex) return false;
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
120
|
+
const {
|
|
121
|
+
start: thisStart,
|
|
122
|
+
end: thisEnd
|
|
123
|
+
} = thisHours;
|
|
124
|
+
const {
|
|
125
|
+
start: otherStart,
|
|
126
|
+
end: otherEnd
|
|
127
|
+
} = otherHours;
|
|
128
|
+
const isMatching = otherStart === thisStart && otherEnd === thisEnd;
|
|
129
|
+
const isWithin = thisStart > otherStart && thisEnd < otherEnd;
|
|
130
|
+
const overlappingStart = thisStart < otherStart && thisEnd > otherStart;
|
|
131
|
+
const overlappingEnd = thisStart < otherEnd && thisEnd > otherEnd;
|
|
119
132
|
return isMatching || isWithin || overlappingStart || overlappingEnd;
|
|
120
133
|
});
|
|
121
134
|
if (overlap) {
|
|
@@ -125,5 +138,5 @@ export function validateOverlappingHours(options) {
|
|
|
125
138
|
});
|
|
126
139
|
return failingIndex;
|
|
127
140
|
}
|
|
128
|
-
|
|
141
|
+
var _default = exports.default = schema;
|
|
129
142
|
//# sourceMappingURL=schema.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"schema.js","names":["array","number","object","string","filter","first","isEmpty","isNil","last","orderBy","values","some","MAX_OFFSET_MS","Behaviours","Durations","Types","Weekdays","hoursSchema","type","oneOf","Default","Override","required","start","min","end","when","endSchema","duration","integer","durationSchema","expectedDuration","message","max","description","behaviour","Open","Close","behaviourSchema","strip","schema","timezone","options","startWeekday","hours","of","test","value","defaultHours","hasOverlappingHours","validateOverlappingHours","hoursArr","overrideHours","isUnix","failingIndex","sortedHoursArr","_first","firstStart","_last","lastEnd","isRangeWithinWeek","thisHours","thisIndex","overlap","otherHours","otherIndex","thisStart","thisEnd","otherStart","otherEnd","isMatching","isWithin","overlappingStart","overlappingEnd"],"sources":["../../src/service-hours/schema.ts"],"sourcesContent":["import {\n array,\n number,\n object,\n string,\n NumberSchema,\n StringSchema,\n} from 'yup'\n\nimport { filter, first, isEmpty, isNil, last, orderBy, values } from 'lodash/fp'\nimport { some } from 'lodash'\n\nconst MAX_OFFSET_MS = 604800000\n\nexport enum Behaviours {\n Open = 'OPEN',\n Close = 'CLOSE',\n}\n\nexport enum Durations {\n Second = 1000,\n Minute = 60000,\n Hour = 3600000,\n Day = 86400000,\n Week = 604800000,\n}\n\nexport enum Types {\n Default = 'DEFAULT',\n Override = 'OVERRIDE',\n}\n\nexport enum Weekdays {\n Monday = 'MONDAY',\n Tuesday = 'TUESDAY',\n Wednesday = 'WEDNESDAY',\n Thursday = 'THURSDAY',\n Friday = 'FRIDAY',\n Saturday = 'SATURDAY',\n Sunday = 'SUNDAY',\n}\n\nexport interface DefaultHoursSchema {\n description?: string\n duration?: number\n end: number\n start: number\n type: Types\n}\n\nexport interface OverrideHoursSchema extends DefaultHoursSchema {\n behaviour: Behaviours\n}\n\nexport type HoursSchema = DefaultHoursSchema | OverrideHoursSchema\n\nexport interface Schema {\n hours: Array<HoursSchema>\n options?: object\n timezone: string\n}\n\nconst hoursSchema = object({\n type: string()\n .oneOf([Types.Default, Types.Override])\n .required(),\n start: number()\n .min(0)\n .required(),\n end: number()\n .min(0)\n .required()\n .when('start', (start: number, endSchema: NumberSchema) => {\n return endSchema.min(start)\n }),\n duration: number()\n .integer()\n .when(['start', 'end'], (start: number, end: number, durationSchema: NumberSchema) => {\n // NOTE This is a bit of a hack to check the exact value, but I can't find\n // an API to check the exact value of a number\n const expectedDuration = end - start\n const message = '${path} must be equal to ' + expectedDuration\n return durationSchema\n .min(expectedDuration, message)\n .max(expectedDuration, message)\n }),\n description: string(),\n behaviour: string()\n .oneOf([Behaviours.Open, Behaviours.Close])\n .when('type', (type: Types, behaviourSchema: StringSchema) => {\n return type === Types.Override ? behaviourSchema.required() : behaviourSchema.strip(true)\n }),\n})\n\nexport const schema = object({\n timezone: string()\n .required(),\n options: object({\n startWeekday: string()\n .oneOf(values(Weekdays))\n }),\n hours: array()\n .of(hoursSchema)\n .test('hasUndefinedHours', 'hours is a required field', value => !isNil(value))\n .test(\n 'hasOverlappingDefaultHours',\n 'default hours must not overlap',\n value => {\n const defaultHours: HoursSchema[] = filter({ type: Types.Default }, value)\n const hasOverlappingHours = validateOverlappingHours({\n hoursArr: defaultHours,\n }) !== -1\n\n if (hasOverlappingHours) return false\n\n return true\n }\n )\n .test(\n 'hasOverlappingOverrideHours',\n 'override hours must not overlap',\n value => {\n const overrideHours: HoursSchema[] = filter({ type: Types.Override }, value)\n const hasOverlappingHours = validateOverlappingHours({\n hoursArr: overrideHours,\n isUnix: true,\n }) !== -1\n\n if (hasOverlappingHours) return false\n\n return true\n }\n ),\n})\n\ninterface ValidateOverlappingHours {\n hoursArr: Array<HoursSchema>\n isUnix?: Boolean\n}\n\n/**\n * validateOverlappingHours\n * Validates that any hours do not overlap each other \n * Validates default hours are within a week range\n */\nexport function validateOverlappingHours(options: ValidateOverlappingHours): Number {\n const { hoursArr, isUnix } = options\n let failingIndex = -1\n\n if (isEmpty(hoursArr)) {\n return failingIndex\n }\n\n // NOTE: when default hours and not override hours\n if (!isUnix) {\n const sortedHoursArr = orderBy(['start', 'end'], ['asc', 'asc'], hoursArr)\n\n const { start: firstStart } = first(sortedHoursArr)\n const { end: lastEnd } = last(sortedHoursArr)\n\n // NOTE: default service hour values are invalid if the first start and\n // last end exceed the MAX_OFFSET_MS which is a week\n const isRangeWithinWeek = (lastEnd - firstStart) <= MAX_OFFSET_MS\n\n if (!isRangeWithinWeek) {\n failingIndex = 1\n return failingIndex\n }\n }\n\n some(hoursArr, (thisHours, thisIndex) => {\n const overlap = some(hoursArr, (otherHours, otherIndex) => {\n if (otherIndex === thisIndex) return false\n\n const { start: thisStart, end: thisEnd } = thisHours\n const { start: otherStart, end: otherEnd } = otherHours\n\n const isMatching = otherStart === thisStart && otherEnd === thisEnd\n const isWithin = thisStart > otherStart && thisEnd < otherEnd\n const overlappingStart = thisStart < otherStart && thisEnd > otherStart\n const overlappingEnd = thisStart < otherEnd && thisEnd > otherEnd\n\n return isMatching || isWithin || overlappingStart || overlappingEnd\n })\n\n if (overlap) {\n failingIndex = thisIndex\n return true\n }\n })\n\n return failingIndex\n}\n\nexport default schema\n"],"mappings":"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","ignoreList":[]}
|
|
1
|
+
{"version":3,"file":"schema.js","names":["_yup","require","_fp","_lodash","MAX_OFFSET_MS","Behaviours","exports","Durations","Types","Weekdays","hoursSchema","object","type","string","oneOf","Default","Override","required","start","number","min","end","when","endSchema","duration","integer","durationSchema","expectedDuration","message","max","description","behaviour","Open","Close","behaviourSchema","strip","schema","timezone","options","startWeekday","values","hours","array","of","test","value","isNil","defaultHours","filter","hasOverlappingHours","validateOverlappingHours","hoursArr","overrideHours","isUnix","failingIndex","isEmpty","sortedHoursArr","orderBy","firstStart","first","lastEnd","last","isRangeWithinWeek","some","thisHours","thisIndex","overlap","otherHours","otherIndex","thisStart","thisEnd","otherStart","otherEnd","isMatching","isWithin","overlappingStart","overlappingEnd","_default","default"],"sources":["../../src/service-hours/schema.ts"],"sourcesContent":["import {\r\n array,\r\n number,\r\n object,\r\n string,\r\n NumberSchema,\r\n StringSchema,\r\n} from 'yup'\r\n\r\nimport { filter, first, isEmpty, isNil, last, orderBy, values } from 'lodash/fp'\r\nimport { some } from 'lodash'\r\n\r\nconst MAX_OFFSET_MS = 604800000\r\n\r\nexport enum Behaviours {\r\n Open = 'OPEN',\r\n Close = 'CLOSE',\r\n}\r\n\r\nexport enum Durations {\r\n Second = 1000,\r\n Minute = 60000,\r\n Hour = 3600000,\r\n Day = 86400000,\r\n Week = 604800000,\r\n}\r\n\r\nexport enum Types {\r\n Default = 'DEFAULT',\r\n Override = 'OVERRIDE',\r\n}\r\n\r\nexport enum Weekdays {\r\n Monday = 'MONDAY',\r\n Tuesday = 'TUESDAY',\r\n Wednesday = 'WEDNESDAY',\r\n Thursday = 'THURSDAY',\r\n Friday = 'FRIDAY',\r\n Saturday = 'SATURDAY',\r\n Sunday = 'SUNDAY',\r\n}\r\n\r\nexport interface DefaultHoursSchema {\r\n description?: string\r\n duration?: number\r\n end: number\r\n start: number\r\n type: Types\r\n}\r\n\r\nexport interface OverrideHoursSchema extends DefaultHoursSchema {\r\n behaviour: Behaviours\r\n}\r\n\r\nexport type HoursSchema = DefaultHoursSchema | OverrideHoursSchema\r\n\r\nexport interface Schema {\r\n hours: Array<HoursSchema>\r\n options?: object\r\n timezone: string\r\n}\r\n\r\nconst hoursSchema = object({\r\n type: string()\r\n .oneOf([Types.Default, Types.Override])\r\n .required(),\r\n start: number()\r\n .min(0)\r\n .required(),\r\n end: number()\r\n .min(0)\r\n .required()\r\n .when('start', (start: number, endSchema: NumberSchema) => {\r\n return endSchema.min(start)\r\n }),\r\n duration: number()\r\n .integer()\r\n .when(['start', 'end'], (start: number, end: number, durationSchema: NumberSchema) => {\r\n // NOTE This is a bit of a hack to check the exact value, but I can't find\r\n // an API to check the exact value of a number\r\n const expectedDuration = end - start\r\n const message = '${path} must be equal to ' + expectedDuration\r\n return durationSchema\r\n .min(expectedDuration, message)\r\n .max(expectedDuration, message)\r\n }),\r\n description: string(),\r\n behaviour: string()\r\n .oneOf([Behaviours.Open, Behaviours.Close])\r\n .when('type', (type: Types, behaviourSchema: StringSchema) => {\r\n return type === Types.Override ? behaviourSchema.required() : behaviourSchema.strip(true)\r\n }),\r\n})\r\n\r\nexport const schema = object({\r\n timezone: string()\r\n .required(),\r\n options: object({\r\n startWeekday: string()\r\n .oneOf(values(Weekdays))\r\n }),\r\n hours: array()\r\n .of(hoursSchema)\r\n .test('hasUndefinedHours', 'hours is a required field', value => !isNil(value))\r\n .test(\r\n 'hasOverlappingDefaultHours',\r\n 'default hours must not overlap',\r\n value => {\r\n const defaultHours: HoursSchema[] = filter({ type: Types.Default }, value)\r\n const hasOverlappingHours = validateOverlappingHours({\r\n hoursArr: defaultHours,\r\n }) !== -1\r\n\r\n if (hasOverlappingHours) return false\r\n\r\n return true\r\n }\r\n )\r\n .test(\r\n 'hasOverlappingOverrideHours',\r\n 'override hours must not overlap',\r\n value => {\r\n const overrideHours: HoursSchema[] = filter({ type: Types.Override }, value)\r\n const hasOverlappingHours = validateOverlappingHours({\r\n hoursArr: overrideHours,\r\n isUnix: true,\r\n }) !== -1\r\n\r\n if (hasOverlappingHours) return false\r\n\r\n return true\r\n }\r\n ),\r\n})\r\n\r\ninterface ValidateOverlappingHours {\r\n hoursArr: Array<HoursSchema>\r\n isUnix?: Boolean\r\n}\r\n\r\n/**\r\n * validateOverlappingHours\r\n * Validates that any hours do not overlap each other \r\n * Validates default hours are within a week range\r\n */\r\nexport function validateOverlappingHours(options: ValidateOverlappingHours): Number {\r\n const { hoursArr, isUnix } = options\r\n let failingIndex = -1\r\n\r\n if (isEmpty(hoursArr)) {\r\n return failingIndex\r\n }\r\n\r\n // NOTE: when default hours and not override hours\r\n if (!isUnix) {\r\n const sortedHoursArr = orderBy(['start', 'end'], ['asc', 'asc'], hoursArr)\r\n\r\n const { start: firstStart } = first(sortedHoursArr)\r\n const { end: lastEnd } = last(sortedHoursArr)\r\n\r\n // NOTE: default service hour values are invalid if the first start and\r\n // last end exceed the MAX_OFFSET_MS which is a week\r\n const isRangeWithinWeek = (lastEnd - firstStart) <= MAX_OFFSET_MS\r\n\r\n if (!isRangeWithinWeek) {\r\n failingIndex = 1\r\n return failingIndex\r\n }\r\n }\r\n\r\n some(hoursArr, (thisHours, thisIndex) => {\r\n const overlap = some(hoursArr, (otherHours, otherIndex) => {\r\n if (otherIndex === thisIndex) return false\r\n\r\n const { start: thisStart, end: thisEnd } = thisHours\r\n const { start: otherStart, end: otherEnd } = otherHours\r\n\r\n const isMatching = otherStart === thisStart && otherEnd === thisEnd\r\n const isWithin = thisStart > otherStart && thisEnd < otherEnd\r\n const overlappingStart = thisStart < otherStart && thisEnd > otherStart\r\n const overlappingEnd = thisStart < otherEnd && thisEnd > otherEnd\r\n\r\n return isMatching || isWithin || overlappingStart || overlappingEnd\r\n })\r\n\r\n if (overlap) {\r\n failingIndex = thisIndex\r\n return true\r\n }\r\n })\r\n\r\n return failingIndex\r\n}\r\n\r\nexport default schema\r\n"],"mappings":"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","ignoreList":[]}
|
package/package.json
CHANGED
|
@@ -1,86 +1,86 @@
|
|
|
1
|
-
{
|
|
2
|
-
"name": "@lighthouse/common",
|
|
3
|
-
"version": "6.10.0",
|
|
4
|
-
"description": "",
|
|
5
|
-
"main": "dist/index.js",
|
|
6
|
-
"module": "lib/index.js",
|
|
7
|
-
"scripts": {
|
|
8
|
-
"build": "yarn clear && yarn build:es && yarn build:node",
|
|
9
|
-
"build:es": "yarn clear:es && babel src --out-dir lib --extensions '.js,.ts' --ignore 'src/**/fixtures.js,src/**/fixtures/*,src/**/*.story.js,src/**/*.story.ts,src/**/*.test.js,src/**/*.test.ts' --source-maps",
|
|
10
|
-
"build:node": "yarn clear:node && BABEL_ENV=node babel src --out-dir dist --extensions '.js,.ts' --ignore 'src/**/fixtures.js,src/**/fixtures/*,src/**/*.story.js,src/**/*.story.ts,src/**/*.test.js,src/**/*.test.ts'",
|
|
11
|
-
"clear": "yarn clear:es && yarn clear:node",
|
|
12
|
-
"clear:es": "rimraf lib/",
|
|
13
|
-
"clear:node": "rimraf dist/",
|
|
14
|
-
"format": "prettier --write \"src/**/*.js\"",
|
|
15
|
-
"lint": "eslint src/",
|
|
16
|
-
"lint:fix": " yarn lint --fix",
|
|
17
|
-
"precommit": "lint-staged",
|
|
18
|
-
"prepublishOnly": "yarn build",
|
|
19
|
-
"preversion": "yarn test",
|
|
20
|
-
"storybook:html": "sb dev -p 9001 -c .storybook-html",
|
|
21
|
-
"storybook:react": "sb dev -p 9002 -c .storybook-react",
|
|
22
|
-
"build-storybook:html": "sb build -c .storybook-html",
|
|
23
|
-
"build-storybook:react": "sb build -c .storybook-react",
|
|
24
|
-
"test": "TZ=UTC vitest run",
|
|
25
|
-
"test:watch": "TZ=UTC vitest watch",
|
|
26
|
-
"test:ci": "yarn lint && yarn type-check && yarn test --coverage",
|
|
27
|
-
"type-check": "tsc --noEmit",
|
|
28
|
-
"type-check:watch": "yarn type-check --watch",
|
|
29
|
-
"validate:circleci": "circleci config validate -c .circleci/config.yml",
|
|
30
|
-
"version": "yarn build"
|
|
31
|
-
},
|
|
32
|
-
"repository": {
|
|
33
|
-
"type": "git",
|
|
34
|
-
"url": "git+https://github.com/Lighthouse-io/common.git"
|
|
35
|
-
},
|
|
36
|
-
"author": "Will McClellan",
|
|
37
|
-
"license": "UNLICENSED",
|
|
38
|
-
"bugs": {
|
|
39
|
-
"url": "https://github.com/Lighthouse-io/common/issues"
|
|
40
|
-
},
|
|
41
|
-
"homepage": "https://github.com/Lighthouse-io/common#readme",
|
|
42
|
-
"dependencies": {
|
|
43
|
-
"aws-sdk": "2.1361.0",
|
|
44
|
-
"bluebird": "^3.7.2",
|
|
45
|
-
"fetch-ponyfill": "^6.1.0",
|
|
46
|
-
"lodash": "^4.17.15",
|
|
47
|
-
"moment-timezone": "^0.5.35",
|
|
48
|
-
"react-html-parser": "^2.0.2",
|
|
49
|
-
"yup": "^0.32.11"
|
|
50
|
-
},
|
|
51
|
-
"devDependencies": {
|
|
52
|
-
"@babel/cli": "^7.8.4",
|
|
53
|
-
"@babel/core": "^7.8.7",
|
|
54
|
-
"@babel/plugin-transform-runtime": "^7.8.3",
|
|
55
|
-
"@babel/preset-env": "^7.12.1",
|
|
56
|
-
"@babel/preset-react": "^7.8.3",
|
|
57
|
-
"@babel/preset-typescript": "^7.8.3",
|
|
58
|
-
"@storybook/addon-actions": "^7.6.20",
|
|
59
|
-
"@storybook/addon-essentials": "^7.6.20",
|
|
60
|
-
"@storybook/cli": "^7.6.20",
|
|
61
|
-
"@storybook/html": "^7.6.20",
|
|
62
|
-
"@storybook/html-webpack5": "^7.6.20",
|
|
63
|
-
"@storybook/react": "^7.6.20",
|
|
64
|
-
"@storybook/react-webpack5": "^7.6.20",
|
|
65
|
-
"@types/lodash": "^4.14.149",
|
|
66
|
-
"@types/node": "^12.7.5",
|
|
67
|
-
"@types/yup": "^0.26.32",
|
|
68
|
-
"@vitest/ui": "^2.1.0",
|
|
69
|
-
"babel-eslint": "^10.1.0",
|
|
70
|
-
"babel-loader": "^8.0.5",
|
|
71
|
-
"eslint": "^9.0.0",
|
|
72
|
-
"eslint-config-prettier": "^9.1.0",
|
|
73
|
-
"husky": "^0.14.3",
|
|
74
|
-
"lint-staged": "^15.2.0",
|
|
75
|
-
"mockdate": "^2.0.2",
|
|
76
|
-
"nock": "^12.0.2",
|
|
77
|
-
"prettier": "^3.3.0",
|
|
78
|
-
"react": "^18.3.1",
|
|
79
|
-
"react-dom": "^18.3.1",
|
|
80
|
-
"react-visjs-timeline": "^1.6.0",
|
|
81
|
-
"rimraf": "^2.6.3",
|
|
82
|
-
"typescript": "^3.8.3",
|
|
83
|
-
"vis-timeline": "^7.4.4",
|
|
84
|
-
"vitest": "^3.0.0"
|
|
85
|
-
}
|
|
86
|
-
}
|
|
1
|
+
{
|
|
2
|
+
"name": "@lighthouse/common",
|
|
3
|
+
"version": "6.10.1-canary.0",
|
|
4
|
+
"description": "",
|
|
5
|
+
"main": "dist/index.js",
|
|
6
|
+
"module": "lib/index.js",
|
|
7
|
+
"scripts": {
|
|
8
|
+
"build": "yarn clear && yarn build:es && yarn build:node",
|
|
9
|
+
"build:es": "yarn clear:es && babel src --out-dir lib --extensions '.js,.ts' --ignore 'src/**/fixtures.js,src/**/fixtures/*,src/**/*.story.js,src/**/*.story.ts,src/**/*.test.js,src/**/*.test.ts' --source-maps",
|
|
10
|
+
"build:node": "yarn clear:node && BABEL_ENV=node babel src --out-dir dist --extensions '.js,.ts' --ignore 'src/**/fixtures.js,src/**/fixtures/*,src/**/*.story.js,src/**/*.story.ts,src/**/*.test.js,src/**/*.test.ts'",
|
|
11
|
+
"clear": "yarn clear:es && yarn clear:node",
|
|
12
|
+
"clear:es": "rimraf lib/",
|
|
13
|
+
"clear:node": "rimraf dist/",
|
|
14
|
+
"format": "prettier --write \"src/**/*.js\"",
|
|
15
|
+
"lint": "eslint src/",
|
|
16
|
+
"lint:fix": " yarn lint --fix",
|
|
17
|
+
"precommit": "lint-staged",
|
|
18
|
+
"prepublishOnly": "yarn build",
|
|
19
|
+
"preversion": "yarn test",
|
|
20
|
+
"storybook:html": "sb dev -p 9001 -c .storybook-html",
|
|
21
|
+
"storybook:react": "sb dev -p 9002 -c .storybook-react",
|
|
22
|
+
"build-storybook:html": "sb build -c .storybook-html",
|
|
23
|
+
"build-storybook:react": "sb build -c .storybook-react",
|
|
24
|
+
"test": "TZ=UTC vitest run",
|
|
25
|
+
"test:watch": "TZ=UTC vitest watch",
|
|
26
|
+
"test:ci": "yarn lint && yarn type-check && yarn test --coverage",
|
|
27
|
+
"type-check": "tsc --noEmit",
|
|
28
|
+
"type-check:watch": "yarn type-check --watch",
|
|
29
|
+
"validate:circleci": "circleci config validate -c .circleci/config.yml",
|
|
30
|
+
"version": "yarn build"
|
|
31
|
+
},
|
|
32
|
+
"repository": {
|
|
33
|
+
"type": "git",
|
|
34
|
+
"url": "git+https://github.com/Lighthouse-io/common.git"
|
|
35
|
+
},
|
|
36
|
+
"author": "Will McClellan",
|
|
37
|
+
"license": "UNLICENSED",
|
|
38
|
+
"bugs": {
|
|
39
|
+
"url": "https://github.com/Lighthouse-io/common/issues"
|
|
40
|
+
},
|
|
41
|
+
"homepage": "https://github.com/Lighthouse-io/common#readme",
|
|
42
|
+
"dependencies": {
|
|
43
|
+
"aws-sdk": "2.1361.0",
|
|
44
|
+
"bluebird": "^3.7.2",
|
|
45
|
+
"fetch-ponyfill": "^6.1.0",
|
|
46
|
+
"lodash": "^4.17.15",
|
|
47
|
+
"moment-timezone": "^0.5.35",
|
|
48
|
+
"react-html-parser": "^2.0.2",
|
|
49
|
+
"yup": "^0.32.11"
|
|
50
|
+
},
|
|
51
|
+
"devDependencies": {
|
|
52
|
+
"@babel/cli": "^7.8.4",
|
|
53
|
+
"@babel/core": "^7.8.7",
|
|
54
|
+
"@babel/plugin-transform-runtime": "^7.8.3",
|
|
55
|
+
"@babel/preset-env": "^7.12.1",
|
|
56
|
+
"@babel/preset-react": "^7.8.3",
|
|
57
|
+
"@babel/preset-typescript": "^7.8.3",
|
|
58
|
+
"@storybook/addon-actions": "^7.6.20",
|
|
59
|
+
"@storybook/addon-essentials": "^7.6.20",
|
|
60
|
+
"@storybook/cli": "^7.6.20",
|
|
61
|
+
"@storybook/html": "^7.6.20",
|
|
62
|
+
"@storybook/html-webpack5": "^7.6.20",
|
|
63
|
+
"@storybook/react": "^7.6.20",
|
|
64
|
+
"@storybook/react-webpack5": "^7.6.20",
|
|
65
|
+
"@types/lodash": "^4.14.149",
|
|
66
|
+
"@types/node": "^12.7.5",
|
|
67
|
+
"@types/yup": "^0.26.32",
|
|
68
|
+
"@vitest/ui": "^2.1.0",
|
|
69
|
+
"babel-eslint": "^10.1.0",
|
|
70
|
+
"babel-loader": "^8.0.5",
|
|
71
|
+
"eslint": "^9.0.0",
|
|
72
|
+
"eslint-config-prettier": "^9.1.0",
|
|
73
|
+
"husky": "^0.14.3",
|
|
74
|
+
"lint-staged": "^15.2.0",
|
|
75
|
+
"mockdate": "^2.0.2",
|
|
76
|
+
"nock": "^12.0.2",
|
|
77
|
+
"prettier": "^3.3.0",
|
|
78
|
+
"react": "^18.3.1",
|
|
79
|
+
"react-dom": "^18.3.1",
|
|
80
|
+
"react-visjs-timeline": "^1.6.0",
|
|
81
|
+
"rimraf": "^2.6.3",
|
|
82
|
+
"typescript": "^3.8.3",
|
|
83
|
+
"vis-timeline": "^7.4.4",
|
|
84
|
+
"vitest": "^3.0.0"
|
|
85
|
+
}
|
|
86
|
+
}
|
package/vitest.config.ts
CHANGED
|
@@ -1,23 +1,23 @@
|
|
|
1
|
-
import { defineConfig } from 'vitest/config'
|
|
2
|
-
|
|
3
|
-
export default defineConfig({
|
|
4
|
-
test: {
|
|
5
|
-
globals: true,
|
|
6
|
-
environment: 'node',
|
|
7
|
-
include: ['src/**/*.{test,spec}.{js,ts}'],
|
|
8
|
-
exclude: ['**/node_modules/**', '**/dist/**', '**/lib/**'],
|
|
9
|
-
setupFiles: ['./vitest.setup.js'],
|
|
10
|
-
coverage: {
|
|
11
|
-
provider: 'v8',
|
|
12
|
-
reporter: ['text', 'json', 'html', 'lcov'],
|
|
13
|
-
include: ['src/**/*.{js,ts}'],
|
|
14
|
-
exclude: [
|
|
15
|
-
'src/**/*.test.{js,ts}',
|
|
16
|
-
'src/**/*.spec.{js,ts}',
|
|
17
|
-
'src/**/*.story.{js,ts}',
|
|
18
|
-
'src/**/fixtures.js',
|
|
19
|
-
'src/**/fixtures/*',
|
|
20
|
-
],
|
|
21
|
-
},
|
|
22
|
-
},
|
|
23
|
-
})
|
|
1
|
+
import { defineConfig } from 'vitest/config'
|
|
2
|
+
|
|
3
|
+
export default defineConfig({
|
|
4
|
+
test: {
|
|
5
|
+
globals: true,
|
|
6
|
+
environment: 'node',
|
|
7
|
+
include: ['src/**/*.{test,spec}.{js,ts}'],
|
|
8
|
+
exclude: ['**/node_modules/**', '**/dist/**', '**/lib/**'],
|
|
9
|
+
setupFiles: ['./vitest.setup.js'],
|
|
10
|
+
coverage: {
|
|
11
|
+
provider: 'v8',
|
|
12
|
+
reporter: ['text', 'json', 'html', 'lcov'],
|
|
13
|
+
include: ['src/**/*.{js,ts}'],
|
|
14
|
+
exclude: [
|
|
15
|
+
'src/**/*.test.{js,ts}',
|
|
16
|
+
'src/**/*.spec.{js,ts}',
|
|
17
|
+
'src/**/*.story.{js,ts}',
|
|
18
|
+
'src/**/fixtures.js',
|
|
19
|
+
'src/**/fixtures/*',
|
|
20
|
+
],
|
|
21
|
+
},
|
|
22
|
+
},
|
|
23
|
+
})
|
package/vitest.setup.js
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
import { vi } from 'vitest'
|
|
2
|
-
|
|
3
|
-
// disable debug logs
|
|
4
|
-
console.debug = vi.fn()
|
|
5
|
-
console.error = vi.fn()
|
|
6
|
-
console.warn = vi.fn()
|
|
7
|
-
console.info = vi.fn()
|
|
1
|
+
import { vi } from 'vitest'
|
|
2
|
+
|
|
3
|
+
// disable debug logs
|
|
4
|
+
console.debug = vi.fn()
|
|
5
|
+
console.error = vi.fn()
|
|
6
|
+
console.warn = vi.fn()
|
|
7
|
+
console.info = vi.fn()
|