@sprucelabs/calendar-utils 36.1.2 → 36.1.4

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.
@@ -1,8 +1,9 @@
1
1
  import { AbstractEventEmitter } from '@sprucelabs/mercury-event-emitter';
2
2
  import { Locale, TimezoneName } from '../types/calendar.types';
3
3
  export default class LocaleImpl extends AbstractEventEmitter<LocaleContract> implements Locale {
4
+ private zoneNameByOffset;
4
5
  private offset;
5
- private currentZone?;
6
+ protected currentZone?: TimezoneName;
6
7
  private timezoneChoices;
7
8
  constructor();
8
9
  setTimezoneOffsetMinutes(offset: number): void;
@@ -17,6 +17,7 @@ import TimezoneChoiceSorter from './TimezoneChoiceSorter.js';
17
17
  export default class LocaleImpl extends AbstractEventEmitter {
18
18
  constructor() {
19
19
  super(localeContract);
20
+ this.zoneNameByOffset = {};
20
21
  this.offset = new Date().getTimezoneOffset() * -1;
21
22
  const sorter = new TimezoneChoiceSorter(this);
22
23
  this.timezoneChoices = sorter.sort(timezoneChoices);
@@ -51,12 +52,16 @@ export default class LocaleImpl extends AbstractEventEmitter {
51
52
  if (offset === 0) {
52
53
  return 'UTC';
53
54
  }
54
- return this.timezoneChoices
55
+ if (this.zoneNameByOffset[offset]) {
56
+ return this.zoneNameByOffset[offset];
57
+ }
58
+ this.zoneNameByOffset[offset] = this.timezoneChoices
55
59
  .map((t) => t.value)
56
60
  .find((name) => {
57
61
  const o = this.zoneNameToOffsetMinutes(name);
58
62
  return o === offset;
59
63
  });
64
+ return this.zoneNameByOffset[offset];
60
65
  }
61
66
  zoneNameToOffsetMinutes(name, onDate) {
62
67
  const results = getTimezoneOffset(name, onDate);
@@ -1,8 +1,9 @@
1
1
  import { AbstractEventEmitter } from '@sprucelabs/mercury-event-emitter';
2
2
  import { Locale, TimezoneName } from '../types/calendar.types';
3
3
  export default class LocaleImpl extends AbstractEventEmitter<LocaleContract> implements Locale {
4
+ private zoneNameByOffset;
4
5
  private offset;
5
- private currentZone?;
6
+ protected currentZone?: TimezoneName;
6
7
  private timezoneChoices;
7
8
  constructor();
8
9
  setTimezoneOffsetMinutes(offset: number): void;
@@ -13,6 +13,7 @@ const TimezoneChoiceSorter_1 = __importDefault(require("./TimezoneChoiceSorter")
13
13
  class LocaleImpl extends mercury_event_emitter_1.AbstractEventEmitter {
14
14
  constructor() {
15
15
  super(localeContract);
16
+ this.zoneNameByOffset = {};
16
17
  this.offset = new Date().getTimezoneOffset() * -1;
17
18
  const sorter = new TimezoneChoiceSorter_1.default(this);
18
19
  this.timezoneChoices = sorter.sort(spruce_core_schemas_1.timezoneChoices);
@@ -45,12 +46,16 @@ class LocaleImpl extends mercury_event_emitter_1.AbstractEventEmitter {
45
46
  if (offset === 0) {
46
47
  return 'UTC';
47
48
  }
48
- return this.timezoneChoices
49
+ if (this.zoneNameByOffset[offset]) {
50
+ return this.zoneNameByOffset[offset];
51
+ }
52
+ this.zoneNameByOffset[offset] = this.timezoneChoices
49
53
  .map((t) => t.value)
50
54
  .find((name) => {
51
55
  const o = this.zoneNameToOffsetMinutes(name);
52
56
  return o === offset;
53
57
  });
58
+ return this.zoneNameByOffset[offset];
54
59
  }
55
60
  zoneNameToOffsetMinutes(name, onDate) {
56
61
  const results = (0, date_fns_tz_1.getTimezoneOffset)(name, onDate);
package/package.json CHANGED
@@ -3,7 +3,7 @@
3
3
  "publishConfig": {
4
4
  "access": "public"
5
5
  },
6
- "version": "36.1.2",
6
+ "version": "36.1.4",
7
7
  "files": [
8
8
  "build/**/*",
9
9
  "!build/__tests__",
@@ -66,24 +66,24 @@
66
66
  },
67
67
  "dependencies": {
68
68
  "@sprucelabs/error": "^5.1.3",
69
- "@sprucelabs/mercury-event-emitter": "^40.1.30",
70
- "@sprucelabs/mercury-types": "^45.0.22",
71
- "@sprucelabs/schema": "^28.6.30",
72
- "@sprucelabs/spruce-core-schemas": "^38.1.21",
73
- "@sprucelabs/spruce-event-utils": "^37.0.24",
69
+ "@sprucelabs/mercury-event-emitter": "^40.1.31",
70
+ "@sprucelabs/mercury-types": "^45.0.23",
71
+ "@sprucelabs/schema": "^28.6.31",
72
+ "@sprucelabs/spruce-core-schemas": "^38.1.22",
73
+ "@sprucelabs/spruce-event-utils": "^37.0.25",
74
74
  "date-fns": "^2.30.0",
75
75
  "date-fns-tz": "^2.0.0",
76
76
  "rrule": "^2.7.2"
77
77
  },
78
78
  "devDependencies": {
79
- "@sprucelabs/esm-postbuild": "^5.0.12",
80
- "@sprucelabs/jest-json-reporter": "^7.0.45",
79
+ "@sprucelabs/esm-postbuild": "^5.0.13",
80
+ "@sprucelabs/jest-json-reporter": "^7.0.46",
81
81
  "@sprucelabs/resolve-path-aliases": "^1.1.220",
82
82
  "@sprucelabs/semantic-release": "^4.0.8",
83
83
  "@sprucelabs/test": "^7.7.448",
84
- "@sprucelabs/test-utils": "^3.4.59",
84
+ "@sprucelabs/test-utils": "^3.4.60",
85
85
  "@types/lodash": "^4.14.194",
86
- "@types/node": "^20.2.1",
86
+ "@types/node": "^20.2.3",
87
87
  "chokidar-cli": "^3.0.0",
88
88
  "concurrently": "^8.0.1",
89
89
  "eslint": "^8.41.0",