{"version":3,"file":"datebook.min.cjs","sources":["../../src/constants.ts","../../src/utils/time.ts","../../src/CalendarBase.ts","../node_modules/tslib/tslib.es6.js","../../src/utils/data.ts","../../src/utils/ics.ts","../../src/GoogleCalendar.ts","../../src/YahooCalendar.ts","../../src/OutlookCalendar.ts","../../src/ICalendar.ts"],"sourcesContent":["export const RECURRENCE = {\n  FREQUENCY: {\n    DAILY: 'DAILY',\n    WEEKLY: 'WEEKLY',\n    MONTHLY: 'MONTHLY',\n    YEARLY: 'YEARLY'\n  }\n}\n\nexport const FORMAT = {\n  DATE: 'YYYYMMDD',\n  TIME: 'ThhmmssZ',\n  FULL: 'YYYYMMDDThhmmssZ',\n  NO_UTC_FULL: 'YYYYMMDDThhmmss',\n  OUTLOOK_DATE: 'YYYY-MM-DD',\n  OUTLOOK_TIME: 'Thh:mm:ssZ',\n  OUTLOOK_FULL: 'YYYY-MM-DDThh:mm:ssZ'\n}\n\nexport const URL = {\n  YAHOO: 'https://calendar.yahoo.com/',\n  GOOGLE: 'https://calendar.google.com/calendar/render',\n  OUTLOOK: 'https://outlook.{{host}}.com/calendar/0/deeplink/compose'\n}\n","import { RECURRENCE, FORMAT } from '../constants'\nimport CalendarRecurrence from '../types/CalendarRecurrence'\n\n/**\n * Adds a leading zero to a single-digit string and returns a two-digit string.\n *\n * @param {number | string} n\n * @returns {string}\n */\nconst addLeadingZero = (n: number | string = ''): string => {\n  return `0${parseInt(n.toString(), 10)}`.slice(-2)\n}\n\n/**\n * Returns the duration between two given dates in hhmm format.\n *\n * @param {number} start\n * @param {number} end\n * @returns {string}\n */\nconst getDuration = (start: number, end: number): string => {\n  const seconds = Math.floor((end - start) / 1000)\n  const hours = Math.floor(seconds / 3600)\n  const mins = ((seconds / 3600) % 1) * 60\n\n  return `${addLeadingZero(hours)}${addLeadingZero(mins)}`\n}\n\n/**\n * Returns the number of hours between two given dates.\n *\n * @param {number} start\n * @param {number} end\n * @returns {number}\n */\nconst getHoursDiff = (start: number, end: number): number => {\n  const seconds = Math.floor((end - start) / 1000)\n\n  return Math.floor(seconds / 3600)\n}\n\n/**\n * Computes the number of days a recurrence will last.\n *\n * @param {CalendarRecurrence} recurrence\n * @returns {number}\n */\nconst getRecurrenceLengthDays = (recurrence: CalendarRecurrence): number => {\n  const { frequency, interval } = recurrence\n  const { FREQUENCY } = RECURRENCE\n\n  if (interval) {\n    switch (frequency) {\n      case FREQUENCY.YEARLY:\n        return interval * 365.25\n      case FREQUENCY.MONTHLY:\n        return interval * 30.42 // avg days in a year\n      case FREQUENCY.WEEKLY:\n        return interval * 7\n      default:\n        return interval // daily\n    }\n  }\n\n  // if no frequency is specified, set an arbitrarily-long recurrence end\n  return 365.25 * 100 // 100 years\n}\n\n/**\n * Formats the given JS Date() object to the given format.\n * Format defaults to: YYYYMMDDTHHMMss\n *\n * @param {Date} [d = new Date()]\n * @param {string} format\n * @returns {string}\n */\nconst formatDate = (d: Date = new Date(), format: string): string => {\n  const dateValues: Record<string, string | number> = {\n    YYYY: d.getUTCFullYear(),\n    MM: addLeadingZero(d.getUTCMonth() + 1),\n    DD: addLeadingZero(d.getUTCDate()),\n    hh: addLeadingZero(d.getUTCHours()),\n    mm: addLeadingZero(d.getUTCMinutes()),\n    ss: addLeadingZero(d.getUTCSeconds())\n  }\n\n  return Object\n    .keys(dateValues)\n    .reduce((date: string, key: string): string => {\n      return date.replace(key, dateValues[key].toString())\n    }, format)\n}\n\n\n/**\n * Formats the given JS Date() object to the given format, not using UTC\n * Format defaults to: YYYYMMDDTHHMMss\n *\n * @param {Date} [d = new Date()]\n * @param {string} format\n * @returns {string}\n */\nconst formatDateNoUtc = (d: Date = new Date(), format: string): string => {\n  const dateValues: Record<string, string | number> = {\n    YYYY: d.getFullYear(),\n    MM: addLeadingZero(d.getMonth() + 1),\n    DD: addLeadingZero(d.getDate()),\n    hh: addLeadingZero(d.getHours()),\n    mm: addLeadingZero(d.getMinutes()),\n    ss: addLeadingZero(d.getSeconds())\n  }\n\n  return Object\n    .keys(dateValues)\n    .reduce((date: string, key: string): string => {\n      return date.replace(key, dateValues[key].toString())\n    }, format)\n}\n\n/**\n * Returns the current timestamp.\n *\n * @returns {string}\n */\nconst getTimeCreated = (): string => {\n  return formatDate(new Date(), FORMAT.FULL)\n}\n\n/**\n * Increments dates by the given number of days.\n * This will account for edge cases, such as leap years.\n *\n * @param {Date} dateInput - date to increment\n * @param {number} days - number of days\n * @returns {Date}\n */\nconst incrementDate = (dateInput: Date, days: number): Date => {\n  const additionalTime = days * 86400000\n  const newDate = new Date()\n\n  newDate.setTime(dateInput.getTime() + additionalTime)\n\n  return newDate\n}\n\nexport default {\n  addLeadingZero,\n  getDuration,\n  getHoursDiff,\n  getRecurrenceLengthDays,\n  formatDate,\n  formatDateNoUtc,\n  getTimeCreated,\n  incrementDate\n}\n","import ICalendarBase from './types/ICalendarBase'\nimport CalendarRecurrence from './types/CalendarRecurrence'\nimport CalendarOptions from './types/CalendarOptions'\nimport time from './utils/time'\nimport CalendarAttendee from './types/CalendarAttendee'\n\n/**\n * Base calendar class. This class can be extended to add new calendar services.\n */\nabstract class CalendarBase implements ICalendarBase {\n  /** True if the event is one that spans the entire day. */\n  protected isAllDay = false\n\n  /** Event description. */\n  protected description = ''\n\n  /** Event title. */\n  protected title = ''\n\n  /** Event physical location. */\n  protected location = ''\n\n  /** Start time of the event. */\n  protected start = new Date()\n\n  /** End time of the event. */\n  protected end = new Date()\n\n  /** Event recurrence specification. See {@link CalendarRecurrence} */\n  protected recurrence?: CalendarRecurrence\n\n  /** Calendar service query string params. */\n  protected params: Record<string, string | null> = {}\n\n  /** Array of event attendees. See {@link CalendarAttendee} */\n  protected attendees: CalendarAttendee[] = []\n\n  /**\n   * Constructor.\n   *\n   * @param {CalendarOptions} options\n   */\n  constructor (options: CalendarOptions) {\n    this.setText(options)\n    this.setTimestamps(options)\n    this.setAttendees(options)\n  }\n\n  /**\n   * Sets the description, title and location.\n   *\n   * @param {CalendarOptions} options\n   */\n  protected setText = (options: CalendarOptions): void => {\n    this.description = options.description || ''\n    this.title = options.title || ''\n    this.location = options.location || ''\n  }\n\n  /**\n   * Sets the time and recurrence parameters.\n   *\n   * @param {CalendarOptions} options\n   */\n  protected setTimestamps = (options: CalendarOptions): void => {\n    this.isAllDay = !options.end\n    this.start = options.start\n\n    // if no end date is specified, make the end date exactly 1 day from the start date\n    this.end = options.end || time.incrementDate(this.start, 1)\n\n    this.recurrence = options.recurrence\n  }\n\n  /**\n   * Sets the attendees array if attendees are supplied.\n   *\n   * @param {CalendarOptions} options\n   */\n  protected setAttendees (options: CalendarOptions): void {\n    this.attendees = Array.isArray(options.attendees) ? options.attendees : []\n  }\n\n  /**\n   * Sets additional calendar service properties.\n   * May be used to override existing query string params if necessary.\n   *\n   * @param {string} key\n   * @param {string | null} value\n   * @returns {CalendarBase}\n   */\n  public setParam = (key: string, value: string | null): this => {\n    this.params[key] = value\n\n    return this\n  }\n\n  /** Sets base query string/ICS params. */\n  protected abstract setInitialParams (): void\n\n  /** Renders the URL/ICS file data. */\n  public abstract render (): string\n}\n\nexport default CalendarBase\n","/******************************************************************************\r\nCopyright (c) Microsoft Corporation.\r\n\r\nPermission to use, copy, modify, and/or distribute this software for any\r\npurpose with or without fee is hereby granted.\r\n\r\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\r\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\r\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\r\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\r\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\r\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\r\nPERFORMANCE OF THIS SOFTWARE.\r\n***************************************************************************** */\r\n/* global Reflect, Promise */\r\n\r\nvar extendStatics = function(d, b) {\r\n    extendStatics = Object.setPrototypeOf ||\r\n        ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n        function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\r\n    return extendStatics(d, b);\r\n};\r\n\r\nexport function __extends(d, b) {\r\n    if (typeof b !== \"function\" && b !== null)\r\n        throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\r\n    extendStatics(d, b);\r\n    function __() { this.constructor = d; }\r\n    d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n}\r\n\r\nexport var __assign = function() {\r\n    __assign = Object.assign || function __assign(t) {\r\n        for (var s, i = 1, n = arguments.length; i < n; i++) {\r\n            s = arguments[i];\r\n            for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\r\n        }\r\n        return t;\r\n    }\r\n    return __assign.apply(this, arguments);\r\n}\r\n\r\nexport function __rest(s, e) {\r\n    var t = {};\r\n    for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\r\n        t[p] = s[p];\r\n    if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\r\n        for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\r\n            if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\r\n                t[p[i]] = s[p[i]];\r\n        }\r\n    return t;\r\n}\r\n\r\nexport function __decorate(decorators, target, key, desc) {\r\n    var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\r\n    if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\r\n    else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\r\n    return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n}\r\n\r\nexport function __param(paramIndex, decorator) {\r\n    return function (target, key) { decorator(target, key, paramIndex); }\r\n}\r\n\r\nexport function __metadata(metadataKey, metadataValue) {\r\n    if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(metadataKey, metadataValue);\r\n}\r\n\r\nexport function __awaiter(thisArg, _arguments, P, generator) {\r\n    function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\r\n    return new (P || (P = Promise))(function (resolve, reject) {\r\n        function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\r\n        function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\r\n        function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\r\n        step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n    });\r\n}\r\n\r\nexport function __generator(thisArg, body) {\r\n    var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\r\n    return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\r\n    function verb(n) { return function (v) { return step([n, v]); }; }\r\n    function step(op) {\r\n        if (f) throw new TypeError(\"Generator is already executing.\");\r\n        while (g && (g = 0, op[0] && (_ = 0)), _) try {\r\n            if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\r\n            if (y = 0, t) op = [op[0] & 2, t.value];\r\n            switch (op[0]) {\r\n                case 0: case 1: t = op; break;\r\n                case 4: _.label++; return { value: op[1], done: false };\r\n                case 5: _.label++; y = op[1]; op = [0]; continue;\r\n                case 7: op = _.ops.pop(); _.trys.pop(); continue;\r\n                default:\r\n                    if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\r\n                    if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\r\n                    if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\r\n                    if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\r\n                    if (t[2]) _.ops.pop();\r\n                    _.trys.pop(); continue;\r\n            }\r\n            op = body.call(thisArg, _);\r\n        } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\r\n        if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\r\n    }\r\n}\r\n\r\nexport var __createBinding = Object.create ? (function(o, m, k, k2) {\r\n    if (k2 === undefined) k2 = k;\r\n    var desc = Object.getOwnPropertyDescriptor(m, k);\r\n    if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\r\n        desc = { enumerable: true, get: function() { return m[k]; } };\r\n    }\r\n    Object.defineProperty(o, k2, desc);\r\n}) : (function(o, m, k, k2) {\r\n    if (k2 === undefined) k2 = k;\r\n    o[k2] = m[k];\r\n});\r\n\r\nexport function __exportStar(m, o) {\r\n    for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(o, p)) __createBinding(o, m, p);\r\n}\r\n\r\nexport function __values(o) {\r\n    var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\r\n    if (m) return m.call(o);\r\n    if (o && typeof o.length === \"number\") return {\r\n        next: function () {\r\n            if (o && i >= o.length) o = void 0;\r\n            return { value: o && o[i++], done: !o };\r\n        }\r\n    };\r\n    throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\r\n}\r\n\r\nexport function __read(o, n) {\r\n    var m = typeof Symbol === \"function\" && o[Symbol.iterator];\r\n    if (!m) return o;\r\n    var i = m.call(o), r, ar = [], e;\r\n    try {\r\n        while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\r\n    }\r\n    catch (error) { e = { error: error }; }\r\n    finally {\r\n        try {\r\n            if (r && !r.done && (m = i[\"return\"])) m.call(i);\r\n        }\r\n        finally { if (e) throw e.error; }\r\n    }\r\n    return ar;\r\n}\r\n\r\n/** @deprecated */\r\nexport function __spread() {\r\n    for (var ar = [], i = 0; i < arguments.length; i++)\r\n        ar = ar.concat(__read(arguments[i]));\r\n    return ar;\r\n}\r\n\r\n/** @deprecated */\r\nexport function __spreadArrays() {\r\n    for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;\r\n    for (var r = Array(s), k = 0, i = 0; i < il; i++)\r\n        for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)\r\n            r[k] = a[j];\r\n    return r;\r\n}\r\n\r\nexport function __spreadArray(to, from, pack) {\r\n    if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {\r\n        if (ar || !(i in from)) {\r\n            if (!ar) ar = Array.prototype.slice.call(from, 0, i);\r\n            ar[i] = from[i];\r\n        }\r\n    }\r\n    return to.concat(ar || Array.prototype.slice.call(from));\r\n}\r\n\r\nexport function __await(v) {\r\n    return this instanceof __await ? (this.v = v, this) : new __await(v);\r\n}\r\n\r\nexport function __asyncGenerator(thisArg, _arguments, generator) {\r\n    if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n    var g = generator.apply(thisArg, _arguments || []), i, q = [];\r\n    return i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i;\r\n    function verb(n) { if (g[n]) i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; }\r\n    function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } }\r\n    function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); }\r\n    function fulfill(value) { resume(\"next\", value); }\r\n    function reject(value) { resume(\"throw\", value); }\r\n    function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }\r\n}\r\n\r\nexport function __asyncDelegator(o) {\r\n    var i, p;\r\n    return i = {}, verb(\"next\"), verb(\"throw\", function (e) { throw e; }), verb(\"return\"), i[Symbol.iterator] = function () { return this; }, i;\r\n    function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: n === \"return\" } : f ? f(v) : v; } : f; }\r\n}\r\n\r\nexport function __asyncValues(o) {\r\n    if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n    var m = o[Symbol.asyncIterator], i;\r\n    return m ? m.call(o) : (o = typeof __values === \"function\" ? __values(o) : o[Symbol.iterator](), i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i);\r\n    function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }\r\n    function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }\r\n}\r\n\r\nexport function __makeTemplateObject(cooked, raw) {\r\n    if (Object.defineProperty) { Object.defineProperty(cooked, \"raw\", { value: raw }); } else { cooked.raw = raw; }\r\n    return cooked;\r\n};\r\n\r\nvar __setModuleDefault = Object.create ? (function(o, v) {\r\n    Object.defineProperty(o, \"default\", { enumerable: true, value: v });\r\n}) : function(o, v) {\r\n    o[\"default\"] = v;\r\n};\r\n\r\nexport function __importStar(mod) {\r\n    if (mod && mod.__esModule) return mod;\r\n    var result = {};\r\n    if (mod != null) for (var k in mod) if (k !== \"default\" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);\r\n    __setModuleDefault(result, mod);\r\n    return result;\r\n}\r\n\r\nexport function __importDefault(mod) {\r\n    return (mod && mod.__esModule) ? mod : { default: mod };\r\n}\r\n\r\nexport function __classPrivateFieldGet(receiver, state, kind, f) {\r\n    if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a getter\");\r\n    if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot read private member from an object whose class did not declare it\");\r\n    return kind === \"m\" ? f : kind === \"a\" ? f.call(receiver) : f ? f.value : state.get(receiver);\r\n}\r\n\r\nexport function __classPrivateFieldSet(receiver, state, value, kind, f) {\r\n    if (kind === \"m\") throw new TypeError(\"Private method is not writable\");\r\n    if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a setter\");\r\n    if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot write private member to an object whose class did not declare it\");\r\n    return (kind === \"a\" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;\r\n}\r\n\r\nexport function __classPrivateFieldIn(state, receiver) {\r\n    if (receiver === null || (typeof receiver !== \"object\" && typeof receiver !== \"function\")) throw new TypeError(\"Cannot use 'in' operator on non-object\");\r\n    return typeof state === \"function\" ? receiver === state : state.has(receiver);\r\n}\r\n","import CalendarAttendee from '../types/CalendarAttendee'\n\n/**\n * Creates a param string from a flat key-value pair.\n *\n * @param {Record<string, string>} params\n * @param {string} [delimiter = ';']\n * @param {Function} [transformFn] - transformation function to be applied to each param\n * @returns {string}\n */\nconst toParamString = (\n  params: Record<string, string>,\n  delimiter = ';',\n  transformFn: (s: string) => string = s => s\n): string => {\n  const paramString = []\n\n  for (const key in params) {\n    if (params.hasOwnProperty(key) && params[key] !== undefined) {\n      paramString.push(`${key}=${transformFn(params[key])}`)\n    }\n  }\n\n  return paramString.join(delimiter)\n}\n\n/**\n * Creates a query string from a flat key-value pair.\n *\n * @param {Record<string, string | null>} params\n * @returns {string}\n */\nconst toQueryString = (params: Record<string, string | null>): string => {\n  // filter the record set to remove null values\n  const filteredParams = Object\n    .keys(params)\n    .filter(p => params[p] !== null)\n    .reduce((p: Record<string, string>, k: string) => ({\n      ...p,\n      [k]: params[k] as string\n    }), {})\n\n  return toParamString(filteredParams, '&', encodeURIComponent)\n}\n\n/**\n * Creates an ICS param string from a flat key-value pair.\n *\n * @param {Record<string, string>} params\n * @returns {string}\n */\nconst toIcsParamString = (params: Record<string, string>): string => {\n  return toParamString(params, ';')\n}\n\n/**\n * Renders a comma-separated string of mailto values.\n * (e.g., 'John Doe <john@doe.com>,Jane Doe <jane@doe.com>')\n *\n * @param {CalendarAttendee[]} attendees\n * @returns {string[]}\n */\nconst toMailtoList = (attendees: CalendarAttendee[]): string[] => {\n  return attendees\n    .map(({ email, name }) => {\n      return name\n        ? `${name} <${email}>`\n        : email\n    })\n}\n\n/**\n * Converts the given string to ProperCase.\n *\n * @param {string} s\n * @returns {string}\n */\nconst toProperCase = (s: string): string => {\n  return [\n    s[0].toUpperCase(),\n    s.slice(-s.length + 1).toLowerCase()\n  ].join('')\n}\n\nexport default {\n  toParamString,\n  toQueryString,\n  toIcsParamString,\n  toMailtoList,\n  toProperCase\n}\n","import data from './data'\nimport time from './time'\nimport CalendarRecurrence from '../types/CalendarRecurrence'\nimport { FORMAT } from '../constants'\n\n/**\n * Removes line breaks from a string. Returns an empty string if falsy.\n *\n * @param {string} [str = ''] - string to sanitize\n * @returns {string}\n */\nconst formatText = (str = ''): string => {\n  return str\n    .replace(/\\\\/g, '\\\\\\\\')\n    .replace(/\\n/g, '\\\\n')\n    .replace(/[,;]/g, '\\\\$&')\n}\n\n/**\n * Returns a random base 36 hash for iCal UID.\n *\n * @returns {string}\n */\nconst getUid = (): string => {\n  return Math.random().toString(36).substr(2)\n}\n\n/**\n * Returns the hostname for usage in `PRODID`. Returns `datebook` in Node.js.\n *\n * @returns {string}\n */\nconst getProdId = (): string => {\n  return typeof window !== 'undefined'\n    ? window.location.host\n    : 'datebook'\n}\n\n/**\n * Converts the given recurrence options to RFC????\n *\n * @param {CalendarRecurrence} recurrence\n * @returns {string}\n */\nconst getRrule = (recurrence: CalendarRecurrence): string => {\n  const rrule: Record<string, any> = {\n    FREQ: recurrence.frequency,\n    INTERVAL: recurrence.interval?.toString(),\n    COUNT: recurrence.count?.toString(),\n    WKST: recurrence.weekstart,\n    BYDAY: recurrence.weekdays,\n    BYMONTHDAY: recurrence.monthdays\n  }\n\n  if (recurrence.end) {\n    rrule.UNTIL = time.formatDate(recurrence.end, FORMAT.FULL)\n  }\n\n  return data.toIcsParamString(rrule)\n}\n\nexport default {\n  formatText,\n  getUid,\n  getProdId,\n  getRrule\n}\n","import CalendarBase from './CalendarBase'\nimport data from './utils/data'\nimport ics from './utils/ics'\nimport time from './utils/time'\nimport { FORMAT, URL } from './constants'\nimport CalendarOptions from './types/CalendarOptions'\n\n/**\n * Generates a Google Calendar url.\n */\nexport default class GoogleCalendar extends CalendarBase {\n  constructor (opts: CalendarOptions) {\n    super(opts)\n    this.setInitialParams()\n  }\n\n  /**\n   * Sets the basic properties for the calendar instance.\n   */\n  protected setInitialParams = (): void => {\n    let timestampFormat = FORMAT.DATE\n\n    if (!this.isAllDay) {\n      timestampFormat += FORMAT.TIME\n    }\n\n    const dates = [\n      time.formatDate(this.start, timestampFormat),\n      time.formatDate(this.end, timestampFormat)\n    ].join('/')\n\n    this\n      .setParam('action', 'TEMPLATE')\n      .setParam('dates', dates)\n      .setParam('text', this.title)\n      .setParam('details', this.description)\n      .setParam('location', this.location)\n      .setParam('allday', this.isAllDay.toString())\n\n    if (this.recurrence) {\n      this.setParam('recur', `RRULE:${ics.getRrule(this.recurrence)}`)\n    }\n\n    if (this.attendees.length > 0) {\n      this.setParam('add', data.toMailtoList(this.attendees).join(','))\n    }\n  }\n\n  /**\n   * Generates the Google Calendar url.\n   *\n   * @returns {string}\n   */\n  public render = (): string => {\n    const baseUrl = URL.GOOGLE\n    const queryString = data.toQueryString(this.params)\n\n    return `${baseUrl}?${queryString}`\n  }\n}\n","import CalendarBase from './CalendarBase'\nimport { URL, FORMAT } from './constants'\nimport data from './utils/data'\nimport time from './utils/time'\nimport CalendarOptions from './types/CalendarOptions'\n\n/**\n * Generates a Yahoo! Calendar url.\n *\n * @remark Yahoo! Calendar's support for recurrence is limited to only the interval and frequency.\n */\nexport default class YahooCalendar extends CalendarBase {\n  constructor (opts: CalendarOptions) {\n    super(opts)\n    this.setInitialParams()\n  }\n\n  /**\n   * Sets the basic properties for the calendar instance.\n   */\n  protected setInitialParams = (): void => {\n    this\n      .setParam('v', '60') // version number; must be 60\n      .setParam('title', this.title)\n      .setParam('desc', this.description)\n      .setParam('in_loc', this.location)\n\n    this.setTimeParams()\n\n    if (this.attendees.length > 0) {\n      this.setParam('inv_list', data.toMailtoList(this.attendees).join(','))\n    }\n  }\n\n  /**\n   * Sets the start/end/allday parameters.\n   */\n  private setTimeParams = (): void => {\n    if (this.isAllDay) {\n      this\n        .setParam('dur', 'allday')\n        .setParam('st', time.formatDateNoUtc(this.start, FORMAT.DATE))\n    } else {\n      this.setParam('st', time.formatDateNoUtc(this.start, FORMAT.NO_UTC_FULL))\n\n      if (time.getHoursDiff(this.start.getTime(), this.end.getTime()) > 99) {\n        // Yahoo only supports up to 99 hours, so we are forced to specify the end time instead of the duration\n        this.setParam('et', time.formatDateNoUtc(this.end, FORMAT.NO_UTC_FULL))\n      } else {\n        // we prefer specifying duration in lieu of end time, because apparently Yahoo's end time is buggy w.r.t. timezones\n        this.setParam('dur', time.getDuration(this.start.getTime(), this.end.getTime()))\n      }\n    }\n  }\n\n  /**\n   * Generates the Yahoo! Calendar data.\n   *\n   * @returns {string}\n   */\n  public render = (): string => {\n    const baseUrl = URL.YAHOO\n    const queryString = data.toQueryString(this.params)\n\n    return `${baseUrl}?${queryString}`\n  }\n}\n","import CalendarBase from './CalendarBase'\nimport { FORMAT, URL } from './constants'\nimport data from './utils/data'\nimport time  from './utils/time'\nimport CalendarOptions from './types/CalendarOptions'\n\n/**\n * Generates an Outlook Calendar url.\n *\n * @remark Outlook Calendar's query string params do not support recurrence.\n */\nexport default class OutlookCalendar extends CalendarBase {\n  /** Base URL for the host service. */\n  private baseUrl: string = URL.OUTLOOK\n\n  constructor (opts: CalendarOptions) {\n    super(opts)\n    this.setInitialParams()\n    this.setHost('live')\n  }\n\n  /**\n   * Sets the basic properties for the calendar instance.\n   */\n  protected setInitialParams = (): void => {\n    let timestampFormat = FORMAT.OUTLOOK_DATE\n\n    if (!this.isAllDay) {\n      timestampFormat += FORMAT.OUTLOOK_TIME\n    }\n\n    this\n      .setParam('rru', 'addevent')\n      .setParam('path', '/calendar/action/compose')\n      .setParam('startdt', time.formatDate(this.start, timestampFormat))\n      .setParam('enddt', time.formatDate(this.end, timestampFormat))\n      .setParam('subject', this.title)\n      .setParam('body', this.description)\n      .setParam('location', this.location)\n      .setParam('allday', this.isAllDay.toString())\n\n    if (this.attendees.length > 0) {\n      this.setParam('to', data.toMailtoList(this.attendees).join(','))\n    }\n  }\n\n  /**\n   * Sets the host service type. The default host for Outlook is **`live`**.\n   *\n   * @param {string} host - `live` (for personal accounts) or `office` (for Office365)\n   * @returns {OutlookCalendar}\n   */\n  public setHost = (host: string): this => {\n    if (['live', 'office'].includes(host)) {\n      this.baseUrl = URL.OUTLOOK.replace('{{host}}', host)\n    }\n\n    return this\n  }\n\n  /**\n   * Generates the Outlook url.\n   *\n   * @returns {string}\n   */\n  public render = (): string => {\n    const queryString = data.toQueryString(this.params)\n\n    return `${this.baseUrl}?${queryString}`\n  }\n}\n","import CalendarBase from './CalendarBase'\nimport { FORMAT } from './constants'\nimport data from './utils/data'\nimport ics from './utils/ics'\nimport time from './utils/time'\nimport CalendarOptions from './types/CalendarOptions'\nimport ICSAlarm from './types/ICSAlarm'\nimport ICSAttendeeOptions from './types/ICSAttendeeOptions'\nimport ICSDuration from './types/ICSDuration'\nimport ICSPropertyValue from './types/ICSPropertyValue'\n\n/**\n * Renders ICS file content.\n */\nexport default class ICalendar extends CalendarBase {\n  /** List of additional ICalendar events to add. */\n  private additionalEvents: ICalendar[] = []\n\n  /** List of VEVENT property-value entries */\n  public properties: string[] = []\n\n  /** Key-value pair of basic calendar properties. */\n  private meta: Record<string, string> = {}\n\n  constructor (opts: CalendarOptions) {\n    super(opts)\n    this.setInitialParams()\n  }\n\n  /**\n   * Sets the basic properties for the calendar instance.\n   */\n  protected setInitialParams = (): void => {\n    this\n      .setMeta('UID', ics.getUid())\n      .setMeta('DTSTAMP', time.getTimeCreated())\n      .addProperty('CLASS', 'PUBLIC')\n      .addProperty('DESCRIPTION', ics.formatText(this.description))\n      .addProperty('LOCATION', ics.formatText(this.location))\n      .addProperty('SUMMARY', ics.formatText(this.title))\n      .addProperty('TRANSP', 'TRANSPARENT')\n\n    if (this.isAllDay) {\n      // for all-day events, omit the time and just place dates\n      this\n        .addProperty('DTSTART;VALUE=DATE', time.formatDateNoUtc(this.start, FORMAT.DATE))\n        .addProperty('DTEND;VALUE=DATE', time.formatDateNoUtc(time.incrementDate(this.start, 1), FORMAT.DATE))\n    } else {\n      // otherwise, set the full start and end dates\n      this\n        .addProperty('DTSTART', time.formatDate(this.start, FORMAT.FULL))\n        .addProperty('DTEND', time.formatDate(this.end, FORMAT.FULL))\n    }\n\n    if (this.recurrence) {\n      this.addProperty('RRULE', ics.getRrule(this.recurrence))\n    }\n\n    if (this.attendees.length > 0) {\n      this\n        .attendees\n        .forEach(({ email, name, icsOptions = {} }) => {\n          const params = this.getAttendeeParams(icsOptions, name)\n          const mailto = `MAILTO:${email}`\n\n          this.addProperty(params, mailto)\n        })\n    }\n  }\n\n  /**\n   * Generates the ATTENDEE property param based on user-specified options and the attendee name.\n   *\n   * @param {ICSAttendeeOptions} options\n   * @param {string} name\n   * @returns {string}\n   */\n  private getAttendeeParams = (options: ICSAttendeeOptions, name?: string): string => {\n    const params: Record<string, string> = {}\n\n    if (name) params['CN'] = name\n    if (options.delegatedFrom) params['DELEGATED-FROM'] = options.delegatedFrom\n    if (options.partStat) params['PARTSTAT'] = options.partStat\n    if (options.role) params['ROLE'] = options.role\n    if (options.sentBy) params['SENT-BY'] = options.sentBy\n\n    params['RSVP'] = options.rsvp ? 'TRUE' : 'FALSE'\n\n    const paramString = data.toParamString(params, ';')\n\n    return `ATTENDEE;${paramString}`\n  }\n\n  /**\n   * Generates a valid ICS alarm duration.\n   *\n   * @example getAlarmDuration({ minutes: 3, seconds: 2 }) -> PT3M2S\n   * @param {ICSDuration} duration\n   * @returns {string}\n   */\n  private getAlarmDuration = (duration: ICSDuration): string => {\n    const features = [\n      `${duration.weeks}W`,\n      `${duration.days}D`,\n      `${duration.hours}H`,\n      `${duration.minutes}M`,\n      `${duration.seconds}S`\n    ].filter((s: string) => /^[0-9]+[A-Z]$/.exec(s)) // exclude zero-duration features\n\n    features.unshift(duration.after ? 'PT' : '-PT')\n\n    return features.join('')\n  }\n\n  /**\n   * Returns the iCalendar meta properties, formatted as VEVENT entry lines.\n   *\n   * @returns {string[]}\n   */\n  public getMeta = (): string[] => {\n    return Object\n      .keys(this.meta)\n      .map((key: string) => {\n        return `${key}:${this.meta[key]}`\n      })\n  }\n\n  /**\n   * Sets iCalendar meta properties, such as UID, DTSTAMP, etc.\n   *\n   * @param {string} key\n   * @param {string} value\n   * @returns {ICalendar}\n   */\n  public setMeta = (key: string, value: string): this => {\n    this.meta[key] = value\n\n    return this\n  }\n\n  /**\n   * Adds the given event to the same `.ics` file instance.\n   *\n   * @param {ICalendar} event\n   * @returns {ICalendar}\n   */\n  public addEvent = (event: ICalendar): this => {\n    this.additionalEvents.push(event)\n\n    return this\n  }\n\n  /**\n   * Adds any additional desired iCalendar property having the given key-value pair to the instance.\n   *\n   * @param {Alarm} alarm\n   * @returns {ICalendar}\n   */\n  public addProperty = (key: string, value: ICSPropertyValue): this => {\n    if (typeof value === 'object') {\n      this.properties.push(`BEGIN:${key}`)\n\n        for (const k in value) {\n          this.addProperty(k, value[k])\n        }\n\n        this.properties.push(`END:${key}`)\n    } else {\n      this.properties.push(`${key}:${value.toString()}`)\n    }\n\n    return this\n  }\n\n  /**\n   * Adds an alarm. Multiple different alarms may be added to a single instance.\n   *\n   * @param {Alarm} alarm\n   * @returns {ICalendar}\n   */\n  public addAlarm = (alarm: ICSAlarm): this => {\n    const value: ICSPropertyValue = {\n      ACTION: alarm.action\n    }\n\n    if (alarm.description) value.DESCRIPTION = ics.formatText(alarm.description)\n    if (alarm.summary) value.SUMMARY = ics.formatText(alarm.summary)\n    if (alarm.duration) value.DURATION = this.getAlarmDuration(alarm.duration)\n    if (alarm.repeat) value.REPEAT = alarm.repeat\n    if (alarm.attach) {\n      const key = alarm.attach.params\n        ? `ATTACH;${alarm.attach.params}`\n        : 'ATTACH'\n\n      value[key] = alarm.attach.url\n    }\n    if (alarm.trigger instanceof Date) {\n      value['TRIGGER;VALUE=DATE-TIME'] = time.formatDate(alarm.trigger, FORMAT.FULL)\n    } else {\n      value['TRIGGER'] = this.getAlarmDuration(alarm.trigger)\n    }\n\n    return this.addProperty('VALARM', value)\n  }\n\n  /**\n   * Generates the iCalendar data.\n   *\n   * @returns {string}\n   */\n  public render = (): string => {\n    const events = [\n      this,\n      ...this.additionalEvents\n    ]\n\n    const vEvents = events.reduce((properties: string[], calendar: ICalendar) => [\n      ...properties,\n      'BEGIN:VEVENT',\n      ...calendar.properties,\n      ...calendar.getMeta(),\n      'END:VEVENT'\n    ], [])\n\n    return [\n      'BEGIN:VCALENDAR',\n      'VERSION:2.0',\n      ...vEvents,\n      `PRODID:${ics.getProdId()}`,\n      'END:VCALENDAR'\n    ].join('\\n')\n  }\n}\n"],"names":[],"mappings":"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"}