{"version":3,"file":"config.mjs","sources":["../../../../../darwin_arm64-fastbuild-ST-fdfa778d11ba/bin/packages/service-worker/config/src/duration.ts","../../../../../darwin_arm64-fastbuild-ST-fdfa778d11ba/bin/packages/service-worker/config/src/glob.ts","../../../../../darwin_arm64-fastbuild-ST-fdfa778d11ba/bin/packages/service-worker/config/src/generator.ts"],"sourcesContent":["/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.dev/license\n */\n\nconst PARSE_TO_PAIRS = /([0-9]+[^0-9]+)/g;\nconst PAIR_SPLIT = /^([0-9]+)([dhmsu]+)$/;\n\nexport function parseDurationToMs(duration: string): number {\n  const matches: string[] = [];\n\n  let array: RegExpExecArray | null;\n  while ((array = PARSE_TO_PAIRS.exec(duration)) !== null) {\n    matches.push(array[0]);\n  }\n  return matches\n    .map((match) => {\n      const res = PAIR_SPLIT.exec(match);\n      if (res === null) {\n        throw new Error(`Not a valid duration: ${match}`);\n      }\n      let factor: number = 0;\n      switch (res[2]) {\n        case 'd':\n          factor = 86400000;\n          break;\n        case 'h':\n          factor = 3600000;\n          break;\n        case 'm':\n          factor = 60000;\n          break;\n        case 's':\n          factor = 1000;\n          break;\n        case 'u':\n          factor = 1;\n          break;\n        default:\n          throw new Error(`Not a valid duration unit: ${res[2]}`);\n      }\n      return parseInt(res[1]) * factor;\n    })\n    .reduce((total, value) => total + value, 0);\n}\n","/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.dev/license\n */\n\nconst QUESTION_MARK = '[^/]';\nconst WILD_SINGLE = '[^/]*';\nconst WILD_OPEN = '(?:.+\\\\/)?';\n\nconst TO_ESCAPE_BASE = [\n  {replace: /\\./g, with: '\\\\.'},\n  {replace: /\\+/g, with: '\\\\+'},\n  {replace: /\\*/g, with: WILD_SINGLE},\n];\nconst TO_ESCAPE_WILDCARD_QM = [...TO_ESCAPE_BASE, {replace: /\\?/g, with: QUESTION_MARK}];\nconst TO_ESCAPE_LITERAL_QM = [...TO_ESCAPE_BASE, {replace: /\\?/g, with: '\\\\?'}];\n\nexport function globToRegex(glob: string, literalQuestionMark = false): string {\n  const toEscape = literalQuestionMark ? TO_ESCAPE_LITERAL_QM : TO_ESCAPE_WILDCARD_QM;\n  const segments = glob.split('/').reverse();\n  let regex: string = '';\n  while (segments.length > 0) {\n    const segment = segments.pop()!;\n    if (segment === '**') {\n      if (segments.length > 0) {\n        regex += WILD_OPEN;\n      } else {\n        regex += '.*';\n      }\n    } else {\n      const processed = toEscape.reduce(\n        (segment, escape) => segment.replace(escape.replace, escape.with),\n        segment,\n      );\n      regex += processed;\n      if (segments.length > 0) {\n        regex += '\\\\/';\n      }\n    }\n  }\n  return regex;\n}\n","/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.dev/license\n */\n\nimport {parseDurationToMs} from './duration';\nimport {Filesystem} from './filesystem';\nimport {globToRegex} from './glob';\nimport {AssetGroup, Config} from './in';\n\nconst DEFAULT_NAVIGATION_URLS = [\n  '/**', // Include all URLs.\n  '!/**/*.*', // Exclude URLs to files (containing a file extension in the last segment).\n  '!/**/*__*', // Exclude URLs containing `__` in the last segment.\n  '!/**/*__*/**', // Exclude URLs containing `__` in any other segment.\n];\n\n/**\n * Consumes service worker configuration files and processes them into control files.\n *\n * @publicApi\n */\nexport class Generator {\n  constructor(\n    readonly fs: Filesystem,\n    private baseHref: string,\n  ) {}\n\n  async process(config: Config): Promise<Object> {\n    const unorderedHashTable = {};\n    const assetGroups = await this.processAssetGroups(config, unorderedHashTable);\n\n    return {\n      configVersion: 1,\n      timestamp: Date.now(),\n      appData: config.appData,\n      index: joinUrls(this.baseHref, config.index),\n      assetGroups,\n      dataGroups: this.processDataGroups(config),\n      hashTable: withOrderedKeys(unorderedHashTable),\n      navigationUrls: processNavigationUrls(this.baseHref, config.navigationUrls),\n      navigationRequestStrategy: config.navigationRequestStrategy ?? 'performance',\n      applicationMaxAge: config.applicationMaxAge\n        ? parseDurationToMs(config.applicationMaxAge)\n        : undefined,\n    };\n  }\n\n  private async processAssetGroups(\n    config: Config,\n    hashTable: {[file: string]: string | undefined},\n  ): Promise<Object[]> {\n    // Retrieve all files of the build.\n    const allFiles = await this.fs.list('/');\n    const seenMap = new Set<string>();\n    const filesPerGroup = new Map<AssetGroup, string[]>();\n\n    // Computed which files belong to each asset-group.\n    for (const group of config.assetGroups || []) {\n      if ((group.resources as any).versionedFiles) {\n        throw new Error(\n          `Asset-group '${group.name}' in 'ngsw-config.json' uses the 'versionedFiles' option, ` +\n            \"which is no longer supported. Use 'files' instead.\",\n        );\n      }\n\n      const fileMatcher = globListToMatcher(group.resources.files || []);\n      const matchedFiles = allFiles\n        .filter(fileMatcher)\n        .filter((file) => !seenMap.has(file))\n        .sort();\n\n      matchedFiles.forEach((file) => seenMap.add(file));\n      filesPerGroup.set(group, matchedFiles);\n    }\n\n    // Compute hashes for all matched files and add them to the hash-table.\n    const allMatchedFiles = ([] as string[]).concat(...Array.from(filesPerGroup.values())).sort();\n    const allMatchedHashes = await processInBatches(allMatchedFiles, 500, (file) =>\n      this.fs.hash(file),\n    );\n    allMatchedFiles.forEach((file, idx) => {\n      hashTable[joinUrls(this.baseHref, file)] = allMatchedHashes[idx];\n    });\n\n    // Generate and return the processed asset-groups.\n    return Array.from(filesPerGroup.entries()).map(([group, matchedFiles]) => ({\n      name: group.name,\n      installMode: group.installMode || 'prefetch',\n      updateMode: group.updateMode || group.installMode || 'prefetch',\n      cacheQueryOptions: buildCacheQueryOptions(group.cacheQueryOptions),\n      urls: matchedFiles.map((url) => joinUrls(this.baseHref, url)),\n      patterns: (group.resources.urls || []).map((url) => urlToRegex(url, this.baseHref, true)),\n    }));\n  }\n\n  private processDataGroups(config: Config): Object[] {\n    return (config.dataGroups || []).map((group) => {\n      return {\n        name: group.name,\n        patterns: group.urls.map((url) => urlToRegex(url, this.baseHref, true)),\n        strategy: group.cacheConfig.strategy || 'performance',\n        maxSize: group.cacheConfig.maxSize,\n        maxAge: parseDurationToMs(group.cacheConfig.maxAge),\n        timeoutMs: group.cacheConfig.timeout && parseDurationToMs(group.cacheConfig.timeout),\n        refreshAheadMs:\n          group.cacheConfig.refreshAhead && parseDurationToMs(group.cacheConfig.refreshAhead),\n        cacheOpaqueResponses: group.cacheConfig.cacheOpaqueResponses,\n        cacheQueryOptions: buildCacheQueryOptions(group.cacheQueryOptions),\n        version: group.version !== undefined ? group.version : 1,\n      };\n    });\n  }\n}\n\nexport function processNavigationUrls(\n  baseHref: string,\n  urls = DEFAULT_NAVIGATION_URLS,\n): {positive: boolean; regex: string}[] {\n  return urls.map((url) => {\n    const positive = !url.startsWith('!');\n    url = positive ? url : url.slice(1);\n    return {positive, regex: `^${urlToRegex(url, baseHref)}$`};\n  });\n}\n\nasync function processInBatches<I, O>(\n  items: I[],\n  batchSize: number,\n  processFn: (item: I) => O | Promise<O>,\n): Promise<O[]> {\n  const batches = [];\n\n  for (let i = 0; i < items.length; i += batchSize) {\n    batches.push(items.slice(i, i + batchSize));\n  }\n\n  return batches.reduce(\n    async (prev, batch) =>\n      (await prev).concat(await Promise.all(batch.map((item) => processFn(item)))),\n    Promise.resolve<O[]>([]),\n  );\n}\n\nfunction globListToMatcher(globs: string[]): (file: string) => boolean {\n  const patterns = globs.map((pattern) => {\n    if (pattern.startsWith('!')) {\n      return {\n        positive: false,\n        regex: new RegExp('^' + globToRegex(pattern.slice(1)) + '$'),\n      };\n    } else {\n      return {\n        positive: true,\n        regex: new RegExp('^' + globToRegex(pattern) + '$'),\n      };\n    }\n  });\n  return (file: string) => matches(file, patterns);\n}\n\nfunction matches(file: string, patterns: {positive: boolean; regex: RegExp}[]): boolean {\n  return patterns.reduce((isMatch, pattern) => {\n    if (pattern.positive) {\n      return isMatch || pattern.regex.test(file);\n    } else {\n      return isMatch && !pattern.regex.test(file);\n    }\n  }, false);\n}\n\nfunction urlToRegex(url: string, baseHref: string, literalQuestionMark?: boolean): string {\n  if (!url.startsWith('/') && url.indexOf('://') === -1) {\n    // Prefix relative URLs with `baseHref`.\n    // Strip a leading `.` from a relative `baseHref` (e.g. `./foo/`), since it would result in an\n    // incorrect regex (matching a literal `.`).\n    url = joinUrls(baseHref.replace(/^\\.(?=\\/)/, ''), url);\n  }\n\n  return globToRegex(url, literalQuestionMark);\n}\n\nfunction joinUrls(a: string, b: string): string {\n  if (a.endsWith('/') && b.startsWith('/')) {\n    return a + b.slice(1);\n  } else if (!a.endsWith('/') && !b.startsWith('/')) {\n    return a + '/' + b;\n  }\n  return a + b;\n}\n\nfunction withOrderedKeys<T extends {[key: string]: any}>(unorderedObj: T): T {\n  const orderedObj = {} as {[key: string]: any};\n  Object.keys(unorderedObj)\n    .sort()\n    .forEach((key) => (orderedObj[key] = unorderedObj[key]));\n  return orderedObj as T;\n}\n\nfunction buildCacheQueryOptions(\n  inOptions?: Pick<CacheQueryOptions, 'ignoreSearch'>,\n): CacheQueryOptions {\n  return {\n    ignoreVary: true,\n    ...inOptions,\n  };\n}\n"],"names":["PARSE_TO_PAIRS","PAIR_SPLIT","parseDurationToMs","duration","matches","array","exec","push","map","match","res","Error","factor","parseInt","reduce","total","value","QUESTION_MARK","WILD_SINGLE","WILD_OPEN","TO_ESCAPE_BASE","replace","with","TO_ESCAPE_WILDCARD_QM","TO_ESCAPE_LITERAL_QM","globToRegex","glob","literalQuestionMark","toEscape","segments","split","reverse","regex","length","segment","pop","processed","escape","DEFAULT_NAVIGATION_URLS","Generator","fs","baseHref","constructor","process","config","unorderedHashTable","assetGroups","processAssetGroups","configVersion","timestamp","Date","now","appData","index","joinUrls","dataGroups","processDataGroups","hashTable","withOrderedKeys","navigationUrls","processNavigationUrls","navigationRequestStrategy","applicationMaxAge","undefined","allFiles","list","seenMap","Set","filesPerGroup","Map","group","resources","versionedFiles","name","fileMatcher","globListToMatcher","files","matchedFiles","filter","file","has","sort","forEach","add","set","allMatchedFiles","concat","Array","from","values","allMatchedHashes","processInBatches","hash","idx","entries","installMode","updateMode","cacheQueryOptions","buildCacheQueryOptions","urls","url","patterns","urlToRegex","strategy","cacheConfig","maxSize","maxAge","timeoutMs","timeout","refreshAheadMs","refreshAhead","cacheOpaqueResponses","version","positive","startsWith","slice","items","batchSize","processFn","batches","i","prev","batch","Promise","all","item","resolve","globs","pattern","RegExp","isMatch","test","indexOf","a","b","endsWith","unorderedObj","orderedObj","Object","keys","key","inOptions","ignoreVary"],"mappings":"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"}