From f72dcce526f2147b20f3e491ebe0b491b7d70dce Mon Sep 17 00:00:00 2001 From: iamareebjamal Date: Sun, 29 Dec 2019 05:49:13 +0530 Subject: [PATCH 1/5] feat: Replace config at runtime --- config/environment.js | 2 +- scripts/replace-config.js | 107 ++++++++++++++++++++++++++++++++++++++ 2 files changed, 108 insertions(+), 1 deletion(-) create mode 100644 scripts/replace-config.js diff --git a/config/environment.js b/config/environment.js index 5b92684cff5..71bc67f2a8d 100644 --- a/config/environment.js +++ b/config/environment.js @@ -99,7 +99,7 @@ module.exports = function(environment) { ENV['ember-simple-auth-token'] = { refreshAccessTokens : false, - serverTokenEndpoint : `${ENV.APP.apiHost}/auth/session`, + serverTokenEndpoint : `/auth/session`, identificationField : 'email', passwordField : 'password', tokenPropertyName : 'access_token', diff --git a/scripts/replace-config.js b/scripts/replace-config.js new file mode 100644 index 00000000000..0e9e7343560 --- /dev/null +++ b/scripts/replace-config.js @@ -0,0 +1,107 @@ +require('dotenv').config() + +const fs = require('fs'); +const promisify = require('util').promisify +const { merge } = require('lodash') + +const env = require('../config/environment') +const appName = 'open-event-frontend' + +const environment = env('production') + +async function replaceFastbootConfig() { + const packagePath = './dist/package.json' + const packageInfo = require('.' + packagePath) + + const old = packageInfo.fastboot.config[appName] + packageInfo.fastboot.config[appName] = merge(old, environment); + await promisify(fs.writeFile)(packagePath, JSON.stringify(packageInfo)) +} + +function findObject(js, objectStart) { + let braceCount = 1; + + const start = js.indexOf("{", objectStart); + + if (start < 0) { + return null; + } + + let index = start + 1; + let parseBlocker = null; + let parseBlockerBuffer = null; + + while (index < js.length) { + const c = js[index]; + + if (!parseBlocker && !parseBlockerBuffer) { + if (c == "{") { + braceCount += 1; + } else if (c == "}") { + braceCount -= 1; + } else if (c === '"' || c === "'" || c === "`") { + parseBlocker = c; + } else if (js[index - 1] == "/") { + if (c == "/") parseBlocker = "\n"; + else if (c == "*") parseBlockerBuffer = "*/"; + } + + if (braceCount === 0) { + break; + } + } else { + if (c === parseBlocker) { + parseBlocker = null; + } else if (c == '/' && js[index - 1] == '*') { + parseBlockerBuffer = null; + } + } + + index++; + } + + if (index >= js.length) return null; + + return { + start, + end: index + }; +} + +async function replaceWebConfig() { + const pattern = new RegExp(`^${appName}.*\.js$`) + const basePath = './dist/assets/' + const appJs = (await promisify(fs.readdir)(basePath)).filter(name => name.match(pattern)) + + const envDefinition = 'define("open-event-frontend/config/environment"' + + for (const js of appJs) { + const code = (await promisify(fs.readFile)(basePath + js)).toString() + let defineIndex = code.indexOf(envDefinition) + + if (defineIndex < 0) { + defineIndex = code.indexOf(envDefinition.replace(/"/g, "'")) + if (defineIndex < 0) + continue; + } + + const defaultIndex = code.indexOf('default', defineIndex + 1) + + if (defaultIndex < 0) + continue; + + const object = findObject(code, defaultIndex) + + const webEnvJson = code.substring(object.start, object.end + 1) + const old = eval('(' + webEnvJson + ')') + + // File with environment definition found + console.log('Transforming ' + js, object, JSON.stringify(old)) + console.log(JSON.stringify(merge(old, environment))) + } +} + +(async () => { + await replaceFastbootConfig() + await replaceWebConfig() +})(); From 7b3675ba465d6943657663afa580f5a89e0ab035 Mon Sep 17 00:00:00 2001 From: iamareebjamal Date: Sun, 29 Dec 2019 21:39:47 +0530 Subject: [PATCH 2/5] fin --- package.json | 2 + scripts/fastboot-server.js | 11 ++- scripts/replace-config.js | 39 +++++++++-- yarn.lock | 137 +++++++++++++++++++++++++++++++++++-- 4 files changed, 177 insertions(+), 12 deletions(-) diff --git a/package.json b/package.json index 19bdcccb153..f82ec843018 100644 --- a/package.json +++ b/package.json @@ -112,6 +112,7 @@ "eslint-plugin-ember": "^6.2.0", "eslint-plugin-ember-suave": "^1.0.0", "eslint-plugin-node": "^9.0.1", + "fastboot-app-server": "^2.0.0", "google-material-color": "^1.3.1", "http-status": "^1.3.2", "jquery": "^3.4.1", @@ -121,6 +122,7 @@ "paypal-checkout": "^4.0.268", "query-string": "^6.5.0", "qunit-dom": "^0.8.5", + "safe-eval": "^0.4.1", "sanitize-html": "^1.20.1", "sass": "^1.20.1", "semantic-ui-ember": "^3.0.3", diff --git a/scripts/fastboot-server.js b/scripts/fastboot-server.js index b0826e7edfc..fc66aff4850 100644 --- a/scripts/fastboot-server.js +++ b/scripts/fastboot-server.js @@ -1,4 +1,7 @@ +require('dotenv').config() + const FastBootAppServer = require('fastboot-app-server'); +const { injectEnvironment } = require('./replace-config'); const enableGzip = process.env.FASTBOOT_GZIP || 'true'; const fastbootDistPath = process.env.FASTBOOT_DIST_PATH || '/fastboot/app'; @@ -16,4 +19,10 @@ let fastbootServer = new FastBootAppServer({ workerCount : parseInt(fastbootWorkers) }); -fastbootServer.start(); +(async () => { + if (process.env.INJECT_ENV === 'true') { + await injectEnvironment(); + } + + fastbootServer.start(); +})(); diff --git a/scripts/replace-config.js b/scripts/replace-config.js index 0e9e7343560..997586e25d7 100644 --- a/scripts/replace-config.js +++ b/scripts/replace-config.js @@ -3,6 +3,7 @@ require('dotenv').config() const fs = require('fs'); const promisify = require('util').promisify const { merge } = require('lodash') +const safeEval = require('safe-eval') const env = require('../config/environment') const appName = 'open-event-frontend' @@ -16,6 +17,8 @@ async function replaceFastbootConfig() { const old = packageInfo.fastboot.config[appName] packageInfo.fastboot.config[appName] = merge(old, environment); await promisify(fs.writeFile)(packagePath, JSON.stringify(packageInfo)) + + console.log('Transformed package.json with new environment') } function findObject(js, objectStart) { @@ -68,6 +71,10 @@ function findObject(js, objectStart) { }; } +function replace(str, start, end, replacement) { + return str.substring(0, start) + replacement + str.substring(end + 1, str.length) +} + async function replaceWebConfig() { const pattern = new RegExp(`^${appName}.*\.js$`) const basePath = './dist/assets/' @@ -76,7 +83,8 @@ async function replaceWebConfig() { const envDefinition = 'define("open-event-frontend/config/environment"' for (const js of appJs) { - const code = (await promisify(fs.readFile)(basePath + js)).toString() + const jsPath = basePath + js; + const code = (await promisify(fs.readFile)(jsPath)).toString() let defineIndex = code.indexOf(envDefinition) if (defineIndex < 0) { @@ -90,18 +98,35 @@ async function replaceWebConfig() { if (defaultIndex < 0) continue; + // File with environment definition found + + console.log('Transforming ' + js) + const object = findObject(code, defaultIndex) + console.log('Environment Object Found', object) + const webEnvJson = code.substring(object.start, object.end + 1) - const old = eval('(' + webEnvJson + ')') + const old = safeEval('(' + webEnvJson + ')') - // File with environment definition found - console.log('Transforming ' + js, object, JSON.stringify(old)) - console.log(JSON.stringify(merge(old, environment))) + const newEnv = JSON.stringify(merge(old, environment)) + const newCode = replace(code, object.start, object.end, newEnv) + + console.log('Injected new environment') + + await promisify(fs.writeFile)(jsPath, newCode) + + console.log('Transformation Complete') + + break; } } -(async () => { +async function injectEnvironment() { await replaceFastbootConfig() await replaceWebConfig() -})(); +} + +module.exports = { + injectEnvironment +} diff --git a/yarn.lock b/yarn.lock index d83c64d3472..0f0431ca509 100644 --- a/yarn.lock +++ b/yarn.lock @@ -1007,11 +1007,37 @@ ember-compatibility-helpers "^1.0.0" ember-raf-scheduler "0.1.0" -"@simple-dom/interface@1.4.0": +"@simple-dom/document@^1.4.0": + version "1.4.0" + resolved "https://registry.yarnpkg.com/@simple-dom/document/-/document-1.4.0.tgz#af60855f957f284d436983798ef1006cca1a1678" + integrity sha512-/RUeVH4kuD3rzo5/91+h4Z1meLSLP66eXqpVAw/4aZmYozkeqUkMprq0znL4psX/adEed5cBgiNJcfMz/eKZLg== + dependencies: + "@simple-dom/interface" "^1.4.0" + +"@simple-dom/interface@1.4.0", "@simple-dom/interface@^1.4.0": version "1.4.0" resolved "https://registry.yarnpkg.com/@simple-dom/interface/-/interface-1.4.0.tgz#e8feea579232017f89b0138e2726facda6fbb71f" integrity sha512-l5qumKFWU0S+4ZzMaLXFU8tQZsicHEMEyAxI5kDFGhJsRqDwe0a7/iPA/GdxlGyDKseQQAgIz5kzU7eXTrlSpA== +"@simple-dom/parser@^1.4.0": + version "1.4.0" + resolved "https://registry.yarnpkg.com/@simple-dom/parser/-/parser-1.4.0.tgz#b1fee1a23f48a37d6bdd98f5242db0cab5b67abc" + integrity sha512-TNjDkOehueRIKr1df416qk9ELj+qWuVVJNIT25y1aZg3pQvxv4UPGrgaDFte7dsWBTbF3V8NYPNQ5FDUZQ8Wlg== + dependencies: + "@simple-dom/interface" "^1.4.0" + +"@simple-dom/serializer@^1.4.0": + version "1.4.0" + resolved "https://registry.yarnpkg.com/@simple-dom/serializer/-/serializer-1.4.0.tgz#98470f357f418d72b1a1ec78d68191e60aefe215" + integrity sha512-mI1yRahsVs8atXLiQksineDsFEFqeG7RHwnnBTDOK6inbzl4tZQgjR+Z7edjgIJq5j5RhZvwPI6EuCji9B3eQw== + dependencies: + "@simple-dom/interface" "^1.4.0" + +"@simple-dom/void-map@^1.4.0": + version "1.4.0" + resolved "https://registry.yarnpkg.com/@simple-dom/void-map/-/void-map-1.4.0.tgz#f15f07568fe1076740407266aa5e6eac249bc78c" + integrity sha512-VDhLEyVCbuhOBBgHol9ShzIv9O8UCzdXeH4FoXu2DOcu/nnvTjLTck+BgXsCLv5ynDiUdoqsREEVFnoyPpFKVw== + "@sindresorhus/is@^0.7.0": version "0.7.0" resolved "https://registry.yarnpkg.com/@sindresorhus/is/-/is-0.7.0.tgz#9a06f4f137ee84d7df0460c1fdb1135ffa6c50fd" @@ -1593,6 +1619,11 @@ ansistyles@~0.1.3: version "0.1.3" resolved "https://registry.yarnpkg.com/ansistyles/-/ansistyles-0.1.3.tgz#5de60415bda071bb37127854c864f41b23254539" +any-promise@^1.0.0, any-promise@^1.3.0: + version "1.3.0" + resolved "https://registry.yarnpkg.com/any-promise/-/any-promise-1.3.0.tgz#abc6afeedcea52e809cdc0376aed3ce39635d17f" + integrity sha1-q8av7tzqUugJzcA3au0845Y10X8= + anymatch@^1.3.0: version "1.3.2" resolved "https://registry.yarnpkg.com/anymatch/-/anymatch-1.3.2.tgz#553dcb8f91e3c889845dfdba34c77721b90b9d7a" @@ -2657,6 +2688,13 @@ base@^0.11.1: mixin-deep "^1.2.0" pascalcase "^0.1.1" +basic-auth@^2.0.0: + version "2.0.1" + resolved "https://registry.yarnpkg.com/basic-auth/-/basic-auth-2.0.1.tgz#b998279bf47ce38344b4f3cf916d4679bbf51e3a" + integrity sha512-NF+epuEdnUYVlGuhaxbbq+dvJttwLnGY+YixlXlME5KpQ5W3CnXA5cVTneY3SPbPDRkcjMbifrwmFYcClgOZeg== + dependencies: + safe-buffer "5.1.2" + basic-auth@~2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/basic-auth/-/basic-auth-2.0.0.tgz#015db3f353e02e56377755f962742e8981e7bbba" @@ -4430,7 +4468,7 @@ compressible@~2.0.16: dependencies: mime-db ">= 1.40.0 < 2" -compression@^1.7.4: +compression@^1.6.2, compression@^1.7.4: version "1.7.4" resolved "https://registry.yarnpkg.com/compression/-/compression-1.7.4.tgz#95523eff170ca57c29a0ca41e6fe131f41e5bb8f" dependencies: @@ -4561,7 +4599,7 @@ cookie@0.3.1, cookie@^0.3.1: version "0.3.1" resolved "https://registry.yarnpkg.com/cookie/-/cookie-0.3.1.tgz#e7e0a1f9ef43b4c8ba925c5c5a96e806d16873bb" -cookie@0.4.0: +cookie@0.4.0, cookie@^0.4.0: version "0.4.0" resolved "https://registry.yarnpkg.com/cookie/-/cookie-0.4.0.tgz#beb437e7022b3b6d49019d088665303ebe9c14ba" integrity sha512-+Hp8fLp57wnUSt0tY0tHEXh4voZRDnoIrZPqlo3DPiI4y9lwg/jqx+1Om94/W6ZaPDOUbnjOt/99w66zk+l1Xg== @@ -7261,7 +7299,7 @@ express@^4.10.7: utils-merge "1.0.1" vary "~1.1.2" -express@^4.16.3: +express@^4.13.3, express@^4.16.3: version "4.17.1" resolved "https://registry.yarnpkg.com/express/-/express-4.17.1.tgz#4491fc38605cf51f8629d39c2b5d026f98a4c134" integrity sha512-mHJ9O79RqluphRrcw2X/GTh3k9tVv8YcoyY4Kkh4WDMUYKRZUq0h1o0w2rrrxBqM7VoeUVqgb27xlEMXTnYt4g== @@ -7452,6 +7490,20 @@ fast-sourcemap-concat@^1.4.0: source-map-url "^0.3.0" sourcemap-validator "^1.1.0" +fastboot-app-server@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/fastboot-app-server/-/fastboot-app-server-2.0.0.tgz#597bb9d125481cb08ce1ad686c87e19c01c711a6" + integrity sha512-aEAozc0u1TOynt7+x6vFa0W69KGYlnzbBLaoN55vpew+xamOBN7cr3H0TZqxrnqSy6B6DgJ2AKM2afe39i9/xQ== + dependencies: + basic-auth "^2.0.0" + chalk "^2.0.1" + compression "^1.6.2" + express "^4.13.3" + fastboot "^2.0.0" + fastboot-express-middleware "^2.0.0" + fs-promise "^2.0.3" + request "^2.81.0" + fastboot-express-middleware@^1.2.0: version "1.2.0" resolved "https://registry.yarnpkg.com/fastboot-express-middleware/-/fastboot-express-middleware-1.2.0.tgz#3f32fb21d8d01ad7c0c7d876b278601665ea17fa" @@ -7460,6 +7512,15 @@ fastboot-express-middleware@^1.2.0: fastboot "^1.2.0" request "^2.81.0" +fastboot-express-middleware@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/fastboot-express-middleware/-/fastboot-express-middleware-2.0.0.tgz#3cb2c4b744e738a709b4336c4166f1a059ab0ffb" + integrity sha512-sJHZrHpo/8jh56t+DTzaDcg6cnHbmXlTSAdfhRZbBa8XDY3TfN+TjHsHd4Z7vouLFU+ISuaZkzKfwGwipW5xwQ== + dependencies: + chalk "^2.0.1" + fastboot "^2.0.1" + request "^2.81.0" + fastboot-transform@0.1.1: version "0.1.1" resolved "https://registry.yarnpkg.com/fastboot-transform/-/fastboot-transform-0.1.1.tgz#de55550d85644ec94cb11264c2ba883e3ea3b255" @@ -7486,6 +7547,20 @@ fastboot@^1.2.0: simple-dom "^1.0.0" source-map-support "^0.5.0" +fastboot@^2.0.0, fastboot@^2.0.1: + version "2.0.3" + resolved "https://registry.yarnpkg.com/fastboot/-/fastboot-2.0.3.tgz#0b712e6c590f1b463dc5b12138893bcbbafa2459" + integrity sha512-NNH/o+XhITAQUnW2CC9IDXlcnI74W2BONjtRSRmc01N3uJl/7pcvX9iWTUWu2PYQbQZUBu8HzVFt7GmQ9qw9JQ== + dependencies: + chalk "^2.0.1" + cookie "^0.4.0" + debug "^4.1.0" + najax "^1.0.3" + resolve "^1.8.1" + rsvp "^4.8.0" + simple-dom "^1.4.0" + source-map-support "^0.5.0" + faye-websocket@~0.10.0: version "0.10.0" resolved "https://registry.yarnpkg.com/faye-websocket/-/faye-websocket-0.10.0.tgz#4e492f8d04dfb6f89003507f6edbf2d501e7c6f4" @@ -7870,6 +7945,16 @@ fs-minipass@^1.2.5: dependencies: minipass "^2.2.1" +fs-promise@^2.0.3: + version "2.0.3" + resolved "https://registry.yarnpkg.com/fs-promise/-/fs-promise-2.0.3.tgz#f64e4f854bcf689aa8bddcba268916db3db46854" + integrity sha1-9k5PhUvPaJqovdy6JokW2z20aFQ= + dependencies: + any-promise "^1.3.0" + fs-extra "^2.0.0" + mz "^2.6.0" + thenify-all "^1.6.0" + fs-readdir-recursive@^0.1.0: version "0.1.2" resolved "https://registry.yarnpkg.com/fs-readdir-recursive/-/fs-readdir-recursive-0.1.2.tgz#315b4fb8c1ca5b8c47defef319d073dad3568059" @@ -10798,6 +10883,15 @@ mute-stream@~0.0.4: version "0.0.8" resolved "https://registry.yarnpkg.com/mute-stream/-/mute-stream-0.0.8.tgz#1630c42b2251ff81e2a283de96a5497ea92e5e0d" +mz@^2.6.0: + version "2.7.0" + resolved "https://registry.yarnpkg.com/mz/-/mz-2.7.0.tgz#95008057a56cafadc2bc63dde7f9ff6955948e32" + integrity sha512-z81GNO7nnYMEhrGh9LeymoE4+Yr0Wn5McHIZMK5cfQCl+NDX08sCZgUc9/6MHni9IWuFLm1Z3HTCXu2z9fN62Q== + dependencies: + any-promise "^1.0.0" + object-assign "^4.0.1" + thenify-all "^1.0.0" + najax@^1.0.2: version "1.0.3" resolved "https://registry.yarnpkg.com/najax/-/najax-1.0.3.tgz#11145f4d910446ea661d8ab7fcef53f6ad164ae5" @@ -13013,6 +13107,11 @@ rsvp@^4.6.1, rsvp@^4.7.0, rsvp@^4.8.1, rsvp@^4.8.2: version "4.8.2" resolved "https://registry.yarnpkg.com/rsvp/-/rsvp-4.8.2.tgz#9d5647108735784eb13418cdddb56f75b919d722" +rsvp@^4.8.0: + version "4.8.5" + resolved "https://registry.yarnpkg.com/rsvp/-/rsvp-4.8.5.tgz#c8f155311d167f68f21e168df71ec5b083113734" + integrity sha512-nfMOlASu9OnRJo1mbEk2cz0D56a1MBNrJ7orjRZQG10XDyuvwksKbuXNp6qa+kbn839HwjwhBzhFmdsaEAfauA== + rsvp@^4.8.4: version "4.8.4" resolved "https://registry.yarnpkg.com/rsvp/-/rsvp-4.8.4.tgz#b50e6b34583f3dd89329a2f23a8a2be072845911" @@ -13077,6 +13176,11 @@ safe-buffer@5.1.2, safe-buffer@^5.1.0, safe-buffer@^5.1.2: version "5.1.2" resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.1.2.tgz#991ec69d296e0313747d59bdfd2b745c35f8828d" +safe-eval@^0.4.1: + version "0.4.1" + resolved "https://registry.yarnpkg.com/safe-eval/-/safe-eval-0.4.1.tgz#e54ba5a1bbdec795d488f6c8765e0c2a78b4cdc0" + integrity sha512-wmiu4RSYVZ690RP1+cv/LxfPK1dIlEN35aW7iv4SMYdqDrHbkll4+NJcHmKm7PbCuI1df1otOcPwgcc2iFR85g== + safe-json-parse@~1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/safe-json-parse/-/safe-json-parse-1.0.1.tgz#3e76723e38dfdda13c9b1d29a1e07ffee4b30b57" @@ -13406,6 +13510,17 @@ simple-dom@^1.0.0: version "1.3.0" resolved "https://registry.yarnpkg.com/simple-dom/-/simple-dom-1.3.0.tgz#8473e0d34e340544b061410dba3faf4f1b7aa282" +simple-dom@^1.4.0: + version "1.4.0" + resolved "https://registry.yarnpkg.com/simple-dom/-/simple-dom-1.4.0.tgz#78ad1f41b8b70d16f82b7e0d458441c9262565b7" + integrity sha512-TnBPkmOyjdaOqyBMb4ick+n8c0Xv9Iwg1PykFV7hz9Se3UCiacTbRb+25cPmvozFNJLBUNvUzX/KsPfXF14ivA== + dependencies: + "@simple-dom/document" "^1.4.0" + "@simple-dom/interface" "^1.4.0" + "@simple-dom/parser" "^1.4.0" + "@simple-dom/serializer" "^1.4.0" + "@simple-dom/void-map" "^1.4.0" + simple-fmt@~0.1.0: version "0.1.0" resolved "https://registry.yarnpkg.com/simple-fmt/-/simple-fmt-0.1.0.tgz#191bf566a59e6530482cb25ab53b4a8dc85c3a6b" @@ -14187,6 +14302,20 @@ text-table@^0.2.0, text-table@~0.2.0: version "2.2.0" resolved "https://registry.yarnpkg.com/textextensions/-/textextensions-2.2.0.tgz#38ac676151285b658654581987a0ce1a4490d286" +thenify-all@^1.0.0, thenify-all@^1.6.0: + version "1.6.0" + resolved "https://registry.yarnpkg.com/thenify-all/-/thenify-all-1.6.0.tgz#1a1918d402d8fc3f98fbf234db0bcc8cc10e9726" + integrity sha1-GhkY1ALY/D+Y+/I02wvMjMEOlyY= + dependencies: + thenify ">= 3.1.0 < 4" + +"thenify@>= 3.1.0 < 4": + version "3.3.0" + resolved "https://registry.yarnpkg.com/thenify/-/thenify-3.3.0.tgz#e69e38a1babe969b0108207978b9f62b88604839" + integrity sha1-5p44obq+lpsBCCB5eLn2K4hgSDk= + dependencies: + any-promise "^1.0.0" + three-way-merger@^0.5.0: version "0.5.0" resolved "https://registry.yarnpkg.com/three-way-merger/-/three-way-merger-0.5.0.tgz#4e6b1d8eb637f139af0c6323881356edab76d1c4" From d41c7080c7db335fd6cd270fa1d9c87dd671f16f Mon Sep 17 00:00:00 2001 From: iamareebjamal Date: Sun, 29 Dec 2019 22:24:13 +0530 Subject: [PATCH 3/5] fix --- config/environment.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/config/environment.js b/config/environment.js index 71bc67f2a8d..5b92684cff5 100644 --- a/config/environment.js +++ b/config/environment.js @@ -99,7 +99,7 @@ module.exports = function(environment) { ENV['ember-simple-auth-token'] = { refreshAccessTokens : false, - serverTokenEndpoint : `/auth/session`, + serverTokenEndpoint : `${ENV.APP.apiHost}/auth/session`, identificationField : 'email', passwordField : 'password', tokenPropertyName : 'access_token', From d167ea98518d538762711270f190a6eabc230a53 Mon Sep 17 00:00:00 2001 From: iamareebjamal Date: Mon, 30 Dec 2019 01:17:55 +0530 Subject: [PATCH 4/5] fin --- Dockerfile | 15 ++++++++------- package.json | 1 - scripts/fastboot-server.js | 2 +- yarn.lock | 5 +++++ 4 files changed, 14 insertions(+), 9 deletions(-) diff --git a/Dockerfile b/Dockerfile index dfedbba36c3..59c309a0099 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,5 +1,4 @@ -FROM node:10-alpine as builder -LABEL maintainer="Niranjan Rajendran " +FROM node:12-alpine as builder WORKDIR /app @@ -25,16 +24,18 @@ FROM node:10-alpine WORKDIR /fastboot -COPY scripts/fastboot-server.js . -COPY --from=builder /app/dist/ app/ +COPY --from=builder /app/dist/ dist/ RUN apk add --no-cache ca-certificates && \ - cp app/package.json . && \ + cp dist/package.json . && \ yarn install && \ - yarn add fastboot-app-server && \ + yarn add fastboot-app-server dotenv lodash safe-eval && \ rm -rf yarn.lock && \ yarn cache clean +COPY scripts/* ./scripts/ +COPY config/environment.js ./config/ + EXPOSE 4000 -CMD ["node", "fastboot-server.js"] +CMD ["node", "./scripts/fastboot-server.js"] diff --git a/package.json b/package.json index f82ec843018..a80059ad29b 100644 --- a/package.json +++ b/package.json @@ -112,7 +112,6 @@ "eslint-plugin-ember": "^6.2.0", "eslint-plugin-ember-suave": "^1.0.0", "eslint-plugin-node": "^9.0.1", - "fastboot-app-server": "^2.0.0", "google-material-color": "^1.3.1", "http-status": "^1.3.2", "jquery": "^3.4.1", diff --git a/scripts/fastboot-server.js b/scripts/fastboot-server.js index fc66aff4850..1f0c9e13ade 100644 --- a/scripts/fastboot-server.js +++ b/scripts/fastboot-server.js @@ -4,7 +4,7 @@ const FastBootAppServer = require('fastboot-app-server'); const { injectEnvironment } = require('./replace-config'); const enableGzip = process.env.FASTBOOT_GZIP || 'true'; -const fastbootDistPath = process.env.FASTBOOT_DIST_PATH || '/fastboot/app'; +const fastbootDistPath = process.env.FASTBOOT_DIST_PATH || './dist'; const enableChunkedResponse = process.env.FASTBOOT_CHUNKED_RESPONSE || 'true'; const fastbootHost = process.env.FASTBOOT_HOST || '0.0.0.0'; const fastbootPort = process.env.FASTBOOT_PORT || process.env.PORT || '4000'; diff --git a/yarn.lock b/yarn.lock index 0f0431ca509..e722b2bf82c 100644 --- a/yarn.lock +++ b/yarn.lock @@ -5145,6 +5145,11 @@ dotenv@^7.0.0: version "7.0.0" resolved "https://registry.yarnpkg.com/dotenv/-/dotenv-7.0.0.tgz#a2be3cd52736673206e8a85fb5210eea29628e7c" +dotenv@^8.2.0: + version "8.2.0" + resolved "https://registry.yarnpkg.com/dotenv/-/dotenv-8.2.0.tgz#97e619259ada750eea3e4ea3e26bceea5424b16a" + integrity sha512-8sJ78ElpbDJBHNeBzUbUVLsqKdccaa/BXF1uPTw3GrvQTBgrQrtObr2mUrE38vzYd8cEv+m/JBfDLioYcfXoaw== + duplexer3@^0.1.4: version "0.1.4" resolved "https://registry.yarnpkg.com/duplexer3/-/duplexer3-0.1.4.tgz#ee01dd1cac0ed3cbc7fdbea37dc0a8f1ce002ce2" From a6b483b9c91e37ebdf5cc2d43d8e56c89ba55593 Mon Sep 17 00:00:00 2001 From: iamareebjamal Date: Mon, 30 Dec 2019 01:19:30 +0530 Subject: [PATCH 5/5] fin --- package.json | 1 - yarn.lock | 142 ++------------------------------------------------- 2 files changed, 4 insertions(+), 139 deletions(-) diff --git a/package.json b/package.json index a80059ad29b..19bdcccb153 100644 --- a/package.json +++ b/package.json @@ -121,7 +121,6 @@ "paypal-checkout": "^4.0.268", "query-string": "^6.5.0", "qunit-dom": "^0.8.5", - "safe-eval": "^0.4.1", "sanitize-html": "^1.20.1", "sass": "^1.20.1", "semantic-ui-ember": "^3.0.3", diff --git a/yarn.lock b/yarn.lock index e722b2bf82c..d83c64d3472 100644 --- a/yarn.lock +++ b/yarn.lock @@ -1007,37 +1007,11 @@ ember-compatibility-helpers "^1.0.0" ember-raf-scheduler "0.1.0" -"@simple-dom/document@^1.4.0": - version "1.4.0" - resolved "https://registry.yarnpkg.com/@simple-dom/document/-/document-1.4.0.tgz#af60855f957f284d436983798ef1006cca1a1678" - integrity sha512-/RUeVH4kuD3rzo5/91+h4Z1meLSLP66eXqpVAw/4aZmYozkeqUkMprq0znL4psX/adEed5cBgiNJcfMz/eKZLg== - dependencies: - "@simple-dom/interface" "^1.4.0" - -"@simple-dom/interface@1.4.0", "@simple-dom/interface@^1.4.0": +"@simple-dom/interface@1.4.0": version "1.4.0" resolved "https://registry.yarnpkg.com/@simple-dom/interface/-/interface-1.4.0.tgz#e8feea579232017f89b0138e2726facda6fbb71f" integrity sha512-l5qumKFWU0S+4ZzMaLXFU8tQZsicHEMEyAxI5kDFGhJsRqDwe0a7/iPA/GdxlGyDKseQQAgIz5kzU7eXTrlSpA== -"@simple-dom/parser@^1.4.0": - version "1.4.0" - resolved "https://registry.yarnpkg.com/@simple-dom/parser/-/parser-1.4.0.tgz#b1fee1a23f48a37d6bdd98f5242db0cab5b67abc" - integrity sha512-TNjDkOehueRIKr1df416qk9ELj+qWuVVJNIT25y1aZg3pQvxv4UPGrgaDFte7dsWBTbF3V8NYPNQ5FDUZQ8Wlg== - dependencies: - "@simple-dom/interface" "^1.4.0" - -"@simple-dom/serializer@^1.4.0": - version "1.4.0" - resolved "https://registry.yarnpkg.com/@simple-dom/serializer/-/serializer-1.4.0.tgz#98470f357f418d72b1a1ec78d68191e60aefe215" - integrity sha512-mI1yRahsVs8atXLiQksineDsFEFqeG7RHwnnBTDOK6inbzl4tZQgjR+Z7edjgIJq5j5RhZvwPI6EuCji9B3eQw== - dependencies: - "@simple-dom/interface" "^1.4.0" - -"@simple-dom/void-map@^1.4.0": - version "1.4.0" - resolved "https://registry.yarnpkg.com/@simple-dom/void-map/-/void-map-1.4.0.tgz#f15f07568fe1076740407266aa5e6eac249bc78c" - integrity sha512-VDhLEyVCbuhOBBgHol9ShzIv9O8UCzdXeH4FoXu2DOcu/nnvTjLTck+BgXsCLv5ynDiUdoqsREEVFnoyPpFKVw== - "@sindresorhus/is@^0.7.0": version "0.7.0" resolved "https://registry.yarnpkg.com/@sindresorhus/is/-/is-0.7.0.tgz#9a06f4f137ee84d7df0460c1fdb1135ffa6c50fd" @@ -1619,11 +1593,6 @@ ansistyles@~0.1.3: version "0.1.3" resolved "https://registry.yarnpkg.com/ansistyles/-/ansistyles-0.1.3.tgz#5de60415bda071bb37127854c864f41b23254539" -any-promise@^1.0.0, any-promise@^1.3.0: - version "1.3.0" - resolved "https://registry.yarnpkg.com/any-promise/-/any-promise-1.3.0.tgz#abc6afeedcea52e809cdc0376aed3ce39635d17f" - integrity sha1-q8av7tzqUugJzcA3au0845Y10X8= - anymatch@^1.3.0: version "1.3.2" resolved "https://registry.yarnpkg.com/anymatch/-/anymatch-1.3.2.tgz#553dcb8f91e3c889845dfdba34c77721b90b9d7a" @@ -2688,13 +2657,6 @@ base@^0.11.1: mixin-deep "^1.2.0" pascalcase "^0.1.1" -basic-auth@^2.0.0: - version "2.0.1" - resolved "https://registry.yarnpkg.com/basic-auth/-/basic-auth-2.0.1.tgz#b998279bf47ce38344b4f3cf916d4679bbf51e3a" - integrity sha512-NF+epuEdnUYVlGuhaxbbq+dvJttwLnGY+YixlXlME5KpQ5W3CnXA5cVTneY3SPbPDRkcjMbifrwmFYcClgOZeg== - dependencies: - safe-buffer "5.1.2" - basic-auth@~2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/basic-auth/-/basic-auth-2.0.0.tgz#015db3f353e02e56377755f962742e8981e7bbba" @@ -4468,7 +4430,7 @@ compressible@~2.0.16: dependencies: mime-db ">= 1.40.0 < 2" -compression@^1.6.2, compression@^1.7.4: +compression@^1.7.4: version "1.7.4" resolved "https://registry.yarnpkg.com/compression/-/compression-1.7.4.tgz#95523eff170ca57c29a0ca41e6fe131f41e5bb8f" dependencies: @@ -4599,7 +4561,7 @@ cookie@0.3.1, cookie@^0.3.1: version "0.3.1" resolved "https://registry.yarnpkg.com/cookie/-/cookie-0.3.1.tgz#e7e0a1f9ef43b4c8ba925c5c5a96e806d16873bb" -cookie@0.4.0, cookie@^0.4.0: +cookie@0.4.0: version "0.4.0" resolved "https://registry.yarnpkg.com/cookie/-/cookie-0.4.0.tgz#beb437e7022b3b6d49019d088665303ebe9c14ba" integrity sha512-+Hp8fLp57wnUSt0tY0tHEXh4voZRDnoIrZPqlo3DPiI4y9lwg/jqx+1Om94/W6ZaPDOUbnjOt/99w66zk+l1Xg== @@ -5145,11 +5107,6 @@ dotenv@^7.0.0: version "7.0.0" resolved "https://registry.yarnpkg.com/dotenv/-/dotenv-7.0.0.tgz#a2be3cd52736673206e8a85fb5210eea29628e7c" -dotenv@^8.2.0: - version "8.2.0" - resolved "https://registry.yarnpkg.com/dotenv/-/dotenv-8.2.0.tgz#97e619259ada750eea3e4ea3e26bceea5424b16a" - integrity sha512-8sJ78ElpbDJBHNeBzUbUVLsqKdccaa/BXF1uPTw3GrvQTBgrQrtObr2mUrE38vzYd8cEv+m/JBfDLioYcfXoaw== - duplexer3@^0.1.4: version "0.1.4" resolved "https://registry.yarnpkg.com/duplexer3/-/duplexer3-0.1.4.tgz#ee01dd1cac0ed3cbc7fdbea37dc0a8f1ce002ce2" @@ -7304,7 +7261,7 @@ express@^4.10.7: utils-merge "1.0.1" vary "~1.1.2" -express@^4.13.3, express@^4.16.3: +express@^4.16.3: version "4.17.1" resolved "https://registry.yarnpkg.com/express/-/express-4.17.1.tgz#4491fc38605cf51f8629d39c2b5d026f98a4c134" integrity sha512-mHJ9O79RqluphRrcw2X/GTh3k9tVv8YcoyY4Kkh4WDMUYKRZUq0h1o0w2rrrxBqM7VoeUVqgb27xlEMXTnYt4g== @@ -7495,20 +7452,6 @@ fast-sourcemap-concat@^1.4.0: source-map-url "^0.3.0" sourcemap-validator "^1.1.0" -fastboot-app-server@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/fastboot-app-server/-/fastboot-app-server-2.0.0.tgz#597bb9d125481cb08ce1ad686c87e19c01c711a6" - integrity sha512-aEAozc0u1TOynt7+x6vFa0W69KGYlnzbBLaoN55vpew+xamOBN7cr3H0TZqxrnqSy6B6DgJ2AKM2afe39i9/xQ== - dependencies: - basic-auth "^2.0.0" - chalk "^2.0.1" - compression "^1.6.2" - express "^4.13.3" - fastboot "^2.0.0" - fastboot-express-middleware "^2.0.0" - fs-promise "^2.0.3" - request "^2.81.0" - fastboot-express-middleware@^1.2.0: version "1.2.0" resolved "https://registry.yarnpkg.com/fastboot-express-middleware/-/fastboot-express-middleware-1.2.0.tgz#3f32fb21d8d01ad7c0c7d876b278601665ea17fa" @@ -7517,15 +7460,6 @@ fastboot-express-middleware@^1.2.0: fastboot "^1.2.0" request "^2.81.0" -fastboot-express-middleware@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/fastboot-express-middleware/-/fastboot-express-middleware-2.0.0.tgz#3cb2c4b744e738a709b4336c4166f1a059ab0ffb" - integrity sha512-sJHZrHpo/8jh56t+DTzaDcg6cnHbmXlTSAdfhRZbBa8XDY3TfN+TjHsHd4Z7vouLFU+ISuaZkzKfwGwipW5xwQ== - dependencies: - chalk "^2.0.1" - fastboot "^2.0.1" - request "^2.81.0" - fastboot-transform@0.1.1: version "0.1.1" resolved "https://registry.yarnpkg.com/fastboot-transform/-/fastboot-transform-0.1.1.tgz#de55550d85644ec94cb11264c2ba883e3ea3b255" @@ -7552,20 +7486,6 @@ fastboot@^1.2.0: simple-dom "^1.0.0" source-map-support "^0.5.0" -fastboot@^2.0.0, fastboot@^2.0.1: - version "2.0.3" - resolved "https://registry.yarnpkg.com/fastboot/-/fastboot-2.0.3.tgz#0b712e6c590f1b463dc5b12138893bcbbafa2459" - integrity sha512-NNH/o+XhITAQUnW2CC9IDXlcnI74W2BONjtRSRmc01N3uJl/7pcvX9iWTUWu2PYQbQZUBu8HzVFt7GmQ9qw9JQ== - dependencies: - chalk "^2.0.1" - cookie "^0.4.0" - debug "^4.1.0" - najax "^1.0.3" - resolve "^1.8.1" - rsvp "^4.8.0" - simple-dom "^1.4.0" - source-map-support "^0.5.0" - faye-websocket@~0.10.0: version "0.10.0" resolved "https://registry.yarnpkg.com/faye-websocket/-/faye-websocket-0.10.0.tgz#4e492f8d04dfb6f89003507f6edbf2d501e7c6f4" @@ -7950,16 +7870,6 @@ fs-minipass@^1.2.5: dependencies: minipass "^2.2.1" -fs-promise@^2.0.3: - version "2.0.3" - resolved "https://registry.yarnpkg.com/fs-promise/-/fs-promise-2.0.3.tgz#f64e4f854bcf689aa8bddcba268916db3db46854" - integrity sha1-9k5PhUvPaJqovdy6JokW2z20aFQ= - dependencies: - any-promise "^1.3.0" - fs-extra "^2.0.0" - mz "^2.6.0" - thenify-all "^1.6.0" - fs-readdir-recursive@^0.1.0: version "0.1.2" resolved "https://registry.yarnpkg.com/fs-readdir-recursive/-/fs-readdir-recursive-0.1.2.tgz#315b4fb8c1ca5b8c47defef319d073dad3568059" @@ -10888,15 +10798,6 @@ mute-stream@~0.0.4: version "0.0.8" resolved "https://registry.yarnpkg.com/mute-stream/-/mute-stream-0.0.8.tgz#1630c42b2251ff81e2a283de96a5497ea92e5e0d" -mz@^2.6.0: - version "2.7.0" - resolved "https://registry.yarnpkg.com/mz/-/mz-2.7.0.tgz#95008057a56cafadc2bc63dde7f9ff6955948e32" - integrity sha512-z81GNO7nnYMEhrGh9LeymoE4+Yr0Wn5McHIZMK5cfQCl+NDX08sCZgUc9/6MHni9IWuFLm1Z3HTCXu2z9fN62Q== - dependencies: - any-promise "^1.0.0" - object-assign "^4.0.1" - thenify-all "^1.0.0" - najax@^1.0.2: version "1.0.3" resolved "https://registry.yarnpkg.com/najax/-/najax-1.0.3.tgz#11145f4d910446ea661d8ab7fcef53f6ad164ae5" @@ -13112,11 +13013,6 @@ rsvp@^4.6.1, rsvp@^4.7.0, rsvp@^4.8.1, rsvp@^4.8.2: version "4.8.2" resolved "https://registry.yarnpkg.com/rsvp/-/rsvp-4.8.2.tgz#9d5647108735784eb13418cdddb56f75b919d722" -rsvp@^4.8.0: - version "4.8.5" - resolved "https://registry.yarnpkg.com/rsvp/-/rsvp-4.8.5.tgz#c8f155311d167f68f21e168df71ec5b083113734" - integrity sha512-nfMOlASu9OnRJo1mbEk2cz0D56a1MBNrJ7orjRZQG10XDyuvwksKbuXNp6qa+kbn839HwjwhBzhFmdsaEAfauA== - rsvp@^4.8.4: version "4.8.4" resolved "https://registry.yarnpkg.com/rsvp/-/rsvp-4.8.4.tgz#b50e6b34583f3dd89329a2f23a8a2be072845911" @@ -13181,11 +13077,6 @@ safe-buffer@5.1.2, safe-buffer@^5.1.0, safe-buffer@^5.1.2: version "5.1.2" resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.1.2.tgz#991ec69d296e0313747d59bdfd2b745c35f8828d" -safe-eval@^0.4.1: - version "0.4.1" - resolved "https://registry.yarnpkg.com/safe-eval/-/safe-eval-0.4.1.tgz#e54ba5a1bbdec795d488f6c8765e0c2a78b4cdc0" - integrity sha512-wmiu4RSYVZ690RP1+cv/LxfPK1dIlEN35aW7iv4SMYdqDrHbkll4+NJcHmKm7PbCuI1df1otOcPwgcc2iFR85g== - safe-json-parse@~1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/safe-json-parse/-/safe-json-parse-1.0.1.tgz#3e76723e38dfdda13c9b1d29a1e07ffee4b30b57" @@ -13515,17 +13406,6 @@ simple-dom@^1.0.0: version "1.3.0" resolved "https://registry.yarnpkg.com/simple-dom/-/simple-dom-1.3.0.tgz#8473e0d34e340544b061410dba3faf4f1b7aa282" -simple-dom@^1.4.0: - version "1.4.0" - resolved "https://registry.yarnpkg.com/simple-dom/-/simple-dom-1.4.0.tgz#78ad1f41b8b70d16f82b7e0d458441c9262565b7" - integrity sha512-TnBPkmOyjdaOqyBMb4ick+n8c0Xv9Iwg1PykFV7hz9Se3UCiacTbRb+25cPmvozFNJLBUNvUzX/KsPfXF14ivA== - dependencies: - "@simple-dom/document" "^1.4.0" - "@simple-dom/interface" "^1.4.0" - "@simple-dom/parser" "^1.4.0" - "@simple-dom/serializer" "^1.4.0" - "@simple-dom/void-map" "^1.4.0" - simple-fmt@~0.1.0: version "0.1.0" resolved "https://registry.yarnpkg.com/simple-fmt/-/simple-fmt-0.1.0.tgz#191bf566a59e6530482cb25ab53b4a8dc85c3a6b" @@ -14307,20 +14187,6 @@ text-table@^0.2.0, text-table@~0.2.0: version "2.2.0" resolved "https://registry.yarnpkg.com/textextensions/-/textextensions-2.2.0.tgz#38ac676151285b658654581987a0ce1a4490d286" -thenify-all@^1.0.0, thenify-all@^1.6.0: - version "1.6.0" - resolved "https://registry.yarnpkg.com/thenify-all/-/thenify-all-1.6.0.tgz#1a1918d402d8fc3f98fbf234db0bcc8cc10e9726" - integrity sha1-GhkY1ALY/D+Y+/I02wvMjMEOlyY= - dependencies: - thenify ">= 3.1.0 < 4" - -"thenify@>= 3.1.0 < 4": - version "3.3.0" - resolved "https://registry.yarnpkg.com/thenify/-/thenify-3.3.0.tgz#e69e38a1babe969b0108207978b9f62b88604839" - integrity sha1-5p44obq+lpsBCCB5eLn2K4hgSDk= - dependencies: - any-promise "^1.0.0" - three-way-merger@^0.5.0: version "0.5.0" resolved "https://registry.yarnpkg.com/three-way-merger/-/three-way-merger-0.5.0.tgz#4e6b1d8eb637f139af0c6323881356edab76d1c4"