diff options
Diffstat (limited to 'node_modules/luxon/src/impl/zoneUtil.js')
| -rw-r--r-- | node_modules/luxon/src/impl/zoneUtil.js | 34 |
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); + } +} |
