{"version":3,"sources":["../src/index.ts"],"sourcesContent":["/**\n * Based on https://gist.github.com/Sauerstoffdioxid/2a0206da9f44dde1fdfce290f38d2703\n */\n\nimport { isBoolean, isNull, isNumber, isString, isUndefined, isURL } from '@deox/utils/predicate';\n\nconst HOSTS_REGEX = /^(https?:)?(\\/\\/)[^/]*.(googleusercontent\\.com|blogspot\\.com)/;\nconst PARAMS_REGEX = /[^/]+(?=\\/[^/]+\\.[^/?]+(?:\\?|$))|(?<==)[^=&?/]+(?=\\?|$)/;\nconst PARAM_REGEX =\n  /^(rj|rp|rw|rwa|rg|rh|nw|h|g|k|x|y|z|a|d|b|r|n|s|c|o|p|cc|dv|vm|no|ip|sm|fg|pg|ft|ng|lo|fv|ci|al|df|fh|pf|pp|gd|il|lf|md|mo|mv|nc|nd|ns|nu|nt0|pa|rwu|sg|sm)$|^(w|h|s|b|e|r|l|v|m|a|ba|pd|br|cp|iv|pc|sc|vb)(\\d+)$|^(c|bc|pc)(0x[0-9A-Fa-f]{6,8})$|^(fcrop64)(=1,[0-9A-Fa-f]{6,16})$|^(fSoften)(=\\d+,\\d+,\\d+)$|^(mm)(,[0-9A-Za-z]+)$|^(t|q)([0-9A-Za-z]+)$/;\n\nfunction getParamInfo(param: string) {\n  const matches = param.match(PARAM_REGEX);\n\n  if (matches) {\n    // boolean param\n    if (matches[1]) {\n      return [0, matches[1], true] as const;\n    }\n    // number param\n    if (matches[2] && matches[3]) {\n      return [1, matches[2], Number(matches[3])] as const;\n    }\n    // hex param\n    if (matches[4] && matches[5]) {\n      return [2, matches[4], matches[5]] as const;\n    }\n    // free crop param\n    if (matches[6] && matches[7]) {\n      return [3, matches[6], matches[7]] as const;\n    }\n    // free soften param\n    if (matches[8] && matches[9]) {\n      return [4, matches[8], matches[9]] as const;\n    }\n    // unknown param\n    if (matches[10] && matches[11]) {\n      return [5, matches[10], matches[11]] as const;\n    }\n    if (matches[12] && matches[13]) {\n      return [6, matches[12], matches[13]] as const;\n    }\n  }\n}\n\nexport interface GoogleImageOptions {\n  /**\n   * Whether to keep existing image parameters.\n   *\n   * @default true\n   */\n  existing?: boolean;\n\n  /**\n   * When `true`, skips transformations on unsupported URLs.\n   *\n   * Instead of throwing an error for unsupported URLs, `.url()` will return the\n   * original URL unchanged.\n   *\n   * @default false\n   */\n  pass?: boolean;\n}\n\nexport class GoogleImage {\n  private _u: string;\n  private _m?: [string, number];\n  private _p: {\n    [k: string]: string | number | boolean;\n  };\n  private _e: boolean;\n\n  /**\n   * Creates an instance of {@link GoogleImage}\n   *\n   * @param url The image url\n   * @param options Options\n   */\n  constructor(url: string | URL, { existing = true, pass = false }: GoogleImageOptions = {}) {\n    let imageUrl: string;\n    if (isURL(url)) {\n      imageUrl = url.toString();\n    } else if (isString(url)) {\n      imageUrl = url;\n    } else {\n      throw new TypeError(\"Argument 'url' must be of type string | URL\");\n    }\n\n    this._u = imageUrl;\n    this._e = !pass;\n    this._p = {};\n\n    if (HOSTS_REGEX.test(imageUrl)) {\n      const matches = imageUrl.match(PARAMS_REGEX);\n      if (matches?.[0] && matches.index) {\n        this._m = [matches[0], matches.index];\n\n        if (existing) {\n          for (const param of matches[0].split('-')) {\n            if (!param) {\n              continue;\n            }\n            const info = getParamInfo(param);\n            if (!info) {\n              continue;\n            }\n            this._p[info[0] + info[1]] = info[2];\n          }\n        }\n      }\n    }\n  }\n\n  private _a(error = this._e) {\n    if (this._m) {\n      return false;\n    }\n    if (error) {\n      throw new Error('Image url is not supported for transformations');\n    }\n    return true;\n  }\n\n  private _b(param: string, value?: boolean, removeWhenAdding?: string[]): boolean | this {\n    const skip = this._a();\n\n    const key = 0 + param;\n\n    if (isUndefined(value)) {\n      if (skip) {\n        return false;\n      }\n      return (this._p[key] ?? false) as boolean;\n    }\n\n    if (value === false) {\n      if (!skip && key in this._p) {\n        delete this._p[key];\n      }\n    } else if (value === true) {\n      if (!skip) {\n        if (removeWhenAdding) {\n          for (const remove of removeWhenAdding) {\n            const other = 0 + remove;\n            if (other in this._p) {\n              delete this._p[other];\n            }\n          }\n        }\n        this._p[key] = true;\n      }\n    } else {\n      throw new Error(\"Argument 'value' must be of type boolean\");\n    }\n\n    return this;\n  }\n\n  private _n(param: string, value?: number | null): number | null | this {\n    const skip = this._a();\n\n    const key = 1 + param;\n\n    if (isUndefined(value)) {\n      if (skip) {\n        return null;\n      }\n      return (this._p[key] ?? null) as number | null;\n    }\n\n    if (isNull(value)) {\n      if (!skip && key in this._p) {\n        delete this._p[key];\n      }\n    } else if (isNumber(value)) {\n      if (!skip) {\n        this._p[key] = value;\n      }\n    } else {\n      throw new TypeError(\"Argument 'value' must be of type number | null\");\n    }\n\n    return this;\n  }\n\n  private _h(param: string, value?: string | null): string | null | this {\n    const skip = this._a();\n\n    const regex = /^0x[0-9A-Fa-f]{6,8}$/;\n\n    const key = 2 + param;\n\n    if (isUndefined(value)) {\n      if (skip) {\n        return null;\n      }\n      return (this._p[key] ?? null) as string | null;\n    }\n\n    if (isNull(value)) {\n      if (!skip && key in this._p) {\n        delete this._p[key];\n      }\n    } else if (isString(value)) {\n      if (!regex.test(value)) {\n        throw new Error(\"Argument 'value' must be of format '0xrrggbb' or '0xaarrggbb'\");\n      }\n      if (!skip) {\n        this._p[key] = value;\n      }\n    } else {\n      throw new TypeError(\"Argument 'value' must be of type number | null\");\n    }\n\n    return this;\n  }\n\n  private _f(param: string, value?: boolean): boolean | this {\n    return this._b(param, value, ['rj', 'rp', 'rw', 'rwa', 'rg', 'rh', 'nw']);\n  }\n\n  /**\n   * To check whether image url is supported for transformations\n   *\n   * @returns `true` if image url is supported otherwise `false`\n   */\n  isSupported() {\n    return !!this._m;\n  }\n\n  width(): number | null;\n  width(value: undefined): number | null;\n  width(value: number | null): this;\n  width(value?: number | null): number | null | this {\n    return this._n('w', value);\n  }\n\n  height(): number | null;\n  height(value: undefined): number | null;\n  height(value: number | null): this;\n  height(value?: number | null): number | null | this {\n    return this._n('h', value);\n  }\n\n  size(): number | null;\n  size(value: undefined): number | null;\n  size(value: number | null): this;\n  size(value?: number | null): number | null | this {\n    return this._n('s', value);\n  }\n\n  noUpscaling(): boolean;\n  noUpscaling(value: undefined): boolean;\n  noUpscaling(value: boolean): this;\n  noUpscaling(value?: boolean): boolean | this {\n    return this._b('nu', value);\n  }\n\n  forceScaling(): boolean;\n  forceScaling(value: undefined): boolean;\n  forceScaling(value: boolean): this;\n  forceScaling(value?: boolean): boolean | this {\n    return this._b('s', value);\n  }\n\n  crop(): boolean;\n  crop(value: undefined): boolean;\n  crop(value: boolean): this;\n  crop(value?: boolean): boolean | this {\n    return this._b('c', value, ['cc', 'ci', 'p']);\n  }\n\n  circularCrop(): boolean;\n  circularCrop(value: undefined): boolean;\n  circularCrop(value: boolean): this;\n  circularCrop(value?: boolean): boolean | this {\n    return this._b('cc', value, ['c', 'ci', 'p']);\n  }\n\n  squareCrop(): boolean;\n  squareCrop(value: undefined): boolean;\n  squareCrop(value: boolean): this;\n  squareCrop(value?: boolean): boolean | this {\n    return this._b('ci', value, ['c', 'cc', 'p']);\n  }\n\n  alternateCrop(): boolean;\n  alternateCrop(value: undefined): boolean;\n  alternateCrop(value: boolean): this;\n  alternateCrop(value?: boolean): boolean | this {\n    return this._b('p', value, ['c', 'cc', 'ci']);\n  }\n\n  flipHorizontally(): boolean;\n  flipHorizontally(value: undefined): boolean;\n  flipHorizontally(value: boolean): this;\n  flipHorizontally(value?: boolean): boolean | this {\n    return this._b('fh', value);\n  }\n\n  flipVertically(): boolean;\n  flipVertically(value: undefined): boolean;\n  flipVertically(value: boolean): this;\n  flipVertically(value?: boolean): boolean | this {\n    return this._b('fv', value);\n  }\n\n  rotate(): number | null;\n  rotate(value: undefined): number | null;\n  rotate(value: 90 | 180 | 270 | null): this;\n  rotate(value?: 90 | 180 | 270 | null): number | null | this {\n    return this._n('r', value);\n  }\n\n  symbol(): number | null;\n  symbol(value: undefined): number | null;\n  symbol(value: 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | null): this;\n  symbol(value?: 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | null): number | null | this {\n    return this._n('ba', value);\n  }\n\n  borderRadius(): number | null;\n  borderRadius(value: undefined): number | null;\n  borderRadius(value: number | null): this;\n  borderRadius(value?: number | null): number | null | this {\n    return this._n('br', value);\n  }\n\n  border(): number | null;\n  border(value: undefined): number | null;\n  border(value: number | null): this;\n  border(value?: number | null): number | null | this {\n    return this._n('b', value);\n  }\n\n  color(): string | null;\n  color(value: undefined): string | null;\n  color(value: string | null): this;\n  color(value?: string | null): string | null | this {\n    return this._h('c', value);\n  }\n\n  backgroundColor(): string | null;\n  backgroundColor(value: undefined): string | null;\n  backgroundColor(value: string | null): this;\n  backgroundColor(value?: string | null): string | null | this {\n    return this._h('bc', value);\n  }\n\n  pad(): boolean;\n  pad(value: undefined): boolean;\n  pad(value: boolean): this;\n  pad(value?: boolean): boolean | this {\n    return this._b('pd', value, ['c', 'cc', 'ci', 'p']);\n  }\n\n  padColor(): string | null;\n  padColor(value: undefined): string | null;\n  padColor(value: string | null): this;\n  padColor(value?: string | null): string | null | this {\n    return this._h('pc', value);\n  }\n\n  jpeg(): boolean;\n  jpeg(value: undefined): boolean;\n  jpeg(value: boolean): this;\n  jpeg(value?: boolean): boolean | this {\n    return this._f('rj', value);\n  }\n\n  png(): boolean;\n  png(value: undefined): boolean;\n  png(value: boolean): this;\n  png(value?: boolean): boolean | this {\n    return this._f('rp', value);\n  }\n\n  webp(): boolean;\n  webp(value: undefined): boolean;\n  webp(value: boolean): this;\n  webp(value?: boolean): boolean | this {\n    return this._f('rw', value);\n  }\n\n  animatedWebp(): boolean;\n  animatedWebp(value: undefined): boolean;\n  animatedWebp(value: boolean): this;\n  animatedWebp(value?: boolean): boolean | this {\n    return this._f('rwa', value);\n  }\n\n  gif(): boolean;\n  gif(value: undefined): boolean;\n  gif(value: boolean): this;\n  gif(value?: boolean): boolean | this {\n    return this._f('rg', value);\n  }\n\n  mp4(): boolean;\n  mp4(value: undefined): boolean;\n  mp4(value: boolean): this;\n  mp4(value?: boolean): boolean | this {\n    return this._f('rh', value);\n  }\n\n  html(): boolean;\n  html(value: undefined): boolean;\n  html(value: boolean): this;\n  html(value?: boolean): boolean | this {\n    return this._f('h', value);\n  }\n\n  download(): boolean;\n  download(value: undefined): boolean;\n  download(value: boolean): this;\n  download(value?: boolean): boolean | this {\n    return this._b('d', value);\n  }\n\n  noButton(): boolean;\n  noButton(value: undefined): boolean;\n  noButton(value: boolean): this;\n  noButton(value?: boolean): boolean | this {\n    return this._b('no', value, ['o']);\n  }\n\n  button(): boolean;\n  button(value: undefined): boolean;\n  button(value: boolean): this;\n  button(value?: boolean): boolean | this {\n    return this._b('o', value, ['no']);\n  }\n\n  cacheDays(): number | null;\n  cacheDays(value: undefined): number | null;\n  cacheDays(value: number | null): this;\n  cacheDays(value?: number | null): number | null | this {\n    return this._n('e', value);\n  }\n\n  disableAnimation(): boolean;\n  disableAnimation(value: undefined): boolean;\n  disableAnimation(value: boolean): this;\n  disableAnimation(value?: boolean): boolean | this {\n    return this._b('k', value);\n  }\n\n  frame(): number | null;\n  frame(value: undefined): number | null;\n  frame(value: number | null): this;\n  frame(value?: number | null): number | null | this {\n    return this._n('a', value);\n  }\n\n  /**\n   * Get the new image url\n   */\n  url() {\n    const skip = this._a();\n\n    if (skip) {\n      return this._u;\n    }\n\n    const originalUrl = this._u;\n    // biome-ignore lint/style/noNonNullAssertion: this should not be undefined here\n    const matches = this._m!;\n    const newParams: string[] = [];\n\n    for (const key in this._p) {\n      const prefix = key.slice(1);\n      const value = this._p[key];\n\n      if (isString(value) || isNumber(value)) {\n        newParams.push(prefix + value);\n      } else if (isBoolean(value)) {\n        newParams.push(prefix);\n      }\n    }\n\n    return originalUrl.slice(0, matches[1]) + (newParams.join('-') || 's0') + originalUrl.slice(matches[1] + matches[0].length);\n  }\n}\n"],"mappings":"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","names":[]}