{"version":3,"file":"ngx-cookie.mjs","sources":["../../../projects/ngx-cookie/src/lib/tokens.ts","../../../projects/ngx-cookie/src/lib/utils.ts","../../../projects/ngx-cookie/src/lib/cookie-options.provider.ts","../../../projects/ngx-cookie/src/lib/cookie.service.ts","../../../projects/ngx-cookie/src/lib/cookie-writer.service.ts","../../../projects/ngx-cookie/src/lib/cookie.factory.ts","../../../projects/ngx-cookie/src/lib/cookie.module.ts","../../../projects/ngx-cookie/src/public-api.ts","../../../projects/ngx-cookie/src/ngx-cookie.ts"],"sourcesContent":["import { InjectionToken } from '@angular/core';\n\nimport { CookieOptions, ICookieWriterService } from './cookie.model';\n\nexport const COOKIE_OPTIONS = new InjectionToken<CookieOptions>('COOKIE_OPTIONS');\nexport const COOKIE_WRITER = new InjectionToken<ICookieWriterService>('COOKIE_WRITER');\n","import { CookieDict, CookieOptions } from './cookie.model';\n\ntype EmptyArray = never[] & { length: 0 };\ntype EmptyObject = Record<any, never>;\n\nexport function isNil(obj: unknown): obj is undefined | null {\n  return obj === undefined || obj === null;\n}\n\nexport function isPresent(obj: unknown): obj is Exclude<typeof obj, undefined | null> {\n  return !isNil(obj);\n}\n\nexport function isString(obj: unknown): obj is string {\n  return typeof obj === 'string';\n}\n\n// noinspection JSUnusedGlobalSymbols\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nexport function isEmpty(value: unknown): value is undefined | null | '' | EmptyArray | EmptyObject {\n  if (isNil(value)) {\n    return true;\n  }\n  if (value === {}) {\n    return true;\n  }\n  if (isString(value) && value.length === 0) {\n    return true;\n  }\n  if (Array.isArray(value) && value.length === 0) {\n    return true;\n  }\n  if (typeof value !== 'boolean' && !value) {\n    return true;\n  }\n  // noinspection RedundantIfStatementJS\n  if (typeof value === 'object' && Object.keys(value).length === 0 && value.constructor === Object) {\n    return true;\n  }\n  return false;\n}\n\nexport function mergeOptions(oldOptions: CookieOptions, newOptions?: CookieOptions): CookieOptions {\n  if (!newOptions) {\n    return oldOptions;\n  }\n  return {\n    path: isPresent(newOptions.path) ? newOptions.path : oldOptions.path,\n    domain: isPresent(newOptions.domain) ? newOptions.domain : oldOptions.domain,\n    expires: isPresent(newOptions.expires) ? newOptions.expires : oldOptions.expires,\n    secure: isPresent(newOptions.secure) ? newOptions.secure : oldOptions.secure,\n    sameSite: isPresent(newOptions.sameSite) ? newOptions.sameSite : oldOptions.sameSite,\n    httpOnly: isPresent(newOptions.httpOnly) ? newOptions.httpOnly : oldOptions.httpOnly,\n    storeUnencoded: isPresent(newOptions.storeUnencoded) ? newOptions.storeUnencoded : oldOptions.storeUnencoded\n  };\n}\n\nexport function parseCookieString(currentCookieString: string): CookieDict {\n  let lastCookies: CookieDict = {};\n  let lastCookieString = '';\n  let cookieArray: string[];\n  let cookie: string;\n  let i: number;\n  let index: number;\n  let name: string;\n  if (currentCookieString !== lastCookieString) {\n    lastCookieString = currentCookieString;\n    cookieArray = lastCookieString.split(';');\n    lastCookies = {};\n    for (i = 0; i < cookieArray.length; i++) {\n      cookie = cookieArray[i];\n      index = cookie.indexOf('=');\n      if (index > 0) {  // ignore nameless cookies\n        name = safeDecodeURIComponent((cookie.substring(0, index)).trim());\n        // the first value that is seen for a cookie is the most\n        // specific one.  values for the same cookie name that\n        // follow are for less specific paths.\n        if (isNil((lastCookies)[name])) {\n          lastCookies[name] = safeDecodeURIComponent((cookie.substring(index + 1)).trim());\n        }\n      }\n    }\n  }\n  return lastCookies;\n}\n\nexport function buildCookieString(name: string, value: string | undefined, options?: CookieOptions): string {\n  let expires: string | Date | undefined = options?.expires;\n  let val: string;\n  if (isNil(value)) {\n    expires = 'Thu, 01 Jan 1970 00:00:00 GMT';\n    val = '';\n  } else {\n    val = value as string;\n  }\n  if (isString(expires)) {\n    expires = new Date(expires);\n  }\n  const cookieValue = options?.storeUnencoded ? value : encodeURIComponent(val);\n  let str = encodeURIComponent(name) + '=' + cookieValue;\n  str += options?.path ? ';path=' + options.path : '';\n  str += options?.domain ? ';domain=' + options.domain : '';\n  str += expires ? ';expires=' + expires.toUTCString() : '';\n  str += options?.sameSite ? '; SameSite=' + options.sameSite : '';\n  str += options?.secure ? ';secure' : '';\n  str += options?.httpOnly ? '; HttpOnly' : '';\n\n  // per http://www.ietf.org/rfc/rfc2109.txt browser must allow at minimum:\n  // - 300 cookies\n  // - 20 cookies per unique domain\n  // - 4096 bytes per cookie\n  const cookieLength = str.length + 1;\n  if (cookieLength > 4096) {\n    console.log('Cookie \\'' + name + '\\' possibly not set or overflowed because it was too large (' + cookieLength + ' > 4096 bytes)!');\n  }\n  return str;\n}\n\nexport function safeDecodeURIComponent(str: string): string {\n  try {\n    return decodeURIComponent(str);\n  } catch (e) {\n    return str;\n  }\n}\n","import { APP_BASE_HREF } from '@angular/common';\nimport { Inject, Injectable, Injector } from '@angular/core';\n\nimport { CookieOptions } from './cookie.model';\nimport { COOKIE_OPTIONS } from './tokens';\nimport { mergeOptions } from './utils';\n\n@Injectable()\nexport class CookieOptionsProvider {\n\n  readonly options: CookieOptions;\n  private readonly defaultOptions: CookieOptions;\n\n  constructor(@Inject(COOKIE_OPTIONS) options: CookieOptions = {},\n              private injector: Injector) {\n    this.defaultOptions = {\n      path: this.injector.get(APP_BASE_HREF, '/'),\n      domain: undefined,\n      expires: undefined,\n      secure: false,\n      httpOnly: false\n    };\n    this.options = mergeOptions(this.defaultOptions, options);\n  }\n\n}\n","import { DOCUMENT } from '@angular/common';\nimport { Inject, Injectable } from '@angular/core';\nimport { CookieOptionsProvider } from './cookie-options.provider';\n\nimport { CookieDict, CookieOptions, ICookieService, ICookieWriterService } from './cookie.model';\nimport { COOKIE_WRITER } from './tokens';\nimport { isNil, isPresent, mergeOptions, parseCookieString } from './utils';\n\n@Injectable()\nexport class CookieService implements ICookieService {\n\n  protected options: CookieOptions;\n\n  constructor(@Inject(DOCUMENT) private document: any,\n              private optionsProvider: CookieOptionsProvider,\n              @Inject(COOKIE_WRITER) private cookieWriterService: ICookieWriterService) {\n    this.options = this.optionsProvider.options;\n  }\n\n  /**\n   * @description\n   * Returns if the given cookie key exists or not.\n   *\n   * @param key Id to use for lookup.\n   * @returns true if key exists, otherwise false.\n   */\n  hasKey(key: string): boolean {\n    const value = this.get(key);\n    return isPresent(value);\n  }\n\n  /**\n   * @description\n   * Returns the value of given cookie key.\n   *\n   * @param key Id to use for lookup.\n   * @returns Raw cookie value.\n   */\n  get(key: string): string | undefined {\n    return this.getAll()?.[key];\n  }\n\n  /**\n   * @description\n   * Returns the deserialized value of given cookie key.\n   *\n   * @param key Id to use for lookup.\n   * @returns Deserialized cookie value.\n   */\n  getObject(key: string): object | undefined {\n    const value = this.get(key);\n    if (isNil(value)) {\n      return undefined;\n    } else if (value === '') {\n      return {};\n    }\n    return JSON.parse(value);\n  }\n\n  /**\n   * @description\n   * Returns a key value object with all the cookies.\n   *\n   * @returns All cookies\n   */\n  getAll(): CookieDict {\n    const cookieString = this.cookieWriterService.readAllAsString();\n    return parseCookieString(cookieString);\n  }\n\n  /**\n   * @description\n   * Sets a value for given cookie key.\n   *\n   * @param key Id for the `value`.\n   * @param value Raw value to be stored.\n   * @param options (Optional) Options object.\n   */\n  put(key: string, value: string | undefined, options?: CookieOptions): void {\n    const opts = mergeOptions(this.options, options);\n    this.cookieWriterService.write(key, value, opts);\n  }\n\n  /**\n   * @description\n   * Serializes and sets a value for given cookie key.\n   *\n   * @param key Id for the `value`.\n   * @param value Value to be stored.\n   * @param options (Optional) Options object.\n   */\n  putObject(key: string, value: object, options?: CookieOptions): void {\n    this.put(key, JSON.stringify(value), options);\n  }\n\n  /**\n   * @description\n   * Remove given cookie.\n   *\n   * @param key Id of the key-value pair to delete.\n   * @param options (Optional) Options object.\n   */\n  remove(key: string, options?: CookieOptions): void {\n    this.put(key, undefined, options);\n  }\n\n  /**\n   * @description\n   * Remove all cookies.\n   */\n  removeAll(options?: CookieOptions): void {\n    const cookies = this.getAll();\n    Object.keys(cookies).forEach(key => this.remove(key, options));\n  }\n\n}\n","import { DOCUMENT } from '@angular/common';\nimport { Inject, Injectable } from '@angular/core';\n\nimport { CookieOptions, ICookieWriterService } from './cookie.model';\nimport { buildCookieString } from './utils';\n\n@Injectable()\nexport class CookieWriterService implements ICookieWriterService {\n\n  constructor(@Inject(DOCUMENT) private document: any) {}\n\n  readAllAsString(): string {\n    return this.document.cookie || '';\n  }\n\n  write(name: string, value: string | undefined, options?: CookieOptions): void {\n    this.document.cookie = buildCookieString(name, value, options);\n  }\n\n}\n","import { CookieOptionsProvider } from './cookie-options.provider';\nimport { ICookieWriterService } from './cookie.model';\nimport { CookieService } from './cookie.service';\n\nexport function cookieServiceFactory(document: Document,\n                                     cookieOptionsProvider: CookieOptionsProvider,\n                                     cookieWriterService: ICookieWriterService): CookieService {\n  return new CookieService(document, cookieOptionsProvider, cookieWriterService);\n}\n","import { DOCUMENT } from '@angular/common';\nimport { ModuleWithProviders, NgModule } from '@angular/core';\nimport { CookieWriterService } from './cookie-writer.service';\n\nimport { CookieOptions } from './cookie.model';\nimport { CookieOptionsProvider } from './cookie-options.provider';\nimport { cookieServiceFactory } from './cookie.factory';\nimport { CookieService } from './cookie.service';\nimport { COOKIE_OPTIONS, COOKIE_WRITER } from './tokens';\n\n\n@NgModule({\n  providers: [CookieOptionsProvider]\n})\nexport class CookieModule {\n\n  /**\n   * Use this method in your root module to provide the CookieService\n   */\n  static withOptions(options: CookieOptions = {}): ModuleWithProviders<CookieModule> {\n    return {\n      ngModule: CookieModule,\n      providers: [\n        {provide: COOKIE_OPTIONS, useValue: options},\n        {provide: COOKIE_WRITER, useClass: CookieWriterService},\n        {provide: CookieService, useFactory: cookieServiceFactory, deps: [DOCUMENT, CookieOptionsProvider, COOKIE_WRITER]}\n      ]\n    };\n  }\n\n  /**\n   * @deprecated use `CookieModule.withOptions()` instead\n   * Use this method in your root module to provide the CookieService\n   */\n  static forRoot(options: CookieOptions = {}): ModuleWithProviders<CookieModule> {\n    return this.withOptions(options);\n  }\n\n  /**\n   * @deprecated use `CookieModule.withOptions()` instead\n   * Use this method in your other (non root) modules to import the directive/pipe\n   */\n  static forChild(options: CookieOptions = {}): ModuleWithProviders<CookieModule> {\n    return this.withOptions(options);\n  }\n\n}\n","/*\n * Public API Surface of ngx-cookie\n */\n\nexport * from './lib/tokens';\nexport * from './lib/cookie.service';\nexport * from './lib/cookie.module';\nexport * from './lib/cookie.model';\nexport * from './lib/cookie-options.provider';\nexport * from './lib/cookie-writer.service';\nexport * from './lib/cookie.factory';\nexport * from './lib/utils';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i1.CookieOptionsProvider"],"mappings":"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"}