UNPKG

15.3 kBJavaScriptView Raw
1"use strict";
2// tslint:disable:no-any
3// tslint:disable:no-unsafe-any
4Object.defineProperty(exports, "__esModule", { value: true });
5// tslint:disable:max-func-body-length
6function normalizeEnvironment(rawEnvironment, prod) {
7 let environment = {};
8 if (!rawEnvironment) {
9 return environment;
10 }
11 if (typeof rawEnvironment === 'string') {
12 environment[rawEnvironment] = true;
13 }
14 else if (typeof rawEnvironment === 'object') {
15 environment = Object.assign({}, rawEnvironment);
16 }
17 const normalizedEnv = {};
18 Object.keys(environment).forEach((key) => {
19 const normalizedKey = normalizeEnvName(key);
20 normalizedEnv[normalizedKey] = environment[key];
21 if (typeof normalizedEnv[normalizedKey] === 'string' &&
22 normalizedEnv[normalizedKey].toLowerCase() === 'true') {
23 normalizedEnv[normalizedKey] = true;
24 }
25 else if (typeof normalizedEnv[normalizedKey] === 'string' &&
26 normalizedEnv[normalizedKey].toLowerCase() === 'false') {
27 normalizedEnv[normalizedKey] = false;
28 }
29 });
30 environment = Object.assign({}, normalizedEnv);
31 // dll
32 if (environment.dll != null) {
33 if (environment.dll) {
34 environment.dll = true;
35 }
36 else {
37 delete environment.dll;
38 }
39 }
40 // aot
41 if (environment.aot != null) {
42 if (environment.aot) {
43 environment.aot = true;
44 }
45 else {
46 delete environment.aot;
47 }
48 }
49 // prod
50 if (prod) {
51 environment.prod = true;
52 }
53 if (environment.prod != null) {
54 if (environment.prod) {
55 environment.prod = true;
56 environment.production = true;
57 }
58 else {
59 delete environment.prod;
60 if (typeof environment.production != null) {
61 delete environment.production;
62 }
63 }
64 }
65 else if (environment.production != null) {
66 if (environment.production) {
67 environment.prod = true;
68 environment.production = true;
69 }
70 else {
71 delete environment.production;
72 if (environment.prod != null) {
73 delete environment.prod;
74 }
75 }
76 }
77 else {
78 if (environment.prod != null) {
79 delete environment.prod;
80 }
81 if (environment.production != null) {
82 delete environment.production;
83 }
84 }
85 // dev
86 if (environment.prod) {
87 if (environment.dev != null) {
88 delete environment.dev;
89 }
90 if (environment.development != null) {
91 delete environment.development;
92 }
93 }
94 else {
95 if (environment.dev == null &&
96 environment.development == null) {
97 environment.dev = true;
98 environment.development = true;
99 }
100 else if (environment.dev != null) {
101 if (environment.dev) {
102 environment.dev = true;
103 environment.development = true;
104 }
105 else {
106 delete environment.dev;
107 if (environment.development != null) {
108 delete environment.development;
109 }
110 }
111 }
112 else if (environment.development != null) {
113 if (environment.development) {
114 environment.dev = true;
115 environment.development = true;
116 }
117 else {
118 delete environment.development;
119 if (environment.dev != null) {
120 delete environment.dev;
121 }
122 }
123 }
124 }
125 return environment;
126}
127exports.normalizeEnvironment = normalizeEnvironment;
128function normalizeEnvName(envName) {
129 const envLower = envName.toLowerCase();
130 switch (envLower) {
131 case 'prod':
132 case 'production':
133 return 'prod';
134 case 'dev':
135 case 'development':
136 return 'dev';
137 case 'dll':
138 return 'dll';
139 case 'hot':
140 return 'hot';
141 case 'test':
142 return 'test';
143 case 'aot':
144 return 'aot';
145 default:
146 return envName;
147 }
148}
149//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibm9ybWFsaXplLWVudmlyb25tZW50LmpzIiwic291cmNlUm9vdCI6IkM6L3Byb2plY3RzL2FuZ3VsYXItYnVpbGQvIiwic291cmNlcyI6WyJzcmMvaGVscGVycy9ub3JtYWxpemUtZW52aXJvbm1lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBLHdCQUF3QjtBQUN4QiwrQkFBK0I7O0FBRS9CLHNDQUFzQztBQUN0Qyw4QkFBcUMsY0FBbUIsRUFBRSxJQUFjO0lBQ3BFLElBQUksV0FBVyxHQUF3QyxFQUFFLENBQUM7SUFDMUQsSUFBSSxDQUFDLGNBQWMsRUFBRTtRQUNqQixPQUFPLFdBQVcsQ0FBQztLQUN0QjtJQUVELElBQUksT0FBTyxjQUFjLEtBQUssUUFBUSxFQUFFO1FBQ3BDLFdBQVcsQ0FBQyxjQUFjLENBQUMsR0FBRyxJQUFJLENBQUM7S0FDdEM7U0FBTSxJQUFJLE9BQU8sY0FBYyxLQUFLLFFBQVEsRUFBRTtRQUMzQyxXQUFXLHFCQUFRLGNBQWMsQ0FBRSxDQUFDO0tBQ3ZDO0lBRUQsTUFBTSxhQUFhLEdBQXdDLEVBQUUsQ0FBQztJQUM5RCxNQUFNLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLEdBQVcsRUFBRSxFQUFFO1FBQzdDLE1BQU0sYUFBYSxHQUFHLGdCQUFnQixDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBQzVDLGFBQWEsQ0FBQyxhQUFhLENBQUMsR0FBRyxXQUFXLENBQUMsR0FBRyxDQUFDLENBQUM7UUFDaEQsSUFBSSxPQUFRLGFBQXFCLENBQUMsYUFBYSxDQUFDLEtBQUssUUFBUTtZQUN2RCxhQUFxQixDQUFDLGFBQWEsQ0FBWSxDQUFDLFdBQVcsRUFBRSxLQUFLLE1BQU0sRUFBRTtZQUMzRSxhQUFxQixDQUFDLGFBQWEsQ0FBQyxHQUFHLElBQUksQ0FBQztTQUNoRDthQUFNLElBQUksT0FBUSxhQUFxQixDQUFDLGFBQWEsQ0FBQyxLQUFLLFFBQVE7WUFDOUQsYUFBcUIsQ0FBQyxhQUFhLENB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QUMsR0FBRyxDQUFDO2dCQUN2QixJQUFLLFdBQW1CLENBQUMsV0FBVyxJQUFJLElBQUksRUFBRTtvQkFDMUMsT0FBUSxXQUFtQixDQUFDLFdBQVcsQ0FBQztpQkFDM0M7YUFDSjtTQUNKO2FBQU0sSUFBSyxXQUFtQixDQUFDLFdBQVcsSUFBSSxJQUFJLEVBQUU7WUFDakQsSUFBSyxXQUFtQixDQUFDLFdBQVcsRUFBRTtnQkFDbEMsV0FBVyxDQUFDLEdBQUcsR0FBRyxJQUFJLENBQUM7Z0JBQ3RCLFdBQW1CLENBQUMsV0FBVyxHQUFHLElBQUksQ0FBQzthQUMzQztpQkFBTTtnQkFDSCxPQUFRLFdBQW1CLENBQUMsV0FBVyxDQUFDO2dCQUN4QyxJQUFJLFdBQVcsQ0FBQyxHQUFHLElBQUksSUFBSSxFQUFFO29CQUN6QixPQUFPLFdBQVcsQ0FBQyxHQUFHLENBQUM7aUJBQzFCO2FBQ0o7U0FDSjtLQUNKO0lBRUQsT0FBTyxXQUFXLENBQUM7QUFDdkIsQ0FBQztBQXBIRCxvREFvSEM7QUFFRCwwQkFBMEIsT0FBZTtJQUNyQyxNQUFNLFFBQVEsR0FBRyxPQUFPLENBQUMsV0FBVyxFQUFFLENBQUM7SUFDdkMsUUFBUSxRQUFRLEVBQUU7UUFDZCxLQUFLLE1BQU0sQ0FBQztRQUNaLEtBQUssWUFBWTtZQUNiLE9BQU8sTUFBTSxDQUFDO1FBQ2xCLEtBQUssS0FBSyxDQUFDO1FBQ1gsS0FBSyxhQUFhO1lBQ2QsT0FBTyxLQUFLLENBQUM7UUFDakIsS0FBSyxLQUFLO1lBQ04sT0FBTyxLQUFLLENBQUM7UUFDakIsS0FBSyxLQUFLO1lBQ04sT0FBTyxLQUFLLENBQUM7UUFDakIsS0FBSyxNQUFNO1lBQ1AsT0FBTyxNQUFNLENBQUM7UUFDbEIsS0FBSyxLQUFLO1lBQ04sT0FBTyxLQUFLLENBQUM7UUFDakI7WUFDSSxPQUFPLE9BQU8sQ0FBQztLQUN0QjtBQUNMLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvLyB0c2xpbnQ6ZGlzYWJsZTpuby1hbnlcbi8vIHRzbGludDpkaXNhYmxlOm5vLXVuc2FmZS1hbnlcblxuLy8gdHNsaW50OmRpc2FibGU6bWF4LWZ1bmMtYm9keS1sZW5ndGhcbmV4cG9ydCBmdW5jdGlvbiBub3JtYWxpemVFbnZpcm9ubWVudChyYXdFbnZpcm9ubWVudDogYW55LCBwcm9kPzogYm9vbGVhbik6IHsgW2tleTogc3RyaW5nXTogYm9vbGVhbiB8IHN0cmluZyB9IHtcbiAgICBsZXQgZW52aXJvbm1lbnQ6IHsgW2tleTogc3RyaW5nXTogYm9vbGVhbiB8IHN0cmluZyB9ID0ge307XG4gICAgaWYgKCFyYXdFbnZpcm9ubWVudCkge1xuICAgICAgICByZXR1cm4gZW52aXJvbm1lbnQ7XG4gICAgfVxuXG4gICAgaWYgKHR5cGVvZiByYXdFbnZpcm9ubWVudCA9PT0gJ3N0cmluZycpIHtcbiAgICAgICAgZW52aXJvbm1lbnRbcmF3RW52aXJvbm1lbnRdID0gdHJ1ZTtcbiAgICB9IGVsc2UgaWYgKHR5cGVvZiByYXdFbnZpcm9ubWVudCA9PT0gJ29iamVjdCcpIHtcbiAgICAgICAgZW52aXJvbm1lbnQgPSB7IC4uLnJhd0Vudmlyb25tZW50IH07XG4gICAgfVxuXG4gICAgY29uc3Qgbm9ybWFsaXplZEVudjogeyBba2V5OiBzdHJpbmddOiBib29sZWFuIHwgc3RyaW5nIH0gPSB7fTtcbiAgICBPYmplY3Qua2V5cyhlbnZpcm9ubWVudCkuZm9yRWFjaCgoa2V5OiBzdHJpbmcpID0+IHtcbiAgICAgICAgY29uc3Qgbm9ybWFsaXplZEtleSA9IG5vcm1hbGl6ZUVudk5hbWUoa2V5KTtcbiAgICAgICAgbm9ybWFsaXplZEVudltub3JtYWxpemVkS2V5XSA9IGVudmlyb25tZW50W2tleV07XG4gICAgICAgIGlmICh0eXBlb2YgKG5vcm1hbGl6ZWRFbnYgYXMgYW55KVtub3JtYWxpemVkS2V5XSA9PT0gJ3N0cmluZycgJiZcbiAgICAgICAgICAgICgobm9ybWFsaXplZEVudiBhcyBhbnkpW25vcm1hbGl6ZWRLZXldIGFzIHN0cmluZykudG9Mb3dlckNhc2UoKSA9PT0gJ3RydWUnKSB7XG4gICAgICAgICAgICAobm9ybWFsaXplZEVudiBhcyBhbnkpW25vcm1hbGl6ZWRLZXldID0gdHJ1ZTtcbiAgICAgICAgfSBlbHNlIGlmICh0eXBlb2YgKG5vcm1hbGl6ZWRFbnYgYXMgYW55KVtub3JtYWxpemVkS2V5XSA9PT0gJ3N0cmluZycgJiZcbiAgICAgICAgICAgICgobm9ybWFsaXplZEVudiBhcyBhbnkpW25vcm1hbGl6ZWRLZXldIGFzIHN0cmluZykudG9Mb3dlckNhc2UoKSA9PT0gJ2ZhbHNlJykge1xuICAgICAgICAgICAgKG5vcm1hbGl6ZWRFbnYgYXMgYW55KVtub3JtYWxpemVkS2V5XSA9IGZhbHNlO1xuICAgICAgICB9XG4gICAgfSk7XG5cbiAgICBlbnZpcm9ubWVudCA9IHsgLi4ubm9ybWFsaXplZEVudiB9O1xuXG4gICAgLy8gZGxsXG4gICAgaWYgKGVudmlyb25tZW50LmRsbCAhPSBudWxsKSB7XG4gICAgICAgIGlmIChlbnZpcm9ubWVudC5kbGwpIHtcbiAgICAgICAgICAgIGVudmlyb25tZW50LmRsbCA9IHRydWU7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBkZWxldGUgZW52aXJvbm1lbnQuZGxsO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLy8gYW90XG4gICAgaWYgKGVudmlyb25tZW50LmFvdCAhPSBudWxsKSB7XG4gICAgICAgIGlmIChlbnZpcm9ubWVudC5hb3QpIHtcbiAgICAgICAgICAgIGVudmlyb25tZW50LmFvdCA9IHRydWU7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBkZWxldGUgZW52aXJvbm1lbnQuYW90O1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLy8gcHJvZFxuICAgIGlmIChwcm9kKSB7XG4gICAgICAgIGVudmlyb25tZW50LnByb2QgPSB0cnVlO1xuICAgIH1cblxuICAgIGlmIChlbnZpcm9ubWVudC5wcm9kICE9IG51bGwpIHtcbiAgICAgICAgaWYgKGVudmlyb25tZW50LnByb2QpIHtcbiAgICAgICAgICAgIGVudmlyb25tZW50LnByb2QgPSB0cnVlO1xuICAgICAgICAgICAgKGVudmlyb25tZW50IGFzIGFueSkucHJvZHVjdGlvbiA9IHRydWU7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBkZWxldGUgZW52aXJvbm1lbnQucHJvZDtcbiAgICAgICAgICAgIGlmICh0eXBlb2YgKGVudmlyb25tZW50IGFzIGFueSkucHJvZHVjdGlvbiAhPSBudWxsKSB7XG4gICAgICAgICAgICAgICAgZGVsZXRlIChlbnZpcm9ubWVudCBhcyBhbnkpLnByb2R1Y3Rpb247XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9IGVsc2UgaWYgKChlbnZpcm9ubWVudCBhcyBhbnkpLnByb2R1Y3Rpb24gIT0gbnVsbCkge1xuICAgICAgICBpZiAoKGVudmlyb25tZW50IGFzIGFueSkucHJvZHVjdGlvbikge1xuICAgICAgICAgICAgZW52aXJvbm1lbnQucHJvZCA9IHRydWU7XG4gICAgICAgICAgICAoZW52aXJvbm1lbnQgYXMgYW55KS5wcm9kdWN0aW9uID0gdHJ1ZTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGRlbGV0ZSAoZW52aXJvbm1lbnQgYXMgYW55KS5wcm9kdWN0aW9uO1xuICAgICAgICAgICAgaWYgKGVudmlyb25tZW50LnByb2QgIT0gbnVsbCkge1xuICAgICAgICAgICAgICAgIGRlbGV0ZSBlbnZpcm9ubWVudC5wcm9kO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgICAgaWYgKGVudmlyb25tZW50LnByb2QgIT0gbnVsbCkge1xuICAgICAgICAgICAgZGVsZXRlIGVudmlyb25tZW50LnByb2Q7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKChlbnZpcm9ubWVudCBhcyBhbnkpLnByb2R1Y3Rpb24gIT0gbnVsbCkge1xuICAgICAgICAgICAgZGVsZXRlIChlbnZpcm9ubWVudCBhcyBhbnkpLnByb2R1Y3Rpb247XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvLyBkZXZcbiAgICBpZiAoZW52aXJvbm1lbnQucHJvZCkge1xuICAgICAgICBpZiAoZW52aXJvbm1lbnQuZGV2ICE9IG51bGwpIHtcbiAgICAgICAgICAgIGRlbGV0ZSBlbnZpcm9ubWVudC5kZXY7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKChlbnZpcm9ubWVudCBhcyBhbnkpLmRldmVsb3BtZW50ICE9IG51bGwpIHtcbiAgICAgICAgICAgIGRlbGV0ZSAoZW52aXJvbm1lbnQgYXMgYW55KS5kZXZlbG9wbWVudDtcbiAgICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICAgIGlmIChlbnZpcm9ubWVudC5kZXYgPT0gbnVsbCAmJlxuICAgICAgICAgICAgKGVudmlyb25tZW50IGFzIGFueSkuZGV2ZWxvcG1lbnQgPT0gbnVsbCkge1xuICAgICAgICAgICAgZW52aXJvbm1lbnQuZGV2ID0gdHJ1ZTtcbiAgICAgICAgICAgIChlbnZpcm9ubWVudCBhcyBhbnkpLmRldmVsb3BtZW50ID0gdHJ1ZTtcbiAgICAgICAgfSBlbHNlIGlmIChlbnZpcm9ubWVudC5kZXYgIT0gbnVsbCkge1xuICAgICAgICAgICAgaWYgKGVudmlyb25tZW50LmRldikge1xuICAgICAgICAgICAgICAgIGVudmlyb25tZW50LmRldiA9IHRydWU7XG4gICAgICAgICAgICAgICAgKGVudmlyb25tZW50IGFzIGFueSkuZGV2ZWxvcG1lbnQgPSB0cnVlO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICBkZWxldGUgZW52aXJvbm1lbnQuZGV2O1xuICAgICAgICAgICAgICAgIGlmICgoZW52aXJvbm1lbnQgYXMgYW55KS5kZXZlbG9wbWVudCAhPSBudWxsKSB7XG4gICAgICAgICAgICAgICAgICAgIGRlbGV0ZSAoZW52aXJvbm1lbnQgYXMgYW55KS5kZXZlbG9wbWVudDtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH0gZWxzZSBpZiAoKGVudmlyb25tZW50IGFzIGFueSkuZGV2ZWxvcG1lbnQgIT0gbnVsbCkge1xuICAgICAgICAgICAgaWYgKChlbnZpcm9ubWVudCBhcyBhbnkpLmRldmVsb3BtZW50KSB7XG4gICAgICAgICAgICAgICAgZW52aXJvbm1lbnQuZGV2ID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICAoZW52aXJvbm1lbnQgYXMgYW55KS5kZXZlbG9wbWVudCA9IHRydWU7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIGRlbGV0ZSAoZW52aXJvbm1lbnQgYXMgYW55KS5kZXZlbG9wbWVudDtcbiAgICAgICAgICAgICAgICBpZiAoZW52aXJvbm1lbnQuZGV2ICE9IG51bGwpIHtcbiAgICAgICAgICAgICAgICAgICAgZGVsZXRlIGVudmlyb25tZW50LmRldjtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gZW52aXJvbm1lbnQ7XG59XG5cbmZ1bmN0aW9uIG5vcm1hbGl6ZUVudk5hbWUoZW52TmFtZTogc3RyaW5nKTogc3RyaW5nIHtcbiAgICBjb25zdCBlbnZMb3dlciA9IGVudk5hbWUudG9Mb3dlckNhc2UoKTtcbiAgICBzd2l0Y2ggKGVudkxvd2VyKSB7XG4gICAgICAgIGNhc2UgJ3Byb2QnOlxuICAgICAgICBjYXNlICdwcm9kdWN0aW9uJzpcbiAgICAgICAgICAgIHJldHVybiAncHJvZCc7XG4gICAgICAgIGNhc2UgJ2Rldic6XG4gICAgICAgIGNhc2UgJ2RldmVsb3BtZW50JzpcbiAgICAgICAgICAgIHJldHVybiAnZGV2JztcbiAgICAgICAgY2FzZSAnZGxsJzpcbiAgICAgICAgICAgIHJldHVybiAnZGxsJztcbiAgICAgICAgY2FzZSAnaG90JzpcbiAgICAgICAgICAgIHJldHVybiAnaG90JztcbiAgICAgICAgY2FzZSAndGVzdCc6XG4gICAgICAgICAgICByZXR1cm4gJ3Rlc3QnO1xuICAgICAgICBjYXNlICdhb3QnOlxuICAgICAgICAgICAgcmV0dXJuICdhb3QnO1xuICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgICAgcmV0dXJuIGVudk5hbWU7XG4gICAgfVxufVxuIl19
\No newline at end of file