summaryrefslogtreecommitdiff
path: root/node_modules/luxon/src/impl/zoneUtil.js
diff options
context:
space:
mode:
Diffstat (limited to 'node_modules/luxon/src/impl/zoneUtil.js')
-rw-r--r--node_modules/luxon/src/impl/zoneUtil.js34
1 files changed, 34 insertions, 0 deletions
diff --git a/node_modules/luxon/src/impl/zoneUtil.js b/node_modules/luxon/src/impl/zoneUtil.js
new file mode 100644
index 0000000..c3151a7
--- /dev/null
+++ b/node_modules/luxon/src/impl/zoneUtil.js
@@ -0,0 +1,34 @@
+/**
+ * @private
+ */
+
+import Zone from "../zone.js";
+import IANAZone from "../zones/IANAZone.js";
+import FixedOffsetZone from "../zones/fixedOffsetZone.js";
+import InvalidZone from "../zones/invalidZone.js";
+
+import { isUndefined, isString, isNumber } from "./util.js";
+import SystemZone from "../zones/systemZone.js";
+
+export function normalizeZone(input, defaultZone) {
+ let offset;
+ if (isUndefined(input) || input === null) {
+ return defaultZone;
+ } else if (input instanceof Zone) {
+ return input;
+ } else if (isString(input)) {
+ const lowered = input.toLowerCase();
+ if (lowered === "default") return defaultZone;
+ else if (lowered === "local" || lowered === "system") return SystemZone.instance;
+ else if (lowered === "utc" || lowered === "gmt") return FixedOffsetZone.utcInstance;
+ else return FixedOffsetZone.parseSpecifier(lowered) || IANAZone.create(input);
+ } else if (isNumber(input)) {
+ return FixedOffsetZone.instance(input);
+ } else if (typeof input === "object" && "offset" in input && typeof input.offset === "function") {
+ // This is dumb, but the instanceof check above doesn't seem to really work
+ // so we're duck checking it
+ return input;
+ } else {
+ return new InvalidZone(input);
+ }
+}