UNPKG

angular-server-side-configuration

Version:
1 lines 14.1 kB
{"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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"}