From 453be654e95f0b228266bb1482376666fdad046e Mon Sep 17 00:00:00 2001 From: Jonathan Carter Date: Mon, 26 Jun 2017 23:54:58 -0700 Subject: [PATCH 1/4] Adding App Insights support --- 8.1/startup/generateStartupCommand.js | 40 ++++- 8.1/startup/npm-shrinkwrap.json | 216 -------------------------- 8.1/startup/package.json | 1 + 3 files changed, 36 insertions(+), 221 deletions(-) delete mode 100644 8.1/startup/npm-shrinkwrap.json diff --git a/8.1/startup/generateStartupCommand.js b/8.1/startup/generateStartupCommand.js index 0e6b656..8553747 100644 --- a/8.1/startup/generateStartupCommand.js +++ b/8.1/startup/generateStartupCommand.js @@ -18,15 +18,45 @@ if (typeof process.env.WEBSITE_ROLE_INSTANCE_ID !== 'undefined' roleInstanceId = process.env.WEBSITE_ROLE_INSTANCE_ID; } -var startupCommand = fs.readFileSync(CMDFILE, 'utf8').trim(); +// Is Application Insights enabled, with an associated ikey? +var appInsightsEnabled = process.env.ENABLE_APPINSIGHTS && process.env.APPINSIGHTS_INSTRUMENTATIONKEY; +var appInsightsPreloadArg = "--require /opt/startup/initAppInsights.js"; +var nodeCommandPrefix = "node "; + +if (appInsightsEnabled) { + console.log("Application Insights enabled"); + nodeCommandPrefix += appInsightsPreloadArg + " "; +} + +function augmentCommandIfNeccessary(command) { + if (!command || !appInsightsEnabled) { + return command; + } + + // Application Insights is enabled, so we need to + // to update the specified startup command to pre-load it. + if (command.indexOf("pm2 start ") === 0) { + return command += " --node-args='" + appInsightsPreloadArg + "'"; + } else if (command.indexOf("node ") === 0) { + // Simply replacing the prefix allows the user to specify + // additional Node flags, in addition to the AI preload one. + return command.replace("node ", nodeCommandPrefix); + } + + // The command is using an unknown executable, and therefore, + // the App Insights runtime can't be automatically enabled. + return command; +} + +var startupCommand = augmentCommandIfNeccessary(fs.readFileSync(CMDFILE, 'utf8').trim()); // No user-provided startup command, check for scripts.start if (!startupCommand) { var packageJsonPath = "/home/site/wwwroot/package.json"; var json = fs.existsSync(packageJsonPath) && JSON.parse(fs.readFileSync(packageJsonPath, 'utf8')) if (typeof json == 'object' && typeof json.scripts == 'object' && typeof json.scripts.start == 'string') { - console.log("Found scripts.start in package.json") - startupCommand = 'npm start'; + console.log("Found scripts.start in package.json"); + startupCommand = augmentCommandIfNeccessary(json.scripts.start.trim()); } } @@ -37,7 +67,7 @@ if (!startupCommand) { var filename = "/home/site/wwwroot/" + autos[i]; if (fs.existsSync(filename)) { console.log("No startup command entered, but found " + filename); - startupCommand = "node " + filename; + startupCommand = nodeCommandPrefix + filename; break; } } @@ -47,7 +77,7 @@ if (!startupCommand) { if (!startupCommand) { console.log("No startup command or autodetected startup script " + "found. Running default static site."); - startupCommand = "node " + DEFAULTAPP; + startupCommand = nodeCommandPrefix + DEFAULTAPP; } // If HTTP logging is enabled and it doesn't appear that the user has tried to do any diff --git a/8.1/startup/npm-shrinkwrap.json b/8.1/startup/npm-shrinkwrap.json deleted file mode 100644 index 5eef997..0000000 --- a/8.1/startup/npm-shrinkwrap.json +++ /dev/null @@ -1,216 +0,0 @@ -{ - "name": "default-static-site", - "version": "1.0.0", - "dependencies": { - "accepts": { - "version": "1.3.3", - "from": "accepts@>=1.3.3 <1.4.0", - "resolved": "https://registry.npmjs.org/accepts/-/accepts-1.3.3.tgz" - }, - "array-flatten": { - "version": "1.1.1", - "from": "array-flatten@1.1.1", - "resolved": "https://registry.npmjs.org/array-flatten/-/array-flatten-1.1.1.tgz" - }, - "content-disposition": { - "version": "0.5.2", - "from": "content-disposition@0.5.2", - "resolved": "https://registry.npmjs.org/content-disposition/-/content-disposition-0.5.2.tgz" - }, - "content-type": { - "version": "1.0.2", - "from": "content-type@>=1.0.2 <1.1.0", - "resolved": "https://registry.npmjs.org/content-type/-/content-type-1.0.2.tgz" - }, - "cookie": { - "version": "0.3.1", - "from": "cookie@0.3.1", - "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.3.1.tgz" - }, - "cookie-signature": { - "version": "1.0.6", - "from": "cookie-signature@1.0.6", - "resolved": "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.0.6.tgz" - }, - "debug": { - "version": "2.6.7", - "from": "debug@2.6.7", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.7.tgz" - }, - "depd": { - "version": "1.1.0", - "from": "depd@>=1.1.0 <1.2.0", - "resolved": "https://registry.npmjs.org/depd/-/depd-1.1.0.tgz" - }, - "destroy": { - "version": "1.0.4", - "from": "destroy@>=1.0.4 <1.1.0", - "resolved": "https://registry.npmjs.org/destroy/-/destroy-1.0.4.tgz" - }, - "ee-first": { - "version": "1.1.1", - "from": "ee-first@1.1.1", - "resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz" - }, - "encodeurl": { - "version": "1.0.1", - "from": "encodeurl@>=1.0.1 <1.1.0", - "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.1.tgz" - }, - "escape-html": { - "version": "1.0.3", - "from": "escape-html@>=1.0.3 <1.1.0", - "resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz" - }, - "etag": { - "version": "1.8.0", - "from": "etag@>=1.8.0 <1.9.0", - "resolved": "https://registry.npmjs.org/etag/-/etag-1.8.0.tgz" - }, - "express": { - "version": "4.15.3", - "from": "express@4.15.3", - "resolved": "https://registry.npmjs.org/express/-/express-4.15.3.tgz" - }, - "finalhandler": { - "version": "1.0.3", - "from": "finalhandler@>=1.0.3 <1.1.0", - "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.0.3.tgz" - }, - "forwarded": { - "version": "0.1.0", - "from": "forwarded@>=0.1.0 <0.2.0", - "resolved": "https://registry.npmjs.org/forwarded/-/forwarded-0.1.0.tgz" - }, - "fresh": { - "version": "0.5.0", - "from": "fresh@0.5.0", - "resolved": "https://registry.npmjs.org/fresh/-/fresh-0.5.0.tgz" - }, - "http-errors": { - "version": "1.6.1", - "from": "http-errors@>=1.6.1 <1.7.0", - "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.6.1.tgz" - }, - "inherits": { - "version": "2.0.3", - "from": "inherits@2.0.3", - "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz" - }, - "ipaddr.js": { - "version": "1.3.0", - "from": "ipaddr.js@1.3.0", - "resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-1.3.0.tgz" - }, - "media-typer": { - "version": "0.3.0", - "from": "media-typer@0.3.0", - "resolved": "https://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz" - }, - "merge-descriptors": { - "version": "1.0.1", - "from": "merge-descriptors@1.0.1", - "resolved": "https://registry.npmjs.org/merge-descriptors/-/merge-descriptors-1.0.1.tgz" - }, - "methods": { - "version": "1.1.2", - "from": "methods@>=1.1.2 <1.2.0", - "resolved": "https://registry.npmjs.org/methods/-/methods-1.1.2.tgz" - }, - "mime": { - "version": "1.3.4", - "from": "mime@1.3.4", - "resolved": "https://registry.npmjs.org/mime/-/mime-1.3.4.tgz" - }, - "mime-db": { - "version": "1.27.0", - "from": "mime-db@>=1.27.0 <1.28.0", - "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.27.0.tgz" - }, - "mime-types": { - "version": "2.1.15", - "from": "mime-types@>=2.1.11 <2.2.0", - "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.15.tgz" - }, - "ms": { - "version": "2.0.0", - "from": "ms@2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz" - }, - "negotiator": { - "version": "0.6.1", - "from": "negotiator@0.6.1", - "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.1.tgz" - }, - "on-finished": { - "version": "2.3.0", - "from": "on-finished@>=2.3.0 <2.4.0", - "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.3.0.tgz" - }, - "parseurl": { - "version": "1.3.1", - "from": "parseurl@>=1.3.1 <1.4.0", - "resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.1.tgz" - }, - "path-to-regexp": { - "version": "0.1.7", - "from": "path-to-regexp@0.1.7", - "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-0.1.7.tgz" - }, - "proxy-addr": { - "version": "1.1.4", - "from": "proxy-addr@>=1.1.4 <1.2.0", - "resolved": "https://registry.npmjs.org/proxy-addr/-/proxy-addr-1.1.4.tgz" - }, - "qs": { - "version": "6.4.0", - "from": "qs@6.4.0", - "resolved": "https://registry.npmjs.org/qs/-/qs-6.4.0.tgz" - }, - "range-parser": { - "version": "1.2.0", - "from": "range-parser@>=1.2.0 <1.3.0", - "resolved": "https://registry.npmjs.org/range-parser/-/range-parser-1.2.0.tgz" - }, - "send": { - "version": "0.15.3", - "from": "send@0.15.3", - "resolved": "https://registry.npmjs.org/send/-/send-0.15.3.tgz" - }, - "serve-static": { - "version": "1.12.3", - "from": "serve-static@1.12.3", - "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-1.12.3.tgz" - }, - "setprototypeof": { - "version": "1.0.3", - "from": "setprototypeof@1.0.3", - "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.0.3.tgz" - }, - "statuses": { - "version": "1.3.1", - "from": "statuses@>=1.3.1 <1.4.0", - "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.3.1.tgz" - }, - "type-is": { - "version": "1.6.15", - "from": "type-is@>=1.6.15 <1.7.0", - "resolved": "https://registry.npmjs.org/type-is/-/type-is-1.6.15.tgz" - }, - "unpipe": { - "version": "1.0.0", - "from": "unpipe@>=1.0.0 <1.1.0", - "resolved": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz" - }, - "utils-merge": { - "version": "1.0.0", - "from": "utils-merge@1.0.0", - "resolved": "https://registry.npmjs.org/utils-merge/-/utils-merge-1.0.0.tgz" - }, - "vary": { - "version": "1.1.1", - "from": "vary@>=1.1.1 <1.2.0", - "resolved": "https://registry.npmjs.org/vary/-/vary-1.1.1.tgz" - } - } -} diff --git a/8.1/startup/package.json b/8.1/startup/package.json index 9cf0726..9cc63c5 100644 --- a/8.1/startup/package.json +++ b/8.1/startup/package.json @@ -4,6 +4,7 @@ "description": "Express-driven static site hosted from default App Service wwwroot directory", "main": "default-static-site.js", "dependencies": { + "applicationinsights": "0.21.0", "express": "4.15.3" }, "devDependencies": {}, From 80a31d87f3342b1caaa36af22aa1f24127a21e57 Mon Sep 17 00:00:00 2001 From: Jonathan Carter Date: Mon, 26 Jun 2017 23:55:59 -0700 Subject: [PATCH 2/4] Adding lockfile --- 8.1/startup/initAppInsights.js | 8 ++ 8.1/startup/package-lock.json | 242 +++++++++++++++++++++++++++++++++ 2 files changed, 250 insertions(+) create mode 100644 8.1/startup/initAppInsights.js create mode 100644 8.1/startup/package-lock.json diff --git a/8.1/startup/initAppInsights.js b/8.1/startup/initAppInsights.js new file mode 100644 index 0000000..a0d8859 --- /dev/null +++ b/8.1/startup/initAppInsights.js @@ -0,0 +1,8 @@ +try { + // Initialize the Application Insights runtime, using the + // instrumentation key provided by the environment. + require("applicationinsights").setup().start(); +} catch (error) { + // Swallow any errors, in order to safeguard the + // user's app from any unexpected exceptions. +} \ No newline at end of file diff --git a/8.1/startup/package-lock.json b/8.1/startup/package-lock.json new file mode 100644 index 0000000..f4df78d --- /dev/null +++ b/8.1/startup/package-lock.json @@ -0,0 +1,242 @@ +{ + "name": "default-static-site", + "version": "1.0.0", + "lockfileVersion": 1, + "dependencies": { + "accepts": { + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/accepts/-/accepts-1.3.3.tgz", + "integrity": "sha1-w8p0NJOGSMPg2cHjKN1otiLChMo=" + }, + "applicationinsights": { + "version": "0.21.0", + "resolved": "https://registry.npmjs.org/applicationinsights/-/applicationinsights-0.21.0.tgz", + "integrity": "sha1-Ng9JIrg7wHhMb3TfBjZ+QlOJGWM=" + }, + "array-flatten": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/array-flatten/-/array-flatten-1.1.1.tgz", + "integrity": "sha1-ml9pkFGx5wczKPKgCJaLZOopVdI=" + }, + "content-disposition": { + "version": "0.5.2", + "resolved": "https://registry.npmjs.org/content-disposition/-/content-disposition-0.5.2.tgz", + "integrity": "sha1-DPaLud318r55YcOoUXjLhdunjLQ=" + }, + "content-type": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/content-type/-/content-type-1.0.2.tgz", + "integrity": "sha1-t9ETrueo3Se9IRM8TcJSnfFyHu0=" + }, + "cookie": { + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.3.1.tgz", + "integrity": "sha1-5+Ch+e9DtMi6klxcWpboBtFoc7s=" + }, + "cookie-signature": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.0.6.tgz", + "integrity": "sha1-4wOogrNCzD7oylE6eZmXNNqzriw=" + }, + "debug": { + "version": "2.6.7", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.7.tgz", + "integrity": "sha1-krrR9tBbu2u6Isyoi80OyJTChh4=" + }, + "depd": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/depd/-/depd-1.1.0.tgz", + "integrity": "sha1-4b2Cxqq2ztlluXuIsX7T5SjKGMM=" + }, + "destroy": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/destroy/-/destroy-1.0.4.tgz", + "integrity": "sha1-l4hXRCxEdJ5CBmE+N5RiBYJqvYA=" + }, + "diagnostic-channel": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/diagnostic-channel/-/diagnostic-channel-0.1.0.tgz", + "integrity": "sha1-emrYrVBmusVE2go3m6F0ujYqV88=" + }, + "diagnostic-channel-publishers": { + "version": "0.1.3", + "resolved": "https://registry.npmjs.org/diagnostic-channel-publishers/-/diagnostic-channel-publishers-0.1.3.tgz", + "integrity": "sha1-y9bdEK8e7M1JWsDtZ69fi2hvAKM=" + }, + "ee-first": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz", + "integrity": "sha1-WQxhFWsK4vTwJVcyoViyZrxWsh0=" + }, + "encodeurl": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.1.tgz", + "integrity": "sha1-eePVhlU0aQn+bw9Fpd5oEDspTSA=" + }, + "escape-html": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz", + "integrity": "sha1-Aljq5NPQwJdN4cFpGI7wBR0dGYg=" + }, + "etag": { + "version": "1.8.0", + "resolved": "https://registry.npmjs.org/etag/-/etag-1.8.0.tgz", + "integrity": "sha1-b2Ma7zNtbEY2K1F2QETOIWvjwFE=" + }, + "express": { + "version": "4.15.3", + "resolved": "https://registry.npmjs.org/express/-/express-4.15.3.tgz", + "integrity": "sha1-urZdDwOqgMNYQIly/HAPkWlEtmI=" + }, + "finalhandler": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.0.3.tgz", + "integrity": "sha1-70fneVDpmXgOhgIqVg4yF+DQzIk=" + }, + "forwarded": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/forwarded/-/forwarded-0.1.0.tgz", + "integrity": "sha1-Ge+YdMSuHCl7zweP3mOgm2aoQ2M=" + }, + "fresh": { + "version": "0.5.0", + "resolved": "https://registry.npmjs.org/fresh/-/fresh-0.5.0.tgz", + "integrity": "sha1-9HTKXmqSRtb9jglTz6m5yAWvp44=" + }, + "http-errors": { + "version": "1.6.1", + "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.6.1.tgz", + "integrity": "sha1-X4uO2YrKVFZWv1cplzh/kEpyIlc=" + }, + "inherits": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", + "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=" + }, + "ipaddr.js": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-1.3.0.tgz", + "integrity": "sha1-HgOlL9rYOou7KyXL9JmLTP/NPew=" + }, + "media-typer": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz", + "integrity": "sha1-hxDXrwqmJvj/+hzgAWhUUmMlV0g=" + }, + "merge-descriptors": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/merge-descriptors/-/merge-descriptors-1.0.1.tgz", + "integrity": "sha1-sAqqVW3YtEVoFQ7J0blT8/kMu2E=" + }, + "methods": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/methods/-/methods-1.1.2.tgz", + "integrity": "sha1-VSmk1nZUE07cxSZmVoNbD4Ua/O4=" + }, + "mime": { + "version": "1.3.4", + "resolved": "https://registry.npmjs.org/mime/-/mime-1.3.4.tgz", + "integrity": "sha1-EV+eO2s9rylZmDyzjxSaLUDrXVM=" + }, + "mime-db": { + "version": "1.27.0", + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.27.0.tgz", + "integrity": "sha1-gg9XIpa70g7CXtVeW13oaeVDbrE=" + }, + "mime-types": { + "version": "2.1.15", + "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.15.tgz", + "integrity": "sha1-pOv1BkCUVpI3uM9wBGd20J/JKu0=" + }, + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=" + }, + "negotiator": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.1.tgz", + "integrity": "sha1-KzJxhOiZIQEXeyhWP7XnECrNDKk=" + }, + "on-finished": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.3.0.tgz", + "integrity": "sha1-IPEzZIGwg811M3mSoWlxqi2QaUc=" + }, + "parseurl": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.1.tgz", + "integrity": "sha1-yKuMkiO6NIiKpkopeyiFO+wY2lY=" + }, + "path-to-regexp": { + "version": "0.1.7", + "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-0.1.7.tgz", + "integrity": "sha1-32BBeABfUi8V60SQ5yR6G/qmf4w=" + }, + "proxy-addr": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/proxy-addr/-/proxy-addr-1.1.4.tgz", + "integrity": "sha1-J+VF9pYKRKYn2bREZ+NcG2tM4vM=" + }, + "qs": { + "version": "6.4.0", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.4.0.tgz", + "integrity": "sha1-E+JtKK1rD/qpExLNO/cI7TUecjM=" + }, + "range-parser": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/range-parser/-/range-parser-1.2.0.tgz", + "integrity": "sha1-9JvmtIeJTdxA3MlKMi9hEJLgDV4=" + }, + "semver": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.3.0.tgz", + "integrity": "sha1-myzl094C0XxgEq0yaqa00M9U+U8=" + }, + "send": { + "version": "0.15.3", + "resolved": "https://registry.npmjs.org/send/-/send-0.15.3.tgz", + "integrity": "sha1-UBP5+ZAj31DRvZiSwZ4979HVMwk=" + }, + "serve-static": { + "version": "1.12.3", + "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-1.12.3.tgz", + "integrity": "sha1-n0uhni8wMMVH+K+ZEHg47DjVseI=" + }, + "setprototypeof": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.0.3.tgz", + "integrity": "sha1-ZlZ+NwQ+608E2RvWWMDL77VbjgQ=" + }, + "statuses": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.3.1.tgz", + "integrity": "sha1-+vUbnrdKrvOzrPStX2Gr8ky3uT4=" + }, + "type-is": { + "version": "1.6.15", + "resolved": "https://registry.npmjs.org/type-is/-/type-is-1.6.15.tgz", + "integrity": "sha1-yrEPtJCeRByChC6v4a1kbIGARBA=" + }, + "unpipe": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz", + "integrity": "sha1-sr9O6FFKrmFltIF4KdIbLvSZBOw=" + }, + "utils-merge": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/utils-merge/-/utils-merge-1.0.0.tgz", + "integrity": "sha1-ApT7kiu5N1FTVBxPcJYjHyh8ivg=" + }, + "vary": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/vary/-/vary-1.1.1.tgz", + "integrity": "sha1-Z1Neu2lMHVIldFeYRmUyP1h+jTc=" + }, + "zone.js": { + "version": "0.7.6", + "resolved": "https://registry.npmjs.org/zone.js/-/zone.js-0.7.6.tgz", + "integrity": "sha1-+7w50+AmHQmG8boGMG6zrrDSIAk=" + } + } +} From 24f20932c5cf80f2b2198c022d59d99533689629 Mon Sep 17 00:00:00 2001 From: Jonathan Carter Date: Fri, 14 Jul 2017 17:06:22 -0700 Subject: [PATCH 3/4] Fixing formatting changes --- 6.10.3/startup/generateStartupCommand.js | 60 ++++++++++++------------ 1 file changed, 30 insertions(+), 30 deletions(-) diff --git a/6.10.3/startup/generateStartupCommand.js b/6.10.3/startup/generateStartupCommand.js index 90ea01c..0e6b656 100644 --- a/6.10.3/startup/generateStartupCommand.js +++ b/6.10.3/startup/generateStartupCommand.js @@ -1,6 +1,6 @@ #!/usr/bin/env node const fs = require('fs'), -util = require('util'); + util = require('util'); console.log("Generating app startup command"); @@ -9,57 +9,57 @@ const CMDFILE = "/opt/startup/startupCommand"; var httpLoggingEnabled = process.env.HTTP_LOGGING_ENABLED; httpLoggingEnabled = (typeof httpLoggingEnabled !== 'undefined' -&& httpLoggingEnabled !== null -&& (httpLoggingEnabled.toLowerCase() === 'true' || httpLoggingEnabled.toLowerCase() === '1')) + && httpLoggingEnabled !== null + && (httpLoggingEnabled.toLowerCase() === 'true' || httpLoggingEnabled.toLowerCase() === '1')) var roleInstanceId = ''; if (typeof process.env.WEBSITE_ROLE_INSTANCE_ID !== 'undefined' -&& process.env.WEBSITE_ROLE_INSTANCE_ID !== null) { -roleInstanceId = process.env.WEBSITE_ROLE_INSTANCE_ID; + && process.env.WEBSITE_ROLE_INSTANCE_ID !== null) { + roleInstanceId = process.env.WEBSITE_ROLE_INSTANCE_ID; } var startupCommand = fs.readFileSync(CMDFILE, 'utf8').trim(); // No user-provided startup command, check for scripts.start if (!startupCommand) { -var packageJsonPath = "/home/site/wwwroot/package.json"; -var json = fs.existsSync(packageJsonPath) && JSON.parse(fs.readFileSync(packageJsonPath, 'utf8')) -if (typeof json == 'object' && typeof json.scripts == 'object' && typeof json.scripts.start == 'string') { - console.log("Found scripts.start in package.json") - startupCommand = 'npm start'; -} + var packageJsonPath = "/home/site/wwwroot/package.json"; + var json = fs.existsSync(packageJsonPath) && JSON.parse(fs.readFileSync(packageJsonPath, 'utf8')) + if (typeof json == 'object' && typeof json.scripts == 'object' && typeof json.scripts.start == 'string') { + console.log("Found scripts.start in package.json") + startupCommand = 'npm start'; + } } // No scripts.start; can we autodetect an app? if (!startupCommand) { -var autos = ['bin/www', 'server.js', 'app.js', 'index.js', 'hostingstart.js']; -for (var i = 0; i < autos.length; i++) { - var filename = "/home/site/wwwroot/" + autos[i]; - if (fs.existsSync(filename)) { - console.log("No startup command entered, but found " + filename); - startupCommand = "node " + filename; - break; - } -} + var autos = ['bin/www', 'server.js', 'app.js', 'index.js', 'hostingstart.js']; + for (var i = 0; i < autos.length; i++) { + var filename = "/home/site/wwwroot/" + autos[i]; + if (fs.existsSync(filename)) { + console.log("No startup command entered, but found " + filename); + startupCommand = "node " + filename; + break; + } + } } // Still nothing, run the default static site if (!startupCommand) { -console.log("No startup command or autodetected startup script " + - "found. Running default static site."); -startupCommand = "node " + DEFAULTAPP; + console.log("No startup command or autodetected startup script " + + "found. Running default static site."); + startupCommand = "node " + DEFAULTAPP; } // If HTTP logging is enabled and it doesn't appear that the user has tried to do any // redirection in their startup command, redirect stdout and stderr to files. if (httpLoggingEnabled) { -if (startupCommand.indexOf(">") === -1) { - console.log("HTTP logging enabled and no output redirection present in startup " - + "command. Redirecting stdout and stderr to files.") - var outFile = util.format('/home/LogFiles/node_%s_out.log', roleInstanceId); - var errFile = util.format('/home/LogFiles/node_%s_err.log', roleInstanceId); - startupCommand += util.format(" >> %s 2>> %s", outFile, errFile); -} + if (startupCommand.indexOf(">") === -1) { + console.log("HTTP logging enabled and no output redirection present in startup " + + "command. Redirecting stdout and stderr to files.") + var outFile = util.format('/home/LogFiles/node_%s_out.log', roleInstanceId); + var errFile = util.format('/home/LogFiles/node_%s_err.log', roleInstanceId); + startupCommand += util.format(" >> %s 2>> %s", outFile, errFile); + } } // Write to file From 51c0567fb4e854974b4a1520d585efa0dc7aee92 Mon Sep 17 00:00:00 2001 From: Jonathan Carter Date: Fri, 14 Jul 2017 17:07:26 -0700 Subject: [PATCH 4/4] Fixing formatting issues --- 8.1.2/startup/generateStartupCommand.js | 94 ++++++++++++------------- 1 file changed, 47 insertions(+), 47 deletions(-) diff --git a/8.1.2/startup/generateStartupCommand.js b/8.1.2/startup/generateStartupCommand.js index 54cc853..8553747 100644 --- a/8.1.2/startup/generateStartupCommand.js +++ b/8.1.2/startup/generateStartupCommand.js @@ -1,6 +1,6 @@ #!/usr/bin/env node const fs = require('fs'), -util = require('util'); + util = require('util'); console.log("Generating app startup command"); @@ -9,13 +9,13 @@ const CMDFILE = "/opt/startup/startupCommand"; var httpLoggingEnabled = process.env.HTTP_LOGGING_ENABLED; httpLoggingEnabled = (typeof httpLoggingEnabled !== 'undefined' -&& httpLoggingEnabled !== null -&& (httpLoggingEnabled.toLowerCase() === 'true' || httpLoggingEnabled.toLowerCase() === '1')) + && httpLoggingEnabled !== null + && (httpLoggingEnabled.toLowerCase() === 'true' || httpLoggingEnabled.toLowerCase() === '1')) var roleInstanceId = ''; if (typeof process.env.WEBSITE_ROLE_INSTANCE_ID !== 'undefined' -&& process.env.WEBSITE_ROLE_INSTANCE_ID !== null) { -roleInstanceId = process.env.WEBSITE_ROLE_INSTANCE_ID; + && process.env.WEBSITE_ROLE_INSTANCE_ID !== null) { + roleInstanceId = process.env.WEBSITE_ROLE_INSTANCE_ID; } // Is Application Insights enabled, with an associated ikey? @@ -24,72 +24,72 @@ var appInsightsPreloadArg = "--require /opt/startup/initAppInsights.js"; var nodeCommandPrefix = "node "; if (appInsightsEnabled) { -console.log("Application Insights enabled"); -nodeCommandPrefix += appInsightsPreloadArg + " "; + console.log("Application Insights enabled"); + nodeCommandPrefix += appInsightsPreloadArg + " "; } function augmentCommandIfNeccessary(command) { -if (!command || !appInsightsEnabled) { - return command; -} + if (!command || !appInsightsEnabled) { + return command; + } -// Application Insights is enabled, so we need to -// to update the specified startup command to pre-load it. -if (command.indexOf("pm2 start ") === 0) { - return command += " --node-args='" + appInsightsPreloadArg + "'"; -} else if (command.indexOf("node ") === 0) { - // Simply replacing the prefix allows the user to specify - // additional Node flags, in addition to the AI preload one. - return command.replace("node ", nodeCommandPrefix); -} + // Application Insights is enabled, so we need to + // to update the specified startup command to pre-load it. + if (command.indexOf("pm2 start ") === 0) { + return command += " --node-args='" + appInsightsPreloadArg + "'"; + } else if (command.indexOf("node ") === 0) { + // Simply replacing the prefix allows the user to specify + // additional Node flags, in addition to the AI preload one. + return command.replace("node ", nodeCommandPrefix); + } -// The command is using an unknown executable, and therefore, -// the App Insights runtime can't be automatically enabled. -return command; + // The command is using an unknown executable, and therefore, + // the App Insights runtime can't be automatically enabled. + return command; } var startupCommand = augmentCommandIfNeccessary(fs.readFileSync(CMDFILE, 'utf8').trim()); // No user-provided startup command, check for scripts.start if (!startupCommand) { -var packageJsonPath = "/home/site/wwwroot/package.json"; -var json = fs.existsSync(packageJsonPath) && JSON.parse(fs.readFileSync(packageJsonPath, 'utf8')) -if (typeof json == 'object' && typeof json.scripts == 'object' && typeof json.scripts.start == 'string') { - console.log("Found scripts.start in package.json"); - startupCommand = augmentCommandIfNeccessary(json.scripts.start.trim()); -} + var packageJsonPath = "/home/site/wwwroot/package.json"; + var json = fs.existsSync(packageJsonPath) && JSON.parse(fs.readFileSync(packageJsonPath, 'utf8')) + if (typeof json == 'object' && typeof json.scripts == 'object' && typeof json.scripts.start == 'string') { + console.log("Found scripts.start in package.json"); + startupCommand = augmentCommandIfNeccessary(json.scripts.start.trim()); + } } // No scripts.start; can we autodetect an app? if (!startupCommand) { -var autos = ['bin/www', 'server.js', 'app.js', 'index.js', 'hostingstart.js']; -for (var i = 0; i < autos.length; i++) { - var filename = "/home/site/wwwroot/" + autos[i]; - if (fs.existsSync(filename)) { - console.log("No startup command entered, but found " + filename); - startupCommand = nodeCommandPrefix + filename; - break; - } -} + var autos = ['bin/www', 'server.js', 'app.js', 'index.js', 'hostingstart.js']; + for (var i = 0; i < autos.length; i++) { + var filename = "/home/site/wwwroot/" + autos[i]; + if (fs.existsSync(filename)) { + console.log("No startup command entered, but found " + filename); + startupCommand = nodeCommandPrefix + filename; + break; + } + } } // Still nothing, run the default static site if (!startupCommand) { -console.log("No startup command or autodetected startup script " + - "found. Running default static site."); -startupCommand = nodeCommandPrefix + DEFAULTAPP; + console.log("No startup command or autodetected startup script " + + "found. Running default static site."); + startupCommand = nodeCommandPrefix + DEFAULTAPP; } // If HTTP logging is enabled and it doesn't appear that the user has tried to do any // redirection in their startup command, redirect stdout and stderr to files. if (httpLoggingEnabled) { -if (startupCommand.indexOf(">") === -1) { - console.log("HTTP logging enabled and no output redirection present in startup " - + "command. Redirecting stdout and stderr to files.") - var outFile = util.format('/home/LogFiles/node_%s_out.log', roleInstanceId); - var errFile = util.format('/home/LogFiles/node_%s_err.log', roleInstanceId); - startupCommand += util.format(" >> %s 2>> %s", outFile, errFile); -} + if (startupCommand.indexOf(">") === -1) { + console.log("HTTP logging enabled and no output redirection present in startup " + + "command. Redirecting stdout and stderr to files.") + var outFile = util.format('/home/LogFiles/node_%s_out.log', roleInstanceId); + var errFile = util.format('/home/LogFiles/node_%s_err.log', roleInstanceId); + startupCommand += util.format(" >> %s 2>> %s", outFile, errFile); + } } // Write to file