{"version":3,"file":"angular-server-side-configuration.mjs","sources":["../../../projects/angular-server-side-configuration/src/glob-to-regexp.ts","../../../projects/angular-server-side-configuration/src/insert.ts","../../../projects/angular-server-side-configuration/src/angular-server-side-configuration.ts"],"sourcesContent":["// Source: https://github.com/fitzgen/glob-to-regexp/blob/master/index.js\n\nexport interface Options {\n  extended?: boolean | undefined;\n  globstar?: boolean | undefined;\n  flags?: string | undefined;\n}\n\nexport function globToRegExp(glob: string, opts?: Options) {\n  if (typeof glob !== 'string') {\n    throw new TypeError('Expected a string');\n  }\n\n  var str = String(glob);\n\n  // The regexp we are building, as a string.\n  var reStr = '';\n\n  // Whether we are matching so called \"extended\" globs (like bash) and should\n  // support single character matching, matching ranges of characters, group\n  // matching, etc.\n  var extended = opts ? !!opts.extended : false;\n\n  // When globstar is _false_ (default), '/foo/*' is translated a regexp like\n  // '^\\/foo\\/.*$' which will match any string beginning with '/foo/'\n  // When globstar is _true_, '/foo/*' is translated to regexp like\n  // '^\\/foo\\/[^/]*$' which will match any string beginning with '/foo/' BUT\n  // which does not have a '/' to the right of it.\n  // E.g. with '/foo/*' these will match: '/foo/bar', '/foo/bar.txt' but\n  // these will not '/foo/bar/baz', '/foo/bar/baz.txt'\n  // Lastely, when globstar is _true_, '/foo/**' is equivelant to '/foo/*' when\n  // globstar is _false_\n  var globstar = opts ? !!opts.globstar : false;\n\n  // If we are doing extended matching, this boolean is true when we are inside\n  // a group (eg {*.html,*.js}), and false otherwise.\n  var inGroup = false;\n\n  // RegExp flags (eg \"i\" ) to pass in to RegExp constructor.\n  var flags = opts && typeof opts.flags === 'string' ? opts.flags : '';\n\n  var c;\n  for (var i = 0, len = str.length; i < len; i++) {\n    c = str[i];\n\n    switch (c) {\n      case '/':\n      case '$':\n      case '^':\n      case '+':\n      case '.':\n      case '(':\n      case ')':\n      case '=':\n      case '!':\n      case '|':\n        reStr += '\\\\' + c;\n        break;\n\n      // @ts-ignore\n      case '?':\n        if (extended) {\n          reStr += '.';\n          break;\n        }\n\n      case '[':\n      // @ts-ignore\n      case ']':\n        if (extended) {\n          reStr += c;\n          break;\n        }\n\n      // @ts-ignore\n      case '{':\n        if (extended) {\n          inGroup = true;\n          reStr += '(';\n          break;\n        }\n\n      // @ts-ignore\n      case '}':\n        if (extended) {\n          inGroup = false;\n          reStr += ')';\n          break;\n        }\n\n      case ',':\n        if (inGroup) {\n          reStr += '|';\n          break;\n        }\n        reStr += '\\\\' + c;\n        break;\n\n      case '*':\n        // Move over all consecutive \"*\"'s.\n        // Also store the previous and next characters\n        var prevChar = str[i - 1];\n        var starCount = 1;\n        while (str[i + 1] === '*') {\n          starCount++;\n          i++;\n        }\n        var nextChar = str[i + 1];\n\n        if (!globstar) {\n          // globstar is disabled, so treat any number of \"*\" as one\n          reStr += '.*';\n        } else {\n          // globstar is enabled, so determine if this is a globstar segment\n          var isGlobstar =\n            starCount > 1 && // multiple \"*\"'s\n            (prevChar === '/' || prevChar === undefined) && // from the start of the segment\n            (nextChar === '/' || nextChar === undefined); // to the end of the segment\n\n          if (isGlobstar) {\n            // it's a globstar, so match zero or more path segments\n            reStr += '((?:[^/]*(?:/|$))*)';\n            i++; // move over the \"/\"\n          } else {\n            // it's not a globstar, so only match one path segment\n            reStr += '([^/]*)';\n          }\n        }\n        break;\n\n      default:\n        reStr += c;\n    }\n  }\n\n  // When regexp 'g' flag is specified don't\n  // constrain the regular expression with ^ & $\n  if (!flags || !~flags.indexOf('g')) {\n    reStr = '^' + reStr + '$';\n  }\n\n  return new RegExp(reStr, flags);\n}\n","import { existsSync, lstatSync, readdirSync, readFileSync, writeFileSync } from 'fs';\nimport { dirname, join } from 'path';\n\nimport { globToRegExp } from './glob-to-regexp';\nimport type { Ngssc, Variant } from './ngssc';\n\nexport function insert(\n  options: { dryRun?: boolean; recursive?: boolean; directory?: string } = {},\n) {\n  const directory = options.directory || process.cwd();\n  if (options.recursive) {\n    walk(directory, '**/ngssc.json')\n      .map((f) => dirname(f))\n      .forEach((d) => insertWithNgssc(d, !!options.dryRun));\n  } else {\n    insertWithNgssc(directory, !!options.dryRun);\n  }\n}\n\nfunction insertWithNgssc(directory: string, dryRun: boolean) {\n  const ngsscPath = join(directory, 'ngssc.json');\n  if (!existsSync(ngsscPath)) {\n    throw new Error(`${ngsscPath} does not exist!`);\n  }\n\n  const ngssc: Ngssc = JSON.parse(readFileSync(ngsscPath, 'utf8'));\n  const populatedVariables = populateVariables(ngssc.environmentVariables);\n  log(`Populated environment variables (Variant: ${ngssc.variant}, ${ngsscPath})`);\n  Object.keys(populatedVariables).forEach((k) => `  ${k}: ${populatedVariables[k]}`);\n  const iife = generateIife(ngssc.variant, populatedVariables);\n  const htmlPattern = ngssc.filePattern || 'index.html';\n  const htmlFiles = walk(directory, htmlPattern);\n  if (!htmlFiles.length) {\n    log(`No files found with pattern ${htmlPattern} in ${directory}`);\n    return;\n  }\n\n  log(`Configuration will be inserted into ${htmlFiles.join(', ')}`);\n  if (dryRun) {\n    log('Dry run. Nothing will be inserted.');\n  } else {\n    htmlFiles.forEach((f) => insertIntoHtml(f, iife));\n  }\n}\n\nfunction populateVariables(variables: string[]) {\n  const populatedVariables: { [key: string]: string | null } = {};\n  variables.forEach(\n    (v) => (populatedVariables[v] = v in process.env ? process.env[v] || '' : null),\n  );\n  return populatedVariables;\n}\n\nfunction generateIife(variant: Variant, populatedVariables: { [key: string]: string | null }) {\n  let iife: string;\n  if (variant === 'NG_ENV') {\n    iife = `(function(self){self.NG_ENV=${JSON.stringify(populatedVariables)};})(window)`;\n  } else if (variant === 'global') {\n    iife = `(function(self){Object.assign(self,${JSON.stringify(populatedVariables)});})(window)`;\n  } else {\n    iife = `(function(self){self.process=${JSON.stringify({ env: populatedVariables })};})(window)`;\n  }\n  return `<!--ngssc--><script>${iife}</script><!--/ngssc-->`;\n}\n\nfunction insertIntoHtml(file: string, iife: string) {\n  const fileContent = readFileSync(file, 'utf8');\n  if (/<!--ngssc-->[\\w\\W]*<!--\\/ngssc-->/.test(fileContent)) {\n    writeFileSync(file, fileContent.replace(/<!--ngssc-->[\\w\\W]*<!--\\/ngssc-->/, iife), 'utf8');\n  } else if (/<!--\\s*CONFIG\\s*-->/.test(fileContent)) {\n    writeFileSync(file, fileContent.replace(/<!--\\s*CONFIG\\s*-->/, iife), 'utf8');\n  } else if (fileContent.includes('</title>')) {\n    writeFileSync(file, fileContent.replace('</title>', `</title>${iife}`), 'utf8');\n  } else {\n    writeFileSync(file, fileContent.replace('</head>', `${iife}</head>`), 'utf8');\n  }\n}\n\nfunction walk(root: string, filePattern: string): string[] {\n  const fileRegex = globToRegExp(filePattern, { extended: true, globstar: true, flags: 'ig' });\n  const directory = root.replace(/\\\\/g, '/');\n  return readdirSync(directory)\n    .map((f) => `${directory}/${f}`)\n    .map((f) => {\n      const stat = lstatSync(f);\n      if (stat.isDirectory()) {\n        return walk(f, filePattern);\n      } else if (stat.isFile() && fileRegex.test(f)) {\n        return [f];\n      } else {\n        return [];\n      }\n    })\n    .reduce((current, next) => current.concat(next), []);\n}\n\nfunction log(message: string) {\n  // tslint:disable-next-line: no-console\n  console.log(message);\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}