@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 +3 -0
- package/dist/index.cjs +37 -0
- package/dist/index.cjs.map +1 -0
- package/dist/index.d.cts +13 -0
- package/dist/index.d.ts +13 -0
- package/dist/index.js +34 -0
- package/dist/index.js.map +1 -0
- package/package.json +58 -0
package/README.md
ADDED
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"]}
|
package/dist/index.d.cts
ADDED
|
@@ -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.d.ts
ADDED
|
@@ -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
|
+
}
|