@multisystemsuite/timezone-engine-business-hours 2.0.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/README.md ADDED
@@ -0,0 +1,3 @@
1
+ # @multisystemsuite/timezone-engine-business-hours
2
+
3
+ Regional business hours engine.
package/dist/index.cjs ADDED
@@ -0,0 +1,37 @@
1
+ 'use strict';
2
+
3
+ var dateFnsTz = require('date-fns-tz');
4
+ var timezoneEngineCore = require('@multisystemsuite/timezone-engine-core');
5
+ var timezoneEngineScheduler = require('@multisystemsuite/timezone-engine-scheduler');
6
+
7
+ // src/index.ts
8
+ var BusinessHoursEngine = class {
9
+ scheduler;
10
+ timezone;
11
+ constructor(timezone, hours) {
12
+ this.timezone = timezoneEngineCore.safeTimezoneFallback(timezone);
13
+ this.scheduler = timezoneEngineScheduler.createSchedulerEngine({
14
+ ...timezoneEngineScheduler.defaultSchedulerConfig,
15
+ defaultTimezone: this.timezone,
16
+ businessHours: hours ?? timezoneEngineScheduler.defaultSchedulerConfig.businessHours
17
+ });
18
+ }
19
+ isBusinessHour(date, timezone, hours) {
20
+ return this.scheduler.isBusinessHour(
21
+ date,
22
+ timezoneEngineCore.safeTimezoneFallback(timezone ?? this.timezone),
23
+ hours
24
+ );
25
+ }
26
+ getLocalDay(date, timezone) {
27
+ return dateFnsTz.toZonedTime(date, timezoneEngineCore.safeTimezoneFallback(timezone ?? this.timezone)).getDay();
28
+ }
29
+ };
30
+ function businessHoursEngine(timezone, hours) {
31
+ return new BusinessHoursEngine(timezone, hours);
32
+ }
33
+
34
+ exports.BusinessHoursEngine = BusinessHoursEngine;
35
+ exports.businessHoursEngine = businessHoursEngine;
36
+ //# sourceMappingURL=index.cjs.map
37
+ //# sourceMappingURL=index.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/index.ts"],"names":["safeTimezoneFallback","createSchedulerEngine","defaultSchedulerConfig","toZonedTime"],"mappings":";;;;;;;AAUO,IAAM,sBAAN,MAA0B;AAAA,EACd,SAAA;AAAA,EACA,QAAA;AAAA,EAEjB,WAAA,CAAY,UAAkB,KAAA,EAAuB;AACnD,IAAA,IAAA,CAAK,QAAA,GAAWA,wCAAqB,QAAQ,CAAA;AAC7C,IAAA,IAAA,CAAK,YAAYC,6CAAA,CAAsB;AAAA,MACrC,GAAGC,8CAAA;AAAA,MACH,iBAAiB,IAAA,CAAK,QAAA;AAAA,MACtB,aAAA,EAAe,SAASA,8CAAA,CAAuB;AAAA,KAChD,CAAA;AAAA,EACH;AAAA,EAEA,cAAA,CAAe,IAAA,EAAY,QAAA,EAAmB,KAAA,EAAgC;AAC5E,IAAA,OAAO,KAAK,SAAA,CAAU,cAAA;AAAA,MACpB,IAAA;AAAA,MACAF,uCAAA,CAAqB,QAAA,IAAY,IAAA,CAAK,QAAQ,CAAA;AAAA,MAC9C;AAAA,KACF;AAAA,EACF;AAAA,EAEA,WAAA,CAAY,MAAY,QAAA,EAA2B;AACjD,IAAA,OAAOG,qBAAA,CAAY,MAAMH,uCAAA,CAAqB,QAAA,IAAY,KAAK,QAAQ,CAAC,EAAE,MAAA,EAAO;AAAA,EACnF;AACF;AAEO,SAAS,mBAAA,CAAoB,UAAkB,KAAA,EAA4C;AAChG,EAAA,OAAO,IAAI,mBAAA,CAAoB,QAAA,EAAU,KAAK,CAAA;AAChD","file":"index.cjs","sourcesContent":["import { toZonedTime } from \"date-fns-tz\";\nimport type { BusinessHours } from \"@multisystemsuite/timezone-engine-shared-types\";\nimport { safeTimezoneFallback } from \"@multisystemsuite/timezone-engine-core\";\nimport {\n createSchedulerEngine,\n defaultSchedulerConfig,\n type SchedulerEngine,\n} from \"@multisystemsuite/timezone-engine-scheduler\";\n\n/** Regional business-hours engine for enterprise workforce scheduling */\nexport class BusinessHoursEngine {\n private readonly scheduler: SchedulerEngine;\n private readonly timezone: string;\n\n constructor(timezone: string, hours?: BusinessHours) {\n this.timezone = safeTimezoneFallback(timezone);\n this.scheduler = createSchedulerEngine({\n ...defaultSchedulerConfig,\n defaultTimezone: this.timezone,\n businessHours: hours ?? defaultSchedulerConfig.businessHours,\n });\n }\n\n isBusinessHour(date: Date, timezone?: string, hours?: BusinessHours): boolean {\n return this.scheduler.isBusinessHour(\n date,\n safeTimezoneFallback(timezone ?? this.timezone),\n hours,\n );\n }\n\n getLocalDay(date: Date, timezone?: string): number {\n return toZonedTime(date, safeTimezoneFallback(timezone ?? this.timezone)).getDay();\n }\n}\n\nexport function businessHoursEngine(timezone: string, hours?: BusinessHours): BusinessHoursEngine {\n return new BusinessHoursEngine(timezone, hours);\n}\n"]}
@@ -0,0 +1,13 @@
1
+ import { BusinessHours } from '@multisystemsuite/timezone-engine-shared-types';
2
+
3
+ /** Regional business-hours engine for enterprise workforce scheduling */
4
+ declare class BusinessHoursEngine {
5
+ private readonly scheduler;
6
+ private readonly timezone;
7
+ constructor(timezone: string, hours?: BusinessHours);
8
+ isBusinessHour(date: Date, timezone?: string, hours?: BusinessHours): boolean;
9
+ getLocalDay(date: Date, timezone?: string): number;
10
+ }
11
+ declare function businessHoursEngine(timezone: string, hours?: BusinessHours): BusinessHoursEngine;
12
+
13
+ export { BusinessHoursEngine, businessHoursEngine };
@@ -0,0 +1,13 @@
1
+ import { BusinessHours } from '@multisystemsuite/timezone-engine-shared-types';
2
+
3
+ /** Regional business-hours engine for enterprise workforce scheduling */
4
+ declare class BusinessHoursEngine {
5
+ private readonly scheduler;
6
+ private readonly timezone;
7
+ constructor(timezone: string, hours?: BusinessHours);
8
+ isBusinessHour(date: Date, timezone?: string, hours?: BusinessHours): boolean;
9
+ getLocalDay(date: Date, timezone?: string): number;
10
+ }
11
+ declare function businessHoursEngine(timezone: string, hours?: BusinessHours): BusinessHoursEngine;
12
+
13
+ export { BusinessHoursEngine, businessHoursEngine };
package/dist/index.js ADDED
@@ -0,0 +1,34 @@
1
+ import { toZonedTime } from 'date-fns-tz';
2
+ import { safeTimezoneFallback } from '@multisystemsuite/timezone-engine-core';
3
+ import { createSchedulerEngine, defaultSchedulerConfig } from '@multisystemsuite/timezone-engine-scheduler';
4
+
5
+ // src/index.ts
6
+ var BusinessHoursEngine = class {
7
+ scheduler;
8
+ timezone;
9
+ constructor(timezone, hours) {
10
+ this.timezone = safeTimezoneFallback(timezone);
11
+ this.scheduler = createSchedulerEngine({
12
+ ...defaultSchedulerConfig,
13
+ defaultTimezone: this.timezone,
14
+ businessHours: hours ?? defaultSchedulerConfig.businessHours
15
+ });
16
+ }
17
+ isBusinessHour(date, timezone, hours) {
18
+ return this.scheduler.isBusinessHour(
19
+ date,
20
+ safeTimezoneFallback(timezone ?? this.timezone),
21
+ hours
22
+ );
23
+ }
24
+ getLocalDay(date, timezone) {
25
+ return toZonedTime(date, safeTimezoneFallback(timezone ?? this.timezone)).getDay();
26
+ }
27
+ };
28
+ function businessHoursEngine(timezone, hours) {
29
+ return new BusinessHoursEngine(timezone, hours);
30
+ }
31
+
32
+ export { BusinessHoursEngine, businessHoursEngine };
33
+ //# sourceMappingURL=index.js.map
34
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/index.ts"],"names":[],"mappings":";;;;;AAUO,IAAM,sBAAN,MAA0B;AAAA,EACd,SAAA;AAAA,EACA,QAAA;AAAA,EAEjB,WAAA,CAAY,UAAkB,KAAA,EAAuB;AACnD,IAAA,IAAA,CAAK,QAAA,GAAW,qBAAqB,QAAQ,CAAA;AAC7C,IAAA,IAAA,CAAK,YAAY,qBAAA,CAAsB;AAAA,MACrC,GAAG,sBAAA;AAAA,MACH,iBAAiB,IAAA,CAAK,QAAA;AAAA,MACtB,aAAA,EAAe,SAAS,sBAAA,CAAuB;AAAA,KAChD,CAAA;AAAA,EACH;AAAA,EAEA,cAAA,CAAe,IAAA,EAAY,QAAA,EAAmB,KAAA,EAAgC;AAC5E,IAAA,OAAO,KAAK,SAAA,CAAU,cAAA;AAAA,MACpB,IAAA;AAAA,MACA,oBAAA,CAAqB,QAAA,IAAY,IAAA,CAAK,QAAQ,CAAA;AAAA,MAC9C;AAAA,KACF;AAAA,EACF;AAAA,EAEA,WAAA,CAAY,MAAY,QAAA,EAA2B;AACjD,IAAA,OAAO,WAAA,CAAY,MAAM,oBAAA,CAAqB,QAAA,IAAY,KAAK,QAAQ,CAAC,EAAE,MAAA,EAAO;AAAA,EACnF;AACF;AAEO,SAAS,mBAAA,CAAoB,UAAkB,KAAA,EAA4C;AAChG,EAAA,OAAO,IAAI,mBAAA,CAAoB,QAAA,EAAU,KAAK,CAAA;AAChD","file":"index.js","sourcesContent":["import { toZonedTime } from \"date-fns-tz\";\nimport type { BusinessHours } from \"@multisystemsuite/timezone-engine-shared-types\";\nimport { safeTimezoneFallback } from \"@multisystemsuite/timezone-engine-core\";\nimport {\n createSchedulerEngine,\n defaultSchedulerConfig,\n type SchedulerEngine,\n} from \"@multisystemsuite/timezone-engine-scheduler\";\n\n/** Regional business-hours engine for enterprise workforce scheduling */\nexport class BusinessHoursEngine {\n private readonly scheduler: SchedulerEngine;\n private readonly timezone: string;\n\n constructor(timezone: string, hours?: BusinessHours) {\n this.timezone = safeTimezoneFallback(timezone);\n this.scheduler = createSchedulerEngine({\n ...defaultSchedulerConfig,\n defaultTimezone: this.timezone,\n businessHours: hours ?? defaultSchedulerConfig.businessHours,\n });\n }\n\n isBusinessHour(date: Date, timezone?: string, hours?: BusinessHours): boolean {\n return this.scheduler.isBusinessHour(\n date,\n safeTimezoneFallback(timezone ?? this.timezone),\n hours,\n );\n }\n\n getLocalDay(date: Date, timezone?: string): number {\n return toZonedTime(date, safeTimezoneFallback(timezone ?? this.timezone)).getDay();\n }\n}\n\nexport function businessHoursEngine(timezone: string, hours?: BusinessHours): BusinessHoursEngine {\n return new BusinessHoursEngine(timezone, hours);\n}\n"]}
package/package.json ADDED
@@ -0,0 +1,58 @@
1
+ {
2
+ "name": "@multisystemsuite/timezone-engine-business-hours",
3
+ "version": "2.0.0",
4
+ "description": "Regional business hours engine for @multisystemsuite/timezone-engine",
5
+ "license": "MIT",
6
+ "author": "MultiSystemSuite",
7
+ "repository": {
8
+ "type": "git",
9
+ "url": "https://github.com/multisystemsuite/timezone-engine.git",
10
+ "directory": "packages/timezone-business-hours"
11
+ },
12
+ "publishConfig": {
13
+ "access": "public"
14
+ },
15
+ "type": "module",
16
+ "main": "./dist/index.cjs",
17
+ "module": "./dist/index.js",
18
+ "types": "./dist/index.d.ts",
19
+ "exports": {
20
+ ".": {
21
+ "import": {
22
+ "types": "./dist/index.d.ts",
23
+ "default": "./dist/index.js"
24
+ },
25
+ "require": {
26
+ "types": "./dist/index.d.cts",
27
+ "default": "./dist/index.cjs"
28
+ }
29
+ }
30
+ },
31
+ "sideEffects": false,
32
+ "files": [
33
+ "dist",
34
+ "README.md"
35
+ ],
36
+ "dependencies": {
37
+ "date-fns-tz": "^3.2.0",
38
+ "@multisystemsuite/timezone-engine-core": "2.0.0",
39
+ "@multisystemsuite/timezone-engine-shared-types": "2.0.0",
40
+ "@multisystemsuite/timezone-engine-scheduler": "2.0.0"
41
+ },
42
+ "devDependencies": {
43
+ "rimraf": "^6.0.1",
44
+ "tsup": "^8.3.5",
45
+ "typescript": "^5.7.2",
46
+ "vitest": "^2.1.8"
47
+ },
48
+ "scripts": {
49
+ "build": "tsup",
50
+ "dev": "tsup --watch",
51
+ "clean": "rimraf dist",
52
+ "typecheck": "tsc --noEmit",
53
+ "lint": "eslint src",
54
+ "lint:fix": "eslint src --fix",
55
+ "test": "vitest run",
56
+ "test:coverage": "vitest run --coverage"
57
+ }
58
+ }