diff --git a/Jenkinsfile b/Jenkinsfile index 8e45ee0e..2627d7ef 100644 --- a/Jenkinsfile +++ b/Jenkinsfile @@ -20,7 +20,7 @@ pipeline { stages { stage('Pre-tasks execution') { steps { - sendBuildStartdNotification() + sendBuildStartNotification() // Print all Environment variables sh 'printenv | sort' @@ -161,26 +161,34 @@ pipeline { /* * Sends a notification when the build starts */ -def sendBuildStartdNotification() { - def message = 'Building ' + getBuildTargetLink() + '. ' + getReportLink() +def sendBuildStartNotification() { + def msgHipChat = 'Building ' + getBuildTargetLink('hipchat') + '. ' + getReportLink('hipchat') + def msgSlack = 'Building ' + getBuildTargetLink('slack') + '. ' + getReportLink('slack') - sendHipchatNotification('YELLOW', message) + sendHipchatNotification('YELLOW', msgHipChat) + sendSlackNotification('warning', msgSlack) } /* * Sends a notification when the build is completed successfully */ def sendBuildSuccessNotification() { - def message = getBuildTargetLink() + ' built successfully. Time: $BUILD_DURATION. ' + getReportLink() - sendHipchatNotification('GREEN', message) + def msgHipChat = getBuildTargetLink('hipchat') + ' built successfully. Time: $BUILD_DURATION. ' + getReportLink('hipchat') + def msgSlack = getBuildTargetLink('slack') + ' built successfully. Time: ' + getBuildDuration(currentBuild) + '. ' + getReportLink('slack') + + sendHipchatNotification('GREEN', msgHipChat) + sendSlackNotification('good', msgSlack) } /* * Sends a notification when the build fails */ def sendBuildFailureNotification() { - def message = 'Failed to build ' + getBuildTargetLink() + '. Time: $BUILD_DURATION. No. of failed tests: ${TEST_COUNTS,var=\"fail\"}. ' + getReportLink() - sendHipchatNotification('RED', message) + def msgHipChat = 'Failed to build ' + getBuildTargetLink('hipchat') + '. Time: $BUILD_DURATION. No. of failed tests: ${TEST_COUNTS,var=\"fail\"}. ' + getReportLink('hipchat') + def msgSlack = 'Failed to build ' + getBuildTargetLink('slack') + '. Time: ' + getBuildDuration(currentBuild) + '. ' + getReportLink('slack') + + sendHipchatNotification('RED', msgHipChat) + sendSlackNotification('danger', msgSlack) } /* @@ -190,16 +198,38 @@ def sendHipchatNotification(String color, String message) { hipchatSend color: color, message: message, notify: true } +/* + * Sends a notification to Slack + */ +def sendSlackNotification(String color, String message) { + slackSend color: color, message: message, notify: true +} + +/* + * Returns the build duration without the "and counting" suffix + */ +def getBuildDuration(build) { + return build.durationString.replace(' and counting', '') +} + /* * Returns a link to what is being built. If it's a PR, then it's a link to the pull request itself. * If it's a branch, then it's a link in the format http://github.com/org/repo/tree/branch */ -def getBuildTargetLink() { - if(buildIsForAPullRequest()) { - return "\"${env.CHANGE_TITLE}\"" +def getBuildTargetLink(String client) { + def link = '' + def forPR = buildIsForAPullRequest() + + switch (client) { + case 'hipchat': + link = forPR ? "\"${env.CHANGE_TITLE}\"" : '"' + env.BRANCH_NAME + '"' + break; + case 'slack': + link = forPR ? "<${env.CHANGE_URL}|${env.CHANGE_TITLE}>" : '<' + getRepositoryUrlForBuildBranch() + '|' + env.BRANCH_NAME + '>' + break; } - return '"' + env.BRANCH_NAME + '"' + return link } /* @@ -222,8 +252,19 @@ def getRepositoryUrlForBuildBranch() { /* * Returns the Blue Ocean build report URL for the current job */ -def getReportLink() { - return 'Click here to see the build report' +def getReportLink(String client) { + def link = '' + + switch (client) { + case 'hipchat': + link = 'Click here to see the build report' + break + case 'slack': + link = "Click <${env.RUN_DISPLAY_URL}|here> to see the build report" + break + } + + return link } def cloneRepositories(String envBranch) { diff --git a/package-lock.json b/package-lock.json index ec99de47..a20b5541 100644 --- a/package-lock.json +++ b/package-lock.json @@ -3,14 +3,49 @@ "requires": true, "lockfileVersion": 1, "dependencies": { - "JSONStream": { - "version": "1.3.2", - "resolved": "https://registry.npmjs.org/JSONStream/-/JSONStream-1.3.2.tgz", - "integrity": "sha1-wQI3G27Dp887hHygDCC7D85Mbeo=", + "@gulp-sourcemaps/identity-map": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@gulp-sourcemaps/identity-map/-/identity-map-1.0.1.tgz", + "integrity": "sha1-z6I7xYQPkQTOMqZedNt+epdLvuE=", "dev": true, "requires": { - "jsonparse": "1.3.1", - "through": "2.3.8" + "acorn": "5.5.3", + "css": "2.2.1", + "normalize-path": "2.1.1", + "source-map": "0.5.7", + "through2": "2.0.3" + }, + "dependencies": { + "normalize-path": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-2.1.1.tgz", + "integrity": "sha1-GrKLVW4Zg2Oowab35vogE3/mrtk=", + "dev": true, + "requires": { + "remove-trailing-separator": "1.1.0" + } + } + } + }, + "@gulp-sourcemaps/map-sources": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/@gulp-sourcemaps/map-sources/-/map-sources-1.0.0.tgz", + "integrity": "sha1-iQrnxdjId/bThIYCFazp1+yUW9o=", + "dev": true, + "requires": { + "normalize-path": "2.1.1", + "through2": "2.0.3" + }, + "dependencies": { + "normalize-path": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-2.1.1.tgz", + "integrity": "sha1-GrKLVW4Zg2Oowab35vogE3/mrtk=", + "dev": true, + "requires": { + "remove-trailing-separator": "1.1.0" + } + } } }, "abbrev": { @@ -20,19 +55,19 @@ "dev": true }, "accepts": { - "version": "1.3.3", - "resolved": "https://registry.npmjs.org/accepts/-/accepts-1.3.3.tgz", - "integrity": "sha1-w8p0NJOGSMPg2cHjKN1otiLChMo=", + "version": "1.3.5", + "resolved": "https://registry.npmjs.org/accepts/-/accepts-1.3.5.tgz", + "integrity": "sha1-63d99gEXI6OxTopywIBcjoZ0a9I=", "dev": true, "requires": { - "mime-types": "2.1.17", + "mime-types": "2.1.18", "negotiator": "0.6.1" } }, "acorn": { - "version": "5.4.1", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-5.4.1.tgz", - "integrity": "sha512-XLmq3H/BVvW6/GbxKryGxWORz1ebilSsUDlyC27bXhWGWAZWkGwS6FLHjOlwFXNFoWFQEO/Df4u0YYd0K3BQgQ==", + "version": "5.5.3", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-5.5.3.tgz", + "integrity": "sha512-jd5MkIUlbbmb07nXH0DT3y7rDVtkzDi4XZOUVWAer8ajmF/DTSSbl5oNFyDOl/OXA33Bl79+ypHhl2pN20VeOQ==", "dev": true }, "acorn-jsx": { @@ -52,16 +87,6 @@ } } }, - "acorn-node": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/acorn-node/-/acorn-node-1.3.0.tgz", - "integrity": "sha512-efP54n3d1aLfjL2UMdaXa6DsswwzJeI5rqhbFvXMrKiJ6eJFpf+7R0zN7t8IC+XKn2YOAFAv6xbBNgHUkoHWLw==", - "dev": true, - "requires": { - "acorn": "5.4.1", - "xtend": "4.0.1" - } - }, "addressparser": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/addressparser/-/addressparser-1.0.1.tgz", @@ -280,15 +305,6 @@ "integrity": "sha1-rEaBd8SUNAWgkvyPKXYMb/xiBsA=", "dev": true }, - "is-glob": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-2.0.1.tgz", - "integrity": "sha1-0Jb5JqPe1WAPP9/ZEZjLCIjC2GM=", - "dev": true, - "requires": { - "is-extglob": "1.0.0" - } - }, "kind-of": { "version": "3.2.2", "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", @@ -397,12 +413,6 @@ "integrity": "sha1-p5SvDAWrF1KEbudTofIRoFugxE8=", "dev": true }, - "array-filter": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/array-filter/-/array-filter-0.0.1.tgz", - "integrity": "sha1-fajPLiZijtcygDWB/SH2fKzS7uw=", - "dev": true - }, "array-find-index": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/array-find-index/-/array-find-index-1.0.2.tgz", @@ -416,7 +426,7 @@ "dev": true, "requires": { "define-properties": "1.1.2", - "es-abstract": "1.10.0" + "es-abstract": "1.11.0" } }, "array-iterate": { @@ -425,18 +435,6 @@ "integrity": "sha1-hlv3+K851rCYLGCQKRSsdrwBCPY=", "dev": true }, - "array-map": { - "version": "0.0.0", - "resolved": "https://registry.npmjs.org/array-map/-/array-map-0.0.0.tgz", - "integrity": "sha1-iKK6tz0c97zVwbEYoAP2b2ZfpmI=", - "dev": true - }, - "array-reduce": { - "version": "0.0.0", - "resolved": "https://registry.npmjs.org/array-reduce/-/array-reduce-0.0.0.tgz", - "integrity": "sha1-FziZ0//Rx9k4PkR5Ul2+J4yrXys=", - "dev": true - }, "array-slice": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/array-slice/-/array-slice-1.1.0.tgz", @@ -488,26 +486,6 @@ "integrity": "sha1-2sh4dxPJlmhJ/IGAd36+nB3fO4Y=", "dev": true }, - "asn1.js": { - "version": "4.9.2", - "resolved": "https://registry.npmjs.org/asn1.js/-/asn1.js-4.9.2.tgz", - "integrity": "sha512-b/OsSjvWEo8Pi8H0zsDd2P6Uqo2TK2pH8gNLSJtNLM2Db0v2QaAZ0pBQJXVjAn4gBuugeVDr7s63ZogpUIwWDg==", - "dev": true, - "requires": { - "bn.js": "4.11.8", - "inherits": "2.0.3", - "minimalistic-assert": "1.0.0" - } - }, - "assert": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/assert/-/assert-1.4.1.tgz", - "integrity": "sha1-mZEtWRg2tab1s0XA8H7vwI/GXZE=", - "dev": true, - "requires": { - "util": "0.10.3" - } - }, "assert-plus": { "version": "0.2.0", "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-0.2.0.tgz", @@ -521,29 +499,12 @@ "dev": true }, "ast-types": { - "version": "0.10.1", - "resolved": "https://registry.npmjs.org/ast-types/-/ast-types-0.10.1.tgz", - "integrity": "sha512-UY7+9DPzlJ9VM8eY0b2TUZcZvF+1pO0hzMtAyjBYKhOmnvRlqYNYnWdtsMj0V16CGaMlpL0G1jnLbLo4AyotuQ==", + "version": "0.11.3", + "resolved": "https://registry.npmjs.org/ast-types/-/ast-types-0.11.3.tgz", + "integrity": "sha512-XA5o5dsNw8MhyW0Q7MWXJWc4oOzZKbdsEJq45h7c8q/d9DwWZ5F2ugUc1PuMLPGsUnphCt/cNDHu8JeBbxf1qA==", "dev": true, "optional": true }, - "astw": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/astw/-/astw-2.2.0.tgz", - "integrity": "sha1-e9QXhNMkk5h66yOba04cV6hzuRc=", - "dev": true, - "requires": { - "acorn": "4.0.13" - }, - "dependencies": { - "acorn": { - "version": "4.0.13", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-4.0.13.tgz", - "integrity": "sha1-EFSVrlNh1pe9GVyCUZLhrX8lN4c=", - "dev": true - } - } - }, "async": { "version": "2.1.5", "resolved": "https://registry.npmjs.org/async/-/async-2.1.5.tgz", @@ -605,9 +566,9 @@ "dev": true }, "aws4": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/aws4/-/aws4-1.6.0.tgz", - "integrity": "sha1-g+9cqGCysy5KDe7e6MdxudtXRx4=", + "version": "1.7.0", + "resolved": "https://registry.npmjs.org/aws4/-/aws4-1.7.0.tgz", + "integrity": "sha512-32NDda82rhwD9/JBCCkB+MRYDp0oSvlo2IL6rQWA10PQi7tDUM3eqMSltXmY+Oyl/7N3P3qNtAlv7X0d9bI28w==", "dev": true }, "axios": { @@ -618,6 +579,28 @@ "optional": true, "requires": { "follow-redirects": "1.0.0" + }, + "dependencies": { + "debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dev": true, + "optional": true, + "requires": { + "ms": "2.0.0" + } + }, + "follow-redirects": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.0.0.tgz", + "integrity": "sha1-jjQpjL0uF28lTv/sdaHHjMhJ/Tc=", + "dev": true, + "optional": true, + "requires": { + "debug": "2.6.9" + } + } } }, "babel-code-frame": { @@ -697,12 +680,6 @@ "integrity": "sha1-c5JncZI7Whl0etZmqlzUv5xunOg=", "dev": true }, - "base64-js": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.2.1.tgz", - "integrity": "sha512-dwVUVIXsBZXwTuwnXI9RK8sBmgq09NDHzyR9SAph9eqk76gKK2JSQmZARC2zRC81JC2QTtxD0ARU5qTS25gIGw==", - "dev": true - }, "base64id": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/base64id/-/base64id-1.0.0.tgz", @@ -811,12 +788,6 @@ "integrity": "sha512-MKiLiV+I1AA596t9w1sQJ8jkiSr5+ZKi0WKrYGUn6d1Fx+Ij4tIj+m2WMQSGczs5jZVxV339chE8iwk6F64wjA==", "dev": true }, - "bn.js": { - "version": "4.11.8", - "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.11.8.tgz", - "integrity": "sha512-ItfYfPLkWHUjckQCk8xC+LwxgK8NYcXywGigJgSwOP8Y2iyWT4f2vsZnoOXTTbo+o5yXmIUJ4gn5538SO5S3gA==", - "dev": true - }, "body-parser": { "version": "1.18.2", "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.18.2.tgz", @@ -827,12 +798,12 @@ "content-type": "1.0.4", "debug": "2.6.9", "depd": "1.1.2", - "http-errors": "1.6.2", + "http-errors": "1.6.3", "iconv-lite": "0.4.19", "on-finished": "2.3.0", "qs": "6.5.1", "raw-body": "2.3.2", - "type-is": "1.6.15" + "type-is": "1.6.16" }, "dependencies": { "debug": { @@ -859,6 +830,14 @@ "dev": true, "requires": { "hoek": "2.16.3" + }, + "dependencies": { + "hoek": { + "version": "2.16.3", + "resolved": "https://registry.npmjs.org/hoek/-/hoek-2.16.3.tgz", + "integrity": "sha1-ILt0A9POo5jpHcRxCo/xuCdKJe0=", + "dev": true + } } }, "brace-expansion": { @@ -890,212 +869,6 @@ "to-regex": "3.0.1" } }, - "brorand": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/brorand/-/brorand-1.1.0.tgz", - "integrity": "sha1-EsJe/kCkXjwyPrhnWgoM5XsiNx8=", - "dev": true - }, - "browser-pack": { - "version": "6.0.4", - "resolved": "https://registry.npmjs.org/browser-pack/-/browser-pack-6.0.4.tgz", - "integrity": "sha512-Q4Rvn7P6ObyWfc4stqLWHtG1MJ8vVtjgT24Zbu+8UTzxYuZouqZsmNRRTFVMY/Ux0eIKv1d+JWzsInTX+fdHPQ==", - "dev": true, - "requires": { - "JSONStream": "1.3.2", - "combine-source-map": "0.8.0", - "defined": "1.0.0", - "safe-buffer": "5.1.1", - "through2": "2.0.3", - "umd": "3.0.1" - } - }, - "browser-resolve": { - "version": "1.11.2", - "resolved": "https://registry.npmjs.org/browser-resolve/-/browser-resolve-1.11.2.tgz", - "integrity": "sha1-j/CbCixCFxihBRwmCzLkj0QpOM4=", - "dev": true, - "requires": { - "resolve": "1.1.7" - }, - "dependencies": { - "resolve": { - "version": "1.1.7", - "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.1.7.tgz", - "integrity": "sha1-IDEU2CrSxe2ejgQRs5ModeiJ6Xs=", - "dev": true - } - } - }, - "browserify": { - "version": "14.5.0", - "resolved": "https://registry.npmjs.org/browserify/-/browserify-14.5.0.tgz", - "integrity": "sha512-gKfOsNQv/toWz+60nSPfYzuwSEdzvV2WdxrVPUbPD/qui44rAkB3t3muNtmmGYHqrG56FGwX9SUEQmzNLAeS7g==", - "dev": true, - "requires": { - "JSONStream": "1.3.2", - "assert": "1.4.1", - "browser-pack": "6.0.4", - "browser-resolve": "1.11.2", - "browserify-zlib": "0.2.0", - "buffer": "5.0.8", - "cached-path-relative": "1.0.1", - "concat-stream": "1.5.2", - "console-browserify": "1.1.0", - "constants-browserify": "1.0.0", - "crypto-browserify": "3.12.0", - "defined": "1.0.0", - "deps-sort": "2.0.0", - "domain-browser": "1.1.7", - "duplexer2": "0.1.4", - "events": "1.1.1", - "glob": "7.1.2", - "has": "1.0.1", - "htmlescape": "1.1.1", - "https-browserify": "1.0.0", - "inherits": "2.0.3", - "insert-module-globals": "7.0.1", - "labeled-stream-splicer": "2.0.0", - "module-deps": "4.1.1", - "os-browserify": "0.3.0", - "parents": "1.0.1", - "path-browserify": "0.0.0", - "process": "0.11.10", - "punycode": "1.4.1", - "querystring-es3": "0.2.1", - "read-only-stream": "2.0.0", - "readable-stream": "2.3.3", - "resolve": "1.5.0", - "shasum": "1.0.2", - "shell-quote": "1.6.1", - "stream-browserify": "2.0.1", - "stream-http": "2.8.0", - "string_decoder": "1.0.3", - "subarg": "1.0.0", - "syntax-error": "1.4.0", - "through2": "2.0.3", - "timers-browserify": "1.4.2", - "tty-browserify": "0.0.1", - "url": "0.11.0", - "util": "0.10.3", - "vm-browserify": "0.0.4", - "xtend": "4.0.1" - }, - "dependencies": { - "concat-stream": { - "version": "1.5.2", - "resolved": "https://registry.npmjs.org/concat-stream/-/concat-stream-1.5.2.tgz", - "integrity": "sha1-cIl4Yk2FavQaWnQd790mHadSwmY=", - "dev": true, - "requires": { - "inherits": "2.0.3", - "readable-stream": "2.0.6", - "typedarray": "0.0.6" - }, - "dependencies": { - "readable-stream": { - "version": "2.0.6", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.0.6.tgz", - "integrity": "sha1-j5A0HmilPMySh4jaz80Rs265t44=", - "dev": true, - "requires": { - "core-util-is": "1.0.2", - "inherits": "2.0.3", - "isarray": "1.0.0", - "process-nextick-args": "1.0.7", - "string_decoder": "0.10.31", - "util-deprecate": "1.0.2" - } - }, - "string_decoder": { - "version": "0.10.31", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz", - "integrity": "sha1-YuIDvEF2bGwoyfyEMB2rHFMQ+pQ=", - "dev": true - } - } - }, - "duplexer2": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/duplexer2/-/duplexer2-0.1.4.tgz", - "integrity": "sha1-ixLauHjA1p4+eJEFFmKjL8a93ME=", - "dev": true, - "requires": { - "readable-stream": "2.3.3" - } - } - } - }, - "browserify-aes": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/browserify-aes/-/browserify-aes-1.1.1.tgz", - "integrity": "sha512-UGnTYAnB2a3YuYKIRy1/4FB2HdM866E0qC46JXvVTYKlBlZlnvfpSfY6OKfXZAkv70eJ2a1SqzpAo5CRhZGDFg==", - "dev": true, - "requires": { - "buffer-xor": "1.0.3", - "cipher-base": "1.0.4", - "create-hash": "1.1.3", - "evp_bytestokey": "1.0.3", - "inherits": "2.0.3", - "safe-buffer": "5.1.1" - } - }, - "browserify-cipher": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/browserify-cipher/-/browserify-cipher-1.0.0.tgz", - "integrity": "sha1-mYgkSHS/XtTijalWZtzWasj8Njo=", - "dev": true, - "requires": { - "browserify-aes": "1.1.1", - "browserify-des": "1.0.0", - "evp_bytestokey": "1.0.3" - } - }, - "browserify-des": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/browserify-des/-/browserify-des-1.0.0.tgz", - "integrity": "sha1-2qJ3cXRwki7S/hhZQRihdUOXId0=", - "dev": true, - "requires": { - "cipher-base": "1.0.4", - "des.js": "1.0.0", - "inherits": "2.0.3" - } - }, - "browserify-rsa": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/browserify-rsa/-/browserify-rsa-4.0.1.tgz", - "integrity": "sha1-IeCr+vbyApzy+vsTNWenAdQTVSQ=", - "dev": true, - "requires": { - "bn.js": "4.11.8", - "randombytes": "2.0.6" - } - }, - "browserify-sign": { - "version": "4.0.4", - "resolved": "https://registry.npmjs.org/browserify-sign/-/browserify-sign-4.0.4.tgz", - "integrity": "sha1-qk62jl17ZYuqa/alfmMMvXqT0pg=", - "dev": true, - "requires": { - "bn.js": "4.11.8", - "browserify-rsa": "4.0.1", - "create-hash": "1.1.3", - "create-hmac": "1.1.6", - "elliptic": "6.4.0", - "inherits": "2.0.3", - "parse-asn1": "5.1.0" - } - }, - "browserify-zlib": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/browserify-zlib/-/browserify-zlib-0.2.0.tgz", - "integrity": "sha512-Z942RysHXmJrhqk88FmKBVq/v5tqmSkDz7p54G/MGyjMnCFFnC79XWNbg+Vta8W6Wb2qtSZTSxIGkJrRpCFEiA==", - "dev": true, - "requires": { - "pako": "1.0.6" - } - }, "browserslist": { "version": "2.11.3", "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-2.11.3.tgz", @@ -1106,15 +879,11 @@ "electron-to-chromium": "1.3.33" } }, - "buffer": { - "version": "5.0.8", - "resolved": "https://registry.npmjs.org/buffer/-/buffer-5.0.8.tgz", - "integrity": "sha512-xXvjQhVNz50v2nPeoOsNqWCLGfiv4ji/gXZM28jnVwdLJxH4mFyqgqCKfaK9zf1KUbG6zTkjLOy7ou+jSMarGA==", - "dev": true, - "requires": { - "base64-js": "1.2.1", - "ieee754": "1.1.8" - } + "buffer-from": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.0.0.tgz", + "integrity": "sha512-83apNb8KK0Se60UE1+4Ukbe3HbfELJ6UlI4ldtOGs7So4KD26orJM8hIY9lxdzP+UpItH1Yh/Y8GUvNFWFFRxA==", + "dev": true }, "buffer-more-ints": { "version": "0.0.2", @@ -1122,12 +891,6 @@ "integrity": "sha1-JrOIXRD6E9t/wBquOquHAZngEkw=", "dev": true }, - "buffer-xor": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/buffer-xor/-/buffer-xor-1.0.3.tgz", - "integrity": "sha1-JuYe0UIvtw3ULm42cp7VHYVf6Nk=", - "dev": true - }, "buildmail": { "version": "4.0.1", "resolved": "https://registry.npmjs.org/buildmail/-/buildmail-4.0.1.tgz", @@ -1150,12 +913,6 @@ "integrity": "sha1-Jw8HbFpywC9bZaR9+Uxf46J4iS8=", "dev": true }, - "builtin-status-codes": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/builtin-status-codes/-/builtin-status-codes-3.0.0.tgz", - "integrity": "sha1-hZgoeOIbmOHGZCXgPQF0eI9Wnug=", - "dev": true - }, "bytes": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.0.0.tgz", @@ -1179,12 +936,6 @@ "unset-value": "1.0.0" } }, - "cached-path-relative": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/cached-path-relative/-/cached-path-relative-1.0.1.tgz", - "integrity": "sha1-0JxLUoAKpMB44t2BqGmqyQ0uVOc=", - "dev": true - }, "caller-path": { "version": "0.1.0", "resolved": "https://registry.npmjs.org/caller-path/-/caller-path-0.1.0.tgz", @@ -1312,30 +1063,13 @@ "requires": { "anymatch": "1.3.2", "async-each": "1.0.1", - "fsevents": "1.1.3", + "fsevents": "1.2.2", "glob-parent": "2.0.0", "inherits": "2.0.3", "is-binary-path": "1.0.1", "is-glob": "2.0.1", "path-is-absolute": "1.0.1", "readdirp": "2.1.0" - }, - "dependencies": { - "is-extglob": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-1.0.0.tgz", - "integrity": "sha1-rEaBd8SUNAWgkvyPKXYMb/xiBsA=", - "dev": true - }, - "is-glob": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-2.0.1.tgz", - "integrity": "sha1-0Jb5JqPe1WAPP9/ZEZjLCIjC2GM=", - "dev": true, - "requires": { - "is-extglob": "1.0.0" - } - } } }, "ci-info": { @@ -1344,16 +1078,6 @@ "integrity": "sha512-uTGIPNx/nSpBdsF6xnseRXLLtfr9VLqkz8ZqHXr3Y7b6SftyRxBGjwMtJj1OhNbmlc1wZzLNAlAcvyIiE8a6ZA==", "dev": true }, - "cipher-base": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/cipher-base/-/cipher-base-1.0.4.tgz", - "integrity": "sha512-Kkht5ye6ZGmwv40uUDZztayT2ThLQGfnj/T71N/XzeZeo3nf8foyW7zGTsPYkEya3m5f3cAypH+qe7YOrM1U2Q==", - "dev": true, - "requires": { - "inherits": "2.0.3", - "safe-buffer": "5.1.1" - } - }, "circular-json": { "version": "0.3.3", "resolved": "https://registry.npmjs.org/circular-json/-/circular-json-0.3.3.tgz", @@ -1580,9 +1304,9 @@ "dev": true }, "colors": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/colors/-/colors-1.1.2.tgz", - "integrity": "sha1-FopHAXVran9RoSzgyXv6KMCE7WM=", + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/colors/-/colors-1.2.1.tgz", + "integrity": "sha512-s8+wktIuDSLffCywiwSxQOMqtPxML11a/dtHE17tMn4B1MSWw/C22EKf7M2KGUBcDaVFEGT+S8N02geDXeuNKg==", "dev": true }, "combine-lists": { @@ -1594,31 +1318,19 @@ "lodash": "4.17.5" } }, - "combine-source-map": { - "version": "0.8.0", - "resolved": "https://registry.npmjs.org/combine-source-map/-/combine-source-map-0.8.0.tgz", - "integrity": "sha1-pY0N8ELBhvz4IqjoAV9UUNLXmos=", - "dev": true, - "requires": { - "convert-source-map": "1.1.3", - "inline-source-map": "0.6.2", - "lodash.memoize": "3.0.4", - "source-map": "0.5.7" - } - }, "combined-stream": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.5.tgz", - "integrity": "sha1-k4NwpXtKUd6ix3wV1cX9+JUWQAk=", + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.6.tgz", + "integrity": "sha1-cj599ugBrFYTETp+RFqbactjKBg=", "dev": true, "requires": { "delayed-stream": "1.0.0" } }, "commander": { - "version": "2.14.1", - "resolved": "https://registry.npmjs.org/commander/-/commander-2.14.1.tgz", - "integrity": "sha512-+YR16o3rK53SmWHU3rEM3tPAh2rwb1yPcQX5irVn7mb0gXbwuCCrnkbV5+PBfETdfg1vui07nM6PCG1zndcjQw==", + "version": "2.15.1", + "resolved": "https://registry.npmjs.org/commander/-/commander-2.15.1.tgz", + "integrity": "sha512-VlfT9F3V0v+jr4yxPc5gg9s62/fIVWsd2Bk2iD435um1NlGMYdVCq+MjcXnhYq2icNOizHr1kK+5TI6H0Hy0ag==", "dev": true }, "component-bind": { @@ -1646,24 +1358,42 @@ "dev": true }, "concat-stream": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/concat-stream/-/concat-stream-1.6.0.tgz", - "integrity": "sha1-CqxmL9Ur54lk1VMvaUeE5wEQrPc=", + "version": "1.6.2", + "resolved": "https://registry.npmjs.org/concat-stream/-/concat-stream-1.6.2.tgz", + "integrity": "sha512-27HBghJxjiZtIk3Ycvn/4kbJk/1uZuJFfuPEns6LaEvpvG1f0hTea8lilrouyo9mVc2GWdcEZ8OLoGmSADlrCw==", "dev": true, "requires": { + "buffer-from": "1.0.0", "inherits": "2.0.3", "readable-stream": "2.3.3", "typedarray": "0.0.6" } }, + "concat-with-sourcemaps": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/concat-with-sourcemaps/-/concat-with-sourcemaps-1.0.6.tgz", + "integrity": "sha512-QxQ5MD9fcxt4fY5wLPZT+cyJsGfrwbko/k68z/fLHxz1fUh49+hc373a2Ajr/03dnCYQXiJTsdcrk/KrEfugZA==", + "dev": true, + "requires": { + "source-map": "0.6.1" + }, + "dependencies": { + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true + } + } + }, "connect": { - "version": "3.6.5", - "resolved": "https://registry.npmjs.org/connect/-/connect-3.6.5.tgz", - "integrity": "sha1-+43ee6B2OHfQ7J352sC0tA5yx9o=", + "version": "3.6.6", + "resolved": "https://registry.npmjs.org/connect/-/connect-3.6.6.tgz", + "integrity": "sha1-Ce/2xVr3I24TcTWnJXSFi2eG9SQ=", "dev": true, "requires": { "debug": "2.6.9", - "finalhandler": "1.0.6", + "finalhandler": "1.1.0", "parseurl": "1.3.2", "utils-merge": "1.0.1" }, @@ -1679,27 +1409,12 @@ } } }, - "console-browserify": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/console-browserify/-/console-browserify-1.1.0.tgz", - "integrity": "sha1-8CQcRXMKn8YyOyBtvzjtx0HQuxA=", - "dev": true, - "requires": { - "date-now": "0.1.4" - } - }, - "console-control-strings": { + "console-control-strings": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/console-control-strings/-/console-control-strings-1.1.0.tgz", "integrity": "sha1-PXz0Rk22RG6mRL9LOVB/mFEAjo4=", "dev": true }, - "constants-browserify": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/constants-browserify/-/constants-browserify-1.0.0.tgz", - "integrity": "sha1-wguW2MYXdIqvHBYCF2DNJ/y4y3U=", - "dev": true - }, "contains-path": { "version": "0.1.0", "resolved": "https://registry.npmjs.org/contains-path/-/contains-path-0.1.0.tgz", @@ -1713,9 +1428,9 @@ "dev": true }, "convert-source-map": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.1.3.tgz", - "integrity": "sha1-SCnId+n+SbMWHzvzZziI4gRpmGA=", + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.5.1.tgz", + "integrity": "sha1-uCeAl7m8IpNl3lxiz1/K7YtVmeU=", "dev": true }, "cookie": { @@ -1731,9 +1446,9 @@ "dev": true }, "core-js": { - "version": "1.2.7", - "resolved": "https://registry.npmjs.org/core-js/-/core-js-1.2.7.tgz", - "integrity": "sha1-ZSKUwUZR2yj6k70tX/KYOk8IxjY=", + "version": "2.5.5", + "resolved": "https://registry.npmjs.org/core-js/-/core-js-2.5.5.tgz", + "integrity": "sha1-sU3ek2xkDAV5prUMq8wTLdYSfjs=", "dev": true }, "core-util-is": { @@ -1752,52 +1467,27 @@ "js-yaml": "3.10.0", "parse-json": "4.0.0", "require-from-string": "2.0.1" - } - }, - "create-ecdh": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/create-ecdh/-/create-ecdh-4.0.0.tgz", - "integrity": "sha1-iIxyNZbN92EvZJgjPuvXo1MBc30=", - "dev": true, - "requires": { - "bn.js": "4.11.8", - "elliptic": "6.4.0" - } - }, - "create-hash": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/create-hash/-/create-hash-1.1.3.tgz", - "integrity": "sha1-YGBCrIuSYnUPSDyt2rD1gZFy2P0=", - "dev": true, - "requires": { - "cipher-base": "1.0.4", - "inherits": "2.0.3", - "ripemd160": "2.0.1", - "sha.js": "2.4.10" - } - }, - "create-hmac": { - "version": "1.1.6", - "resolved": "https://registry.npmjs.org/create-hmac/-/create-hmac-1.1.6.tgz", - "integrity": "sha1-rLniIaThe9sHbpBlfEK5PjcmzwY=", - "dev": true, - "requires": { - "cipher-base": "1.0.4", - "create-hash": "1.1.3", - "inherits": "2.0.3", - "ripemd160": "2.0.1", - "safe-buffer": "5.1.1", - "sha.js": "2.4.10" + }, + "dependencies": { + "parse-json": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-4.0.0.tgz", + "integrity": "sha1-vjX1Qlvh9/bHRxhPmKeIy5lHfuA=", + "dev": true, + "requires": { + "error-ex": "1.3.1", + "json-parse-better-errors": "1.0.1" + } + } } }, "cross-spawn": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-5.1.0.tgz", - "integrity": "sha1-6L0O/uWPz/b4+UUQoKVUu/ojVEk=", + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-3.0.1.tgz", + "integrity": "sha1-ElYDfsufDF9549bvE14wdwGEuYI=", "dev": true, "requires": { "lru-cache": "4.1.1", - "shebang-command": "1.2.0", "which": "1.3.0" } }, @@ -1810,23 +1500,51 @@ "boom": "2.10.1" } }, - "crypto-browserify": { - "version": "3.12.0", - "resolved": "https://registry.npmjs.org/crypto-browserify/-/crypto-browserify-3.12.0.tgz", - "integrity": "sha512-fz4spIh+znjO2VjL+IdhEpRJ3YN6sMzITSBijk6FK2UvTqruSQW+/cCZTSNsMiZNvUeq0CqurF+dAbyiGOY6Wg==", + "css": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/css/-/css-2.2.1.tgz", + "integrity": "sha1-c6TIHehdtmTU7mdPfUcIXjstVdw=", "dev": true, "requires": { - "browserify-cipher": "1.0.0", - "browserify-sign": "4.0.4", - "create-ecdh": "4.0.0", - "create-hash": "1.1.3", - "create-hmac": "1.1.6", - "diffie-hellman": "5.0.2", "inherits": "2.0.3", - "pbkdf2": "3.0.14", - "public-encrypt": "4.0.0", - "randombytes": "2.0.6", - "randomfill": "1.0.3" + "source-map": "0.1.43", + "source-map-resolve": "0.3.1", + "urix": "0.1.0" + }, + "dependencies": { + "atob": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/atob/-/atob-1.1.3.tgz", + "integrity": "sha1-lfE2KbEsOlGl0hWr3OKqnzL4B3M=", + "dev": true + }, + "source-map": { + "version": "0.1.43", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.1.43.tgz", + "integrity": "sha1-wkvBRspRfBRx9drL4lcbK3+eM0Y=", + "dev": true, + "requires": { + "amdefine": "1.0.1" + } + }, + "source-map-resolve": { + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/source-map-resolve/-/source-map-resolve-0.3.1.tgz", + "integrity": "sha1-YQ9hIqRFuN1RU1oqcbeD38Ekh2E=", + "dev": true, + "requires": { + "atob": "1.1.3", + "resolve-url": "0.2.1", + "source-map-url": "0.3.0", + "urix": "0.1.0" + } + }, + "source-map-url": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/source-map-url/-/source-map-url-0.3.0.tgz", + "integrity": "sha1-fsrxO1e80J2opAxdJp2zN5nUqvk=", + "dev": true + } } }, "currently-unhandled": { @@ -1844,6 +1562,15 @@ "integrity": "sha1-XQKkaFCt8bSjF5RqOSj8y1v9BCU=", "dev": true }, + "d": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/d/-/d-1.0.0.tgz", + "integrity": "sha1-dUu1v+VUUdpppYuU1F9MWwRi1Y8=", + "dev": true, + "requires": { + "es5-ext": "0.10.42" + } + }, "dashdash": { "version": "1.14.1", "resolved": "https://registry.npmjs.org/dashdash/-/dashdash-1.14.1.tgz", @@ -1880,12 +1607,6 @@ "integrity": "sha1-YV6CjiM90aubua4JUODOzPpuytg=", "dev": true }, - "date-now": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/date-now/-/date-now-0.1.4.tgz", - "integrity": "sha1-6vQ5/U1ISK105cx9vvIAZyueNFs=", - "dev": true - }, "dateformat": { "version": "2.2.0", "resolved": "https://registry.npmjs.org/dateformat/-/dateformat-2.2.0.tgz", @@ -1901,6 +1622,17 @@ "ms": "2.0.0" } }, + "debug-fabulous": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/debug-fabulous/-/debug-fabulous-1.1.0.tgz", + "integrity": "sha512-GZqvGIgKNlUnHUPQhepnUZFIMoi3dgZKQBzKDeL2g7oJF9SNAji/AAu36dusFUas0O+pae74lNeoIPHqXWDkLg==", + "dev": true, + "requires": { + "debug": "3.1.0", + "memoizee": "0.4.12", + "object-assign": "4.1.1" + } + }, "debug-log": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/debug-log/-/debug-log-1.0.1.tgz", @@ -1969,12 +1701,6 @@ "is-descriptor": "1.0.2" } }, - "defined": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/defined/-/defined-1.0.0.tgz", - "integrity": "sha1-yY2bzvdWdBiOEQlpFRGZ45sfppM=", - "dev": true - }, "degenerator": { "version": "1.0.4", "resolved": "https://registry.npmjs.org/degenerator/-/degenerator-1.0.4.tgz", @@ -1982,8 +1708,8 @@ "dev": true, "optional": true, "requires": { - "ast-types": "0.10.1", - "escodegen": "1.9.0", + "ast-types": "0.11.3", + "escodegen": "1.9.1", "esprima": "3.1.3" }, "dependencies": { @@ -2006,7 +1732,7 @@ "glob": "7.1.2", "ignore": "3.3.7", "pkg-config": "1.1.1", - "run-parallel": "1.1.6", + "run-parallel": "1.1.9", "uniq": "1.0.1" } }, @@ -2057,43 +1783,17 @@ "integrity": "sha1-+cmvVGSvoeepcUWKi97yqpTVuxk=", "dev": true }, - "deps-sort": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/deps-sort/-/deps-sort-2.0.0.tgz", - "integrity": "sha1-CRckkC6EZYJg65EHSMzNGvbiH7U=", - "dev": true, - "requires": { - "JSONStream": "1.3.2", - "shasum": "1.0.2", - "subarg": "1.0.0", - "through2": "2.0.3" - } - }, - "des.js": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/des.js/-/des.js-1.0.0.tgz", - "integrity": "sha1-wHTS4qpqipoH29YfmhXCzYPsjsw=", - "dev": true, - "requires": { - "inherits": "2.0.3", - "minimalistic-assert": "1.0.0" - } - }, "detect-file": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/detect-file/-/detect-file-1.0.0.tgz", "integrity": "sha1-8NZtA2cqglyxtzvbP+YjEMjlUrc=", "dev": true }, - "detective": { - "version": "4.7.1", - "resolved": "https://registry.npmjs.org/detective/-/detective-4.7.1.tgz", - "integrity": "sha512-H6PmeeUcZloWtdt4DAkFyzFL94arpHr3NOwwmVILFiy+9Qd4JTxxXrzfyGk/lmct2qVGBwTSwSXagqu2BxmWig==", - "dev": true, - "requires": { - "acorn": "5.4.1", - "defined": "1.0.0" - } + "detect-newline": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/detect-newline/-/detect-newline-2.1.0.tgz", + "integrity": "sha1-9B8cEL5LAOh7XxPaaAdZ8sW/0+I=", + "dev": true }, "di": { "version": "0.0.1", @@ -2101,17 +1801,6 @@ "integrity": "sha1-gGZJMmzqp8qjMG112YXqJ0i6kTw=", "dev": true }, - "diffie-hellman": { - "version": "5.0.2", - "resolved": "https://registry.npmjs.org/diffie-hellman/-/diffie-hellman-5.0.2.tgz", - "integrity": "sha1-tYNXOScM/ias9jIJn97SoH8gnl4=", - "dev": true, - "requires": { - "bn.js": "4.11.8", - "miller-rabin": "4.0.1", - "randombytes": "2.0.6" - } - }, "dir-glob": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/dir-glob/-/dir-glob-2.0.0.tgz", @@ -2172,12 +1861,6 @@ } } }, - "domain-browser": { - "version": "1.1.7", - "resolved": "https://registry.npmjs.org/domain-browser/-/domain-browser-1.1.7.tgz", - "integrity": "sha1-hnqksJP6oF8d4IwG9NeyH9+GmLw=", - "dev": true - }, "domelementtype": { "version": "1.3.0", "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-1.3.0.tgz", @@ -2282,21 +1965,6 @@ "integrity": "sha1-2wQ1IcldfjA/2PNFvtwzSc+wcp4=", "dev": true }, - "elliptic": { - "version": "6.4.0", - "resolved": "https://registry.npmjs.org/elliptic/-/elliptic-6.4.0.tgz", - "integrity": "sha1-ysmvh2LIWDYYcAPI3+GT5eLq5d8=", - "dev": true, - "requires": { - "bn.js": "4.11.8", - "brorand": "1.1.0", - "hash.js": "1.1.3", - "hmac-drbg": "1.0.1", - "inherits": "2.0.3", - "minimalistic-assert": "1.0.0", - "minimalistic-crypto-utils": "1.0.1" - } - }, "encodeurl": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.2.tgz", @@ -2333,40 +2001,29 @@ } }, "engine.io": { - "version": "3.1.4", - "resolved": "https://registry.npmjs.org/engine.io/-/engine.io-3.1.4.tgz", - "integrity": "sha1-PQIRtwpVLOhB/8fahiezAamkFi4=", + "version": "3.1.5", + "resolved": "https://registry.npmjs.org/engine.io/-/engine.io-3.1.5.tgz", + "integrity": "sha512-D06ivJkYxyRrcEe0bTpNnBQNgP9d3xog+qZlLbui8EsMr/DouQpf5o9FzJnWYHEYE0YsFHllUv2R1dkgYZXHcA==", "dev": true, "requires": { - "accepts": "1.3.3", + "accepts": "1.3.5", "base64id": "1.0.0", "cookie": "0.3.1", - "debug": "2.6.9", + "debug": "3.1.0", "engine.io-parser": "2.1.2", - "uws": "0.14.5", + "uws": "9.14.0", "ws": "3.3.3" - }, - "dependencies": { - "debug": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", - "dev": true, - "requires": { - "ms": "2.0.0" - } - } } }, "engine.io-client": { - "version": "3.1.4", - "resolved": "https://registry.npmjs.org/engine.io-client/-/engine.io-client-3.1.4.tgz", - "integrity": "sha1-T88TcLRxY70s6b4nM5ckMDUNTqE=", + "version": "3.1.6", + "resolved": "https://registry.npmjs.org/engine.io-client/-/engine.io-client-3.1.6.tgz", + "integrity": "sha512-hnuHsFluXnsKOndS4Hv6SvUrgdYx1pk2NqfaDMW+GWdgfU3+/V25Cj7I8a0x92idSpa5PIhJRKxPvp9mnoLsfg==", "dev": true, "requires": { "component-emitter": "1.2.1", "component-inherit": "0.0.3", - "debug": "2.6.9", + "debug": "3.1.0", "engine.io-parser": "2.1.2", "has-cors": "1.1.0", "indexof": "0.0.1", @@ -2375,17 +2032,6 @@ "ws": "3.3.3", "xmlhttprequest-ssl": "1.5.5", "yeast": "0.1.2" - }, - "dependencies": { - "debug": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", - "dev": true, - "requires": { - "ms": "2.0.0" - } - } } }, "engine.io-parser": { @@ -2423,9 +2069,9 @@ } }, "es-abstract": { - "version": "1.10.0", - "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.10.0.tgz", - "integrity": "sha512-/uh/DhdqIOSkAWifU+8nG78vlQxdLckUdI/sPgy0VhuXi2qJ7T8czBmqIYtLQVpCIFYafChnsRsB5pyb1JdmCQ==", + "version": "1.11.0", + "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.11.0.tgz", + "integrity": "sha512-ZnQrE/lXTTQ39ulXZ+J1DTFazV9qBy61x2bY071B+qGco8Z8q1QddsLdt/EF8Ai9hcWH72dWS0kFqXLxOxqslA==", "dev": true, "requires": { "es-to-primitive": "1.1.1", @@ -2446,6 +2092,50 @@ "is-symbol": "1.0.1" } }, + "es5-ext": { + "version": "0.10.42", + "resolved": "https://registry.npmjs.org/es5-ext/-/es5-ext-0.10.42.tgz", + "integrity": "sha512-AJxO1rmPe1bDEfSR6TJ/FgMFYuTBhR5R57KW58iCkYACMyFbrkqVyzXSurYoScDGvgyMpk7uRF/lPUPPTmsRSA==", + "dev": true, + "requires": { + "es6-iterator": "2.0.3", + "es6-symbol": "3.1.1", + "next-tick": "1.0.0" + } + }, + "es6-iterator": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/es6-iterator/-/es6-iterator-2.0.3.tgz", + "integrity": "sha1-p96IkUGgWpSwhUQDstCg+/qY87c=", + "dev": true, + "requires": { + "d": "1.0.0", + "es5-ext": "0.10.42", + "es6-symbol": "3.1.1" + } + }, + "es6-symbol": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/es6-symbol/-/es6-symbol-3.1.1.tgz", + "integrity": "sha1-vwDvT9q2uhtG7Le2KbTH7VcVzHc=", + "dev": true, + "requires": { + "d": "1.0.0", + "es5-ext": "0.10.42" + } + }, + "es6-weak-map": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/es6-weak-map/-/es6-weak-map-2.0.2.tgz", + "integrity": "sha1-XjqzIlH/0VOKH45f+hNXdy+S2W8=", + "dev": true, + "requires": { + "d": "1.0.0", + "es5-ext": "0.10.42", + "es6-iterator": "2.0.3", + "es6-symbol": "3.1.1" + } + }, "escape-html": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz", @@ -2459,9 +2149,9 @@ "dev": true }, "escodegen": { - "version": "1.9.0", - "resolved": "https://registry.npmjs.org/escodegen/-/escodegen-1.9.0.tgz", - "integrity": "sha512-v0MYvNQ32bzwoG2OSFzWAkuahDQHK92JBN0pTAALJ4RIxEZe766QJPDR8Hqy7XNUy5K3fnVL76OqYAdc4TZEIw==", + "version": "1.9.1", + "resolved": "https://registry.npmjs.org/escodegen/-/escodegen-1.9.1.tgz", + "integrity": "sha512-6hTjO1NAWkHnDk3OqQ4YrCuwwmGHL9S3nPlzBOUG/R44rda3wLNrfvQ5fkSGjyhHFKM7ALPKcKGrwvCLe0lC7Q==", "dev": true, "optional": true, "requires": { @@ -2469,7 +2159,7 @@ "estraverse": "4.2.0", "esutils": "2.0.2", "optionator": "0.8.2", - "source-map": "0.5.7" + "source-map": "0.6.1" }, "dependencies": { "esprima": { @@ -2478,31 +2168,38 @@ "integrity": "sha1-/cpRzuYTOJXjyI1TXOSdv/YqRjM=", "dev": true, "optional": true + }, + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true, + "optional": true } } }, "eslint": { - "version": "4.14.0", - "resolved": "https://registry.npmjs.org/eslint/-/eslint-4.14.0.tgz", - "integrity": "sha512-Ul6CSGRjKscEyg0X/EeNs7o2XdnbTEOD1OM8cTjmx85RPcBJQrEhZLevhuJZNAE/vS2iVl5Uhgiqf3h5uLMCJQ==", + "version": "4.18.2", + "resolved": "https://registry.npmjs.org/eslint/-/eslint-4.18.2.tgz", + "integrity": "sha512-qy4i3wODqKMYfz9LUI8N2qYDkHkoieTbiHpMrYUI/WbjhXJQr7lI4VngixTgaG+yHX+NBCv7nW4hA0ShbvaNKw==", "dev": true, "requires": { "ajv": "5.5.2", "babel-code-frame": "6.26.0", "chalk": "2.3.0", - "concat-stream": "1.6.0", + "concat-stream": "1.6.2", "cross-spawn": "5.1.0", "debug": "3.1.0", "doctrine": "2.1.0", "eslint-scope": "3.7.1", "eslint-visitor-keys": "1.0.0", - "espree": "3.5.3", - "esquery": "1.0.0", + "espree": "3.5.4", + "esquery": "1.0.1", "esutils": "2.0.2", "file-entry-cache": "2.0.0", "functional-red-black-tree": "1.0.1", "glob": "7.1.2", - "globals": "11.3.0", + "globals": "11.5.0", "ignore": "3.3.7", "imurmurhash": "0.1.4", "inquirer": "3.3.0", @@ -2526,6 +2223,17 @@ "text-table": "0.2.0" }, "dependencies": { + "cross-spawn": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-5.1.0.tgz", + "integrity": "sha1-6L0O/uWPz/b4+UUQoKVUu/ojVEk=", + "dev": true, + "requires": { + "lru-cache": "4.1.1", + "shebang-command": "1.2.0", + "which": "1.3.0" + } + }, "strip-ansi": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz", @@ -2538,21 +2246,21 @@ } }, "eslint-config-semistandard": { - "version": "12.0.0", - "resolved": "https://registry.npmjs.org/eslint-config-semistandard/-/eslint-config-semistandard-12.0.0.tgz", - "integrity": "sha512-Wc7+MV5E1S846Y5QvhCblUe7cFp3OyvZebZfzy8dF083yNNokE1XPmSwDJUX3gFA5kjctUaBvorNCdOwEBjKlA==", + "version": "12.0.1", + "resolved": "https://registry.npmjs.org/eslint-config-semistandard/-/eslint-config-semistandard-12.0.1.tgz", + "integrity": "sha512-4zaPW5uRFasf2uRZkE19Y+W84KBV3q+oyWYOsgUN+5DQXE5HCsh7ZxeWDXxozk7NPycGm0kXcsJzLe5GZ1jCeg==", "dev": true }, "eslint-config-standard": { - "version": "11.0.0-beta.0", - "resolved": "https://registry.npmjs.org/eslint-config-standard/-/eslint-config-standard-11.0.0-beta.0.tgz", - "integrity": "sha512-f+vs5HAHQo7NRZ3hVe+UVdT5DbebMNaFTWFp95orJ0LUdYPoWdM8xw/bMeO/IZMvHOPmIteGKGc2QOhSXd5nRg==", + "version": "11.0.0", + "resolved": "https://registry.npmjs.org/eslint-config-standard/-/eslint-config-standard-11.0.0.tgz", + "integrity": "sha512-oDdENzpViEe5fwuRCWla7AXQd++/oyIp8zP+iP9jiUPG6NBj3SHgdgtl/kTn00AjeN+1HNvavTKmYbMo+xMOlw==", "dev": true }, "eslint-config-standard-jsx": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/eslint-config-standard-jsx/-/eslint-config-standard-jsx-4.0.2.tgz", - "integrity": "sha512-F8fRh2WFnTek7dZH9ZaE0PCBwdVGkwVWZmizla/DDNOmg7Tx6B/IlK5+oYpiX29jpu73LszeJj5i1axEZv6VMw==", + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/eslint-config-standard-jsx/-/eslint-config-standard-jsx-5.0.0.tgz", + "integrity": "sha512-rLToPAEqLMPBfWnYTu6xRhm2OWziS2n40QFqJ8jAM8NSVzeVKTa3nclhsU4DpPJQRY60F34Oo1wi/71PN/eITg==", "dev": true }, "eslint-import-resolver-node": { @@ -2577,9 +2285,9 @@ } }, "eslint-module-utils": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/eslint-module-utils/-/eslint-module-utils-2.1.1.tgz", - "integrity": "sha512-jDI/X5l/6D1rRD/3T43q8Qgbls2nq5km5KSqiwlyUbGo5+04fXhMKdCPhjwbqAa6HXWaMxj8Q4hQDIh7IadJQw==", + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/eslint-module-utils/-/eslint-module-utils-2.2.0.tgz", + "integrity": "sha1-snA2LNiLGkitMIl2zn+lTphBF0Y=", "dev": true, "requires": { "debug": "2.6.9", @@ -2608,7 +2316,7 @@ "debug": "2.6.9", "doctrine": "1.5.0", "eslint-import-resolver-node": "0.3.2", - "eslint-module-utils": "2.1.1", + "eslint-module-utils": "2.2.0", "has": "1.0.1", "lodash.cond": "4.5.2", "minimatch": "3.0.4", @@ -2633,27 +2341,76 @@ "esutils": "2.0.2", "isarray": "1.0.0" } + }, + "find-up": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-2.1.0.tgz", + "integrity": "sha1-RdG35QbHF93UgndaK3eSCjwMV6c=", + "dev": true, + "requires": { + "locate-path": "2.0.0" + } + }, + "load-json-file": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/load-json-file/-/load-json-file-2.0.0.tgz", + "integrity": "sha1-eUfkIUmvgNaWy/eXvKq8/h/inKg=", + "dev": true, + "requires": { + "graceful-fs": "4.1.11", + "parse-json": "2.2.0", + "pify": "2.3.0", + "strip-bom": "3.0.0" + } + }, + "path-type": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/path-type/-/path-type-2.0.0.tgz", + "integrity": "sha1-8BLMuEFbcJb8LaoQVMPXI4lZTHM=", + "dev": true, + "requires": { + "pify": "2.3.0" + } + }, + "pify": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", + "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=", + "dev": true + }, + "read-pkg": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-2.0.0.tgz", + "integrity": "sha1-jvHAYjxqbbDcZxPEv6xGMysjaPg=", + "dev": true, + "requires": { + "load-json-file": "2.0.0", + "normalize-package-data": "2.4.0", + "path-type": "2.0.0" + } + }, + "read-pkg-up": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-2.0.0.tgz", + "integrity": "sha1-a3KoBImE4MQeeVEP1en6mbO1Sb4=", + "dev": true, + "requires": { + "find-up": "2.1.0", + "read-pkg": "2.0.0" + } } } }, "eslint-plugin-node": { - "version": "5.2.1", - "resolved": "https://registry.npmjs.org/eslint-plugin-node/-/eslint-plugin-node-5.2.1.tgz", - "integrity": "sha512-xhPXrh0Vl/b7870uEbaumb2Q+LxaEcOQ3kS1jtIXanBAwpMre1l5q/l2l/hESYJGEFKuI78bp6Uw50hlpr7B+g==", + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/eslint-plugin-node/-/eslint-plugin-node-6.0.1.tgz", + "integrity": "sha512-Q/Cc2sW1OAISDS+Ji6lZS2KV4b7ueA/WydVWd1BECTQwVvfQy5JAi3glhINoKzoMnfnuRgNP+ZWKrGAbp3QDxw==", "dev": true, "requires": { "ignore": "3.3.7", "minimatch": "3.0.4", "resolve": "1.5.0", - "semver": "5.3.0" - }, - "dependencies": { - "semver": { - "version": "5.3.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-5.3.0.tgz", - "integrity": "sha1-myzl094C0XxgEq0yaqa00M9U+U8=", - "dev": true - } + "semver": "5.5.0" } }, "eslint-plugin-promise": { @@ -2663,15 +2420,15 @@ "dev": true }, "eslint-plugin-react": { - "version": "7.5.1", - "resolved": "https://registry.npmjs.org/eslint-plugin-react/-/eslint-plugin-react-7.5.1.tgz", - "integrity": "sha512-YGSjB9Qu6QbVTroUZi66pYky3DfoIPLdHQ/wmrBGyBRnwxQsBXAov9j2rpXt/55i8nyMv6IRWJv2s4d4YnduzQ==", + "version": "7.6.1", + "resolved": "https://registry.npmjs.org/eslint-plugin-react/-/eslint-plugin-react-7.6.1.tgz", + "integrity": "sha512-30aMOHWX/DOaaLJVBHz6RMvYM2qy5GH63+y2PLFdIrYe4YLtODFmT3N1YA7ZqUnaBweVbedr4K4cqxOlWAPjIw==", "dev": true, "requires": { "doctrine": "2.1.0", "has": "1.0.1", "jsx-ast-utils": "2.0.1", - "prop-types": "15.6.0" + "prop-types": "15.6.1" } }, "eslint-plugin-standard": { @@ -2686,7 +2443,7 @@ "integrity": "sha1-PWPD7f2gLgbgGkUq2IyqzHzctug=", "dev": true, "requires": { - "esrecurse": "4.2.0", + "esrecurse": "4.2.1", "estraverse": "4.2.0" } }, @@ -2697,12 +2454,12 @@ "dev": true }, "espree": { - "version": "3.5.3", - "resolved": "https://registry.npmjs.org/espree/-/espree-3.5.3.tgz", - "integrity": "sha512-Zy3tAJDORxQZLl2baguiRU1syPERAIg0L+JB2MWorORgTu/CplzvxS9WWA7Xh4+Q+eOQihNs/1o1Xep8cvCxWQ==", + "version": "3.5.4", + "resolved": "https://registry.npmjs.org/espree/-/espree-3.5.4.tgz", + "integrity": "sha512-yAcIQxtmMiB/jL32dzEp2enBeidsB7xWPLNiw3IIkpVds1P+h7qF9YwJq1yUNzp2OKXgAprs4F61ih66UsoD1A==", "dev": true, "requires": { - "acorn": "5.4.1", + "acorn": "5.5.3", "acorn-jsx": "3.0.1" } }, @@ -2713,22 +2470,21 @@ "dev": true }, "esquery": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.0.0.tgz", - "integrity": "sha1-z7qLV9f7qT8XKYqKAGoEzaE9gPo=", + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.0.1.tgz", + "integrity": "sha512-SmiyZ5zIWH9VM+SRUReLS5Q8a7GxtRdxEBVZpm98rJM7Sb+A9DVCndXfkeFUd3byderg+EbDkfnevfCwynWaNA==", "dev": true, "requires": { "estraverse": "4.2.0" } }, "esrecurse": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.2.0.tgz", - "integrity": "sha1-+pVo2Y04I/mkHZHpAtyrnqblsWM=", + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.2.1.tgz", + "integrity": "sha512-64RBB++fIOAXPw3P9cy89qfMlvZEXZkqqJkjqqXIvzP5ezRZjW+lPWjw35UX/3EhUPFYbg5ER4JYgDw4007/DQ==", "dev": true, "requires": { - "estraverse": "4.2.0", - "object-assign": "4.1.1" + "estraverse": "4.2.0" } }, "estraverse": { @@ -2743,28 +2499,22 @@ "integrity": "sha1-Cr9PHKpbyx96nYrMbepPqqBLrJs=", "dev": true }, - "eventemitter3": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/eventemitter3/-/eventemitter3-1.2.0.tgz", - "integrity": "sha1-HIaZHYFq0eUEdQ5zh0Ik7PO+xQg=", - "dev": true - }, - "events": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/events/-/events-1.1.1.tgz", - "integrity": "sha1-nr23Y1rQmccNzEwqH1AEKI6L2SQ=", - "dev": true - }, - "evp_bytestokey": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/evp_bytestokey/-/evp_bytestokey-1.0.3.tgz", - "integrity": "sha512-/f2Go4TognH/KvCISP7OUsHn85hT9nUkxxA9BEWxFn+Oj9o8ZNLm/40hdlgSLyuOimsrTKLUMEorQexp/aPQeA==", + "event-emitter": { + "version": "0.3.5", + "resolved": "https://registry.npmjs.org/event-emitter/-/event-emitter-0.3.5.tgz", + "integrity": "sha1-34xp7vFkeSPHFXuc6DhAYQsCzDk=", "dev": true, "requires": { - "md5.js": "1.3.4", - "safe-buffer": "5.1.1" + "d": "1.0.0", + "es5-ext": "0.10.42" } }, + "eventemitter3": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/eventemitter3/-/eventemitter3-3.1.0.tgz", + "integrity": "sha512-ivIvhpq/Y0uSjcHDcOIccjmYjGLcP09MFGE7ysAwkAvkXfpZlC985pH2/ui64DKazbTW/4kN3yqozUxlXzI6cA==", + "dev": true + }, "execa": { "version": "0.8.0", "resolved": "https://registry.npmjs.org/execa/-/execa-0.8.0.tgz", @@ -2778,6 +2528,19 @@ "p-finally": "1.0.0", "signal-exit": "3.0.2", "strip-eof": "1.0.0" + }, + "dependencies": { + "cross-spawn": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-5.1.0.tgz", + "integrity": "sha1-6L0O/uWPz/b4+UUQoKVUu/ojVEk=", + "dev": true, + "requires": { + "lru-cache": "4.1.1", + "shebang-command": "1.2.0", + "which": "1.3.0" + } + } } }, "execall": { @@ -3019,9 +2782,9 @@ } }, "external-editor": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/external-editor/-/external-editor-2.1.0.tgz", - "integrity": "sha512-E44iT5QVOUJBKij4IIV3uvxuNlbKS38Tw1HiupxEIHPv9qtC2PrDYohbXV5U+1jnfIXttny8gUhj+oZvflFlzA==", + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/external-editor/-/external-editor-2.2.0.tgz", + "integrity": "sha512-bSn6gvGxKt+b7+6TKEv1ZycHleA7aHhRHyAqJyp5pbUFuYYNIzpZnQDk7AsYckyWdEnTeAnay0aCy2aV6iTk9A==", "dev": true, "requires": { "chardet": "0.4.2", @@ -3093,6 +2856,14 @@ "promise": "7.3.1", "setimmediate": "1.0.5", "ua-parser-js": "0.7.17" + }, + "dependencies": { + "core-js": { + "version": "1.2.7", + "resolved": "https://registry.npmjs.org/core-js/-/core-js-1.2.7.tgz", + "integrity": "sha1-ZSKUwUZR2yj6k70tX/KYOk8IxjY=", + "dev": true + } } }, "figures": { @@ -3141,9 +2912,9 @@ } }, "finalhandler": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.0.6.tgz", - "integrity": "sha1-AHrqM9Gk0+QgF/YkhIrVjSEvgU8=", + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.1.0.tgz", + "integrity": "sha1-zgtoVbRYU+eRsvzGgARtiCU91/U=", "dev": true, "requires": { "debug": "2.6.9", @@ -3261,25 +3032,12 @@ } }, "follow-redirects": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.0.0.tgz", - "integrity": "sha1-jjQpjL0uF28lTv/sdaHHjMhJ/Tc=", + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.4.1.tgz", + "integrity": "sha512-uxYePVPogtya1ktGnAAXOacnbIuRMB4dkvqeNz2qTtTQsuzSfbDolV+wMMKxAmCx0bLgAKLbBOkjItMbbkR1vg==", "dev": true, - "optional": true, "requires": { - "debug": "2.6.9" - }, - "dependencies": { - "debug": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", - "dev": true, - "optional": true, - "requires": { - "ms": "2.0.0" - } - } + "debug": "3.1.0" } }, "for-in": { @@ -3316,8 +3074,8 @@ "dev": true, "requires": { "asynckit": "0.4.0", - "combined-stream": "1.0.5", - "mime-types": "2.1.17" + "combined-stream": "1.0.6", + "mime-types": "2.1.18" } }, "fragment-cache": { @@ -3345,39 +3103,29 @@ "dev": true }, "fsevents": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-1.1.3.tgz", - "integrity": "sha512-WIr7iDkdmdbxu/Gh6eKEZJL6KPE74/5MEsf2whTOFNxbIoIixogroLdKYqB6FDav4Wavh/lZdzzd3b2KxIXC5Q==", + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-1.2.2.tgz", + "integrity": "sha512-iownA+hC4uHFp+7gwP/y5SzaiUo7m2vpa0dhpzw8YuKtiZsz7cIXsFbXpLEeBM6WuCQyw1MH4RRe6XI8GFUctQ==", "dev": true, "optional": true, "requires": { - "nan": "2.8.0", - "node-pre-gyp": "0.6.39" + "nan": "2.10.0", + "node-pre-gyp": "0.9.1" }, "dependencies": { "abbrev": { - "version": "1.1.0", + "version": "1.1.1", "bundled": true, "dev": true, "optional": true }, - "ajv": { - "version": "4.11.8", - "bundled": true, - "dev": true, - "optional": true, - "requires": { - "co": "4.6.0", - "json-stable-stringify": "1.0.1" - } - }, "ansi-regex": { "version": "2.1.1", "bundled": true, "dev": true }, "aproba": { - "version": "1.1.1", + "version": "1.2.0", "bundled": true, "dev": true, "optional": true @@ -3389,91 +3137,25 @@ "optional": true, "requires": { "delegates": "1.0.0", - "readable-stream": "2.2.9" + "readable-stream": "2.3.6" } }, - "asn1": { - "version": "0.2.3", - "bundled": true, - "dev": true, - "optional": true - }, - "assert-plus": { - "version": "0.2.0", - "bundled": true, - "dev": true, - "optional": true - }, - "asynckit": { - "version": "0.4.0", - "bundled": true, - "dev": true, - "optional": true - }, - "aws-sign2": { - "version": "0.6.0", - "bundled": true, - "dev": true, - "optional": true - }, - "aws4": { - "version": "1.6.0", - "bundled": true, - "dev": true, - "optional": true - }, "balanced-match": { - "version": "0.4.2", + "version": "1.0.0", "bundled": true, "dev": true }, - "bcrypt-pbkdf": { - "version": "1.0.1", - "bundled": true, - "dev": true, - "optional": true, - "requires": { - "tweetnacl": "0.14.5" - } - }, - "block-stream": { - "version": "0.0.9", - "bundled": true, - "dev": true, - "requires": { - "inherits": "2.0.3" - } - }, - "boom": { - "version": "2.10.1", - "bundled": true, - "dev": true, - "requires": { - "hoek": "2.16.3" - } - }, "brace-expansion": { - "version": "1.1.7", + "version": "1.1.11", "bundled": true, "dev": true, "requires": { - "balanced-match": "0.4.2", + "balanced-match": "1.0.0", "concat-map": "0.0.1" } }, - "buffer-shims": { - "version": "1.0.0", - "bundled": true, - "dev": true - }, - "caseless": { - "version": "0.12.0", - "bundled": true, - "dev": true, - "optional": true - }, - "co": { - "version": "4.6.0", + "chownr": { + "version": "1.0.1", "bundled": true, "dev": true, "optional": true @@ -3483,14 +3165,6 @@ "bundled": true, "dev": true }, - "combined-stream": { - "version": "1.0.5", - "bundled": true, - "dev": true, - "requires": { - "delayed-stream": "1.0.0" - } - }, "concat-map": { "version": "0.0.1", "bundled": true, @@ -3504,35 +3178,11 @@ "core-util-is": { "version": "1.0.2", "bundled": true, - "dev": true - }, - "cryptiles": { - "version": "2.0.5", - "bundled": true, "dev": true, - "requires": { - "boom": "2.10.1" - } - }, - "dashdash": { - "version": "1.14.1", - "bundled": true, - "dev": true, - "optional": true, - "requires": { - "assert-plus": "1.0.0" - }, - "dependencies": { - "assert-plus": { - "version": "1.0.0", - "bundled": true, - "dev": true, - "optional": true - } - } + "optional": true }, "debug": { - "version": "2.6.8", + "version": "2.6.9", "bundled": true, "dev": true, "optional": true, @@ -3546,11 +3196,6 @@ "dev": true, "optional": true }, - "delayed-stream": { - "version": "1.0.0", - "bundled": true, - "dev": true - }, "delegates": { "version": "1.0.0", "bundled": true, @@ -3558,74 +3203,25 @@ "optional": true }, "detect-libc": { - "version": "1.0.2", + "version": "1.0.3", "bundled": true, "dev": true, "optional": true }, - "ecc-jsbn": { - "version": "0.1.1", + "fs-minipass": { + "version": "1.2.5", "bundled": true, "dev": true, "optional": true, "requires": { - "jsbn": "0.1.1" - } - }, - "extend": { - "version": "3.0.1", - "bundled": true, - "dev": true, - "optional": true - }, - "extsprintf": { - "version": "1.0.2", - "bundled": true, - "dev": true - }, - "forever-agent": { - "version": "0.6.1", - "bundled": true, - "dev": true, - "optional": true - }, - "form-data": { - "version": "2.1.4", - "bundled": true, - "dev": true, - "optional": true, - "requires": { - "asynckit": "0.4.0", - "combined-stream": "1.0.5", - "mime-types": "2.1.15" + "minipass": "2.2.4" } }, "fs.realpath": { "version": "1.0.0", "bundled": true, - "dev": true - }, - "fstream": { - "version": "1.0.11", - "bundled": true, - "dev": true, - "requires": { - "graceful-fs": "4.1.11", - "inherits": "2.0.3", - "mkdirp": "0.5.1", - "rimraf": "2.6.1" - } - }, - "fstream-ignore": { - "version": "1.0.5", - "bundled": true, "dev": true, - "optional": true, - "requires": { - "fstream": "1.0.11", - "inherits": "2.0.3", - "minimatch": "3.0.4" - } + "optional": true }, "gauge": { "version": "2.7.4", @@ -3633,7 +3229,7 @@ "dev": true, "optional": true, "requires": { - "aproba": "1.1.1", + "aproba": "1.2.0", "console-control-strings": "1.1.0", "has-unicode": "2.0.1", "object-assign": "4.1.1", @@ -3643,27 +3239,11 @@ "wide-align": "1.1.2" } }, - "getpass": { - "version": "0.1.7", - "bundled": true, - "dev": true, - "optional": true, - "requires": { - "assert-plus": "1.0.0" - }, - "dependencies": { - "assert-plus": { - "version": "1.0.0", - "bundled": true, - "dev": true, - "optional": true - } - } - }, "glob": { "version": "7.1.2", "bundled": true, "dev": true, + "optional": true, "requires": { "fs.realpath": "1.0.0", "inflight": "1.0.6", @@ -3673,64 +3253,35 @@ "path-is-absolute": "1.0.1" } }, - "graceful-fs": { - "version": "4.1.11", - "bundled": true, - "dev": true - }, - "har-schema": { - "version": "1.0.5", - "bundled": true, - "dev": true, - "optional": true - }, - "har-validator": { - "version": "4.2.1", - "bundled": true, - "dev": true, - "optional": true, - "requires": { - "ajv": "4.11.8", - "har-schema": "1.0.5" - } - }, "has-unicode": { "version": "2.0.1", "bundled": true, "dev": true, "optional": true }, - "hawk": { - "version": "3.1.3", + "iconv-lite": { + "version": "0.4.21", "bundled": true, "dev": true, + "optional": true, "requires": { - "boom": "2.10.1", - "cryptiles": "2.0.5", - "hoek": "2.16.3", - "sntp": "1.0.9" + "safer-buffer": "2.1.2" } }, - "hoek": { - "version": "2.16.3", - "bundled": true, - "dev": true - }, - "http-signature": { - "version": "1.1.1", + "ignore-walk": { + "version": "3.0.1", "bundled": true, "dev": true, "optional": true, "requires": { - "assert-plus": "0.2.0", - "jsprim": "1.4.0", - "sshpk": "1.13.0" + "minimatch": "3.0.4" } }, "inflight": { "version": "1.0.6", "bundled": true, "dev": true, + "optional": true, "requires": { "once": "1.4.0", "wrappy": "1.0.2" @@ -3742,7 +3293,7 @@ "dev": true }, "ini": { - "version": "1.3.4", + "version": "1.3.5", "bundled": true, "dev": true, "optional": true @@ -3755,111 +3306,43 @@ "number-is-nan": "1.0.1" } }, - "is-typedarray": { - "version": "1.0.0", - "bundled": true, - "dev": true, - "optional": true - }, "isarray": { "version": "1.0.0", "bundled": true, - "dev": true - }, - "isstream": { - "version": "0.1.2", - "bundled": true, "dev": true, "optional": true }, - "jodid25519": { - "version": "1.0.2", - "bundled": true, - "dev": true, - "optional": true, - "requires": { - "jsbn": "0.1.1" - } - }, - "jsbn": { - "version": "0.1.1", - "bundled": true, - "dev": true, - "optional": true - }, - "json-schema": { - "version": "0.2.3", - "bundled": true, - "dev": true, - "optional": true - }, - "json-stable-stringify": { - "version": "1.0.1", - "bundled": true, - "dev": true, - "optional": true, - "requires": { - "jsonify": "0.0.0" - } - }, - "json-stringify-safe": { - "version": "5.0.1", - "bundled": true, - "dev": true, - "optional": true - }, - "jsonify": { - "version": "0.0.0", - "bundled": true, - "dev": true, - "optional": true - }, - "jsprim": { - "version": "1.4.0", + "minimatch": { + "version": "3.0.4", "bundled": true, "dev": true, - "optional": true, "requires": { - "assert-plus": "1.0.0", - "extsprintf": "1.0.2", - "json-schema": "0.2.3", - "verror": "1.3.6" - }, - "dependencies": { - "assert-plus": { - "version": "1.0.0", - "bundled": true, - "dev": true, - "optional": true - } + "brace-expansion": "1.1.11" } }, - "mime-db": { - "version": "1.27.0", + "minimist": { + "version": "0.0.8", "bundled": true, "dev": true }, - "mime-types": { - "version": "2.1.15", + "minipass": { + "version": "2.2.4", "bundled": true, "dev": true, "requires": { - "mime-db": "1.27.0" + "safe-buffer": "5.1.1", + "yallist": "3.0.2" } }, - "minimatch": { - "version": "3.0.4", + "minizlib": { + "version": "1.1.0", "bundled": true, "dev": true, + "optional": true, "requires": { - "brace-expansion": "1.1.7" + "minipass": "2.2.4" } }, - "minimist": { - "version": "0.0.8", - "bundled": true, - "dev": true - }, "mkdirp": { "version": "0.5.1", "bundled": true, @@ -3874,23 +3357,33 @@ "dev": true, "optional": true }, + "needle": { + "version": "2.2.0", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "debug": "2.6.9", + "iconv-lite": "0.4.21", + "sax": "1.2.4" + } + }, "node-pre-gyp": { - "version": "0.6.39", + "version": "0.9.1", "bundled": true, "dev": true, "optional": true, "requires": { - "detect-libc": "1.0.2", - "hawk": "3.1.3", + "detect-libc": "1.0.3", "mkdirp": "0.5.1", + "needle": "2.2.0", "nopt": "4.0.1", - "npmlog": "4.1.0", - "rc": "1.2.1", - "request": "2.81.0", - "rimraf": "2.6.1", - "semver": "5.3.0", - "tar": "2.2.1", - "tar-pack": "3.4.0" + "npm-packlist": "1.1.10", + "npmlog": "4.1.2", + "rc": "1.2.6", + "rimraf": "2.6.2", + "semver": "5.5.0", + "tar": "4.4.1" } }, "nopt": { @@ -3899,12 +3392,28 @@ "dev": true, "optional": true, "requires": { - "abbrev": "1.1.0", - "osenv": "0.1.4" + "abbrev": "1.1.1", + "osenv": "0.1.5" + } + }, + "npm-bundled": { + "version": "1.0.3", + "bundled": true, + "dev": true, + "optional": true + }, + "npm-packlist": { + "version": "1.1.10", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "ignore-walk": "3.0.1", + "npm-bundled": "1.0.3" } }, "npmlog": { - "version": "4.1.0", + "version": "4.1.2", "bundled": true, "dev": true, "optional": true, @@ -3920,12 +3429,6 @@ "bundled": true, "dev": true }, - "oauth-sign": { - "version": "0.8.2", - "bundled": true, - "dev": true, - "optional": true - }, "object-assign": { "version": "4.1.1", "bundled": true, @@ -3953,7 +3456,7 @@ "optional": true }, "osenv": { - "version": "0.1.4", + "version": "0.1.5", "bundled": true, "dev": true, "optional": true, @@ -3965,39 +3468,23 @@ "path-is-absolute": { "version": "1.0.1", "bundled": true, - "dev": true - }, - "performance-now": { - "version": "0.2.0", - "bundled": true, "dev": true, "optional": true }, "process-nextick-args": { - "version": "1.0.7", - "bundled": true, - "dev": true - }, - "punycode": { - "version": "1.4.1", - "bundled": true, - "dev": true, - "optional": true - }, - "qs": { - "version": "6.4.0", + "version": "2.0.0", "bundled": true, "dev": true, "optional": true }, "rc": { - "version": "1.2.1", + "version": "1.2.6", "bundled": true, "dev": true, "optional": true, "requires": { "deep-extend": "0.4.2", - "ini": "1.3.4", + "ini": "1.3.5", "minimist": "1.2.0", "strip-json-comments": "2.0.1" }, @@ -4011,112 +3498,63 @@ } }, "readable-stream": { - "version": "2.2.9", + "version": "2.3.6", "bundled": true, "dev": true, + "optional": true, "requires": { - "buffer-shims": "1.0.0", "core-util-is": "1.0.2", "inherits": "2.0.3", "isarray": "1.0.0", - "process-nextick-args": "1.0.7", - "string_decoder": "1.0.1", + "process-nextick-args": "2.0.0", + "safe-buffer": "5.1.1", + "string_decoder": "1.1.1", "util-deprecate": "1.0.2" } }, - "request": { - "version": "2.81.0", - "bundled": true, - "dev": true, - "optional": true, - "requires": { - "aws-sign2": "0.6.0", - "aws4": "1.6.0", - "caseless": "0.12.0", - "combined-stream": "1.0.5", - "extend": "3.0.1", - "forever-agent": "0.6.1", - "form-data": "2.1.4", - "har-validator": "4.2.1", - "hawk": "3.1.3", - "http-signature": "1.1.1", - "is-typedarray": "1.0.0", - "isstream": "0.1.2", - "json-stringify-safe": "5.0.1", - "mime-types": "2.1.15", - "oauth-sign": "0.8.2", - "performance-now": "0.2.0", - "qs": "6.4.0", - "safe-buffer": "5.0.1", - "stringstream": "0.0.5", - "tough-cookie": "2.3.2", - "tunnel-agent": "0.6.0", - "uuid": "3.0.1" - } - }, "rimraf": { - "version": "2.6.1", + "version": "2.6.2", "bundled": true, "dev": true, + "optional": true, "requires": { "glob": "7.1.2" } }, "safe-buffer": { - "version": "5.0.1", + "version": "5.1.1", "bundled": true, "dev": true }, - "semver": { - "version": "5.3.0", + "safer-buffer": { + "version": "2.1.2", "bundled": true, "dev": true, "optional": true }, - "set-blocking": { - "version": "2.0.0", + "sax": { + "version": "1.2.4", "bundled": true, "dev": true, "optional": true }, - "signal-exit": { - "version": "3.0.2", + "semver": { + "version": "5.5.0", "bundled": true, "dev": true, "optional": true }, - "sntp": { - "version": "1.0.9", + "set-blocking": { + "version": "2.0.0", "bundled": true, "dev": true, - "requires": { - "hoek": "2.16.3" - } + "optional": true }, - "sshpk": { - "version": "1.13.0", - "bundled": true, - "dev": true, - "optional": true, - "requires": { - "asn1": "0.2.3", - "assert-plus": "1.0.0", - "bcrypt-pbkdf": "1.0.1", - "dashdash": "1.14.1", - "ecc-jsbn": "0.1.1", - "getpass": "0.1.7", - "jodid25519": "1.0.2", - "jsbn": "0.1.1", - "tweetnacl": "0.14.5" - }, - "dependencies": { - "assert-plus": { - "version": "1.0.0", - "bundled": true, - "dev": true, - "optional": true - } - } + "signal-exit": { + "version": "3.0.2", + "bundled": true, + "dev": true, + "optional": true }, "string-width": { "version": "1.0.2", @@ -4129,19 +3567,14 @@ } }, "string_decoder": { - "version": "1.0.1", + "version": "1.1.1", "bundled": true, "dev": true, + "optional": true, "requires": { - "safe-buffer": "5.0.1" + "safe-buffer": "5.1.1" } }, - "stringstream": { - "version": "0.0.5", - "bundled": true, - "dev": true, - "optional": true - }, "strip-ansi": { "version": "3.0.1", "bundled": true, @@ -4157,81 +3590,26 @@ "optional": true }, "tar": { - "version": "2.2.1", - "bundled": true, - "dev": true, - "requires": { - "block-stream": "0.0.9", - "fstream": "1.0.11", - "inherits": "2.0.3" - } - }, - "tar-pack": { - "version": "3.4.0", - "bundled": true, - "dev": true, - "optional": true, - "requires": { - "debug": "2.6.8", - "fstream": "1.0.11", - "fstream-ignore": "1.0.5", - "once": "1.4.0", - "readable-stream": "2.2.9", - "rimraf": "2.6.1", - "tar": "2.2.1", - "uid-number": "0.0.6" - } - }, - "tough-cookie": { - "version": "2.3.2", + "version": "4.4.1", "bundled": true, "dev": true, "optional": true, "requires": { - "punycode": "1.4.1" - } - }, - "tunnel-agent": { - "version": "0.6.0", - "bundled": true, - "dev": true, - "optional": true, - "requires": { - "safe-buffer": "5.0.1" + "chownr": "1.0.1", + "fs-minipass": "1.2.5", + "minipass": "2.2.4", + "minizlib": "1.1.0", + "mkdirp": "0.5.1", + "safe-buffer": "5.1.1", + "yallist": "3.0.2" } }, - "tweetnacl": { - "version": "0.14.5", - "bundled": true, - "dev": true, - "optional": true - }, - "uid-number": { - "version": "0.0.6", - "bundled": true, - "dev": true, - "optional": true - }, "util-deprecate": { "version": "1.0.2", "bundled": true, - "dev": true - }, - "uuid": { - "version": "3.0.1", - "bundled": true, "dev": true, "optional": true }, - "verror": { - "version": "1.3.6", - "bundled": true, - "dev": true, - "optional": true, - "requires": { - "extsprintf": "1.0.2" - } - }, "wide-align": { "version": "1.1.2", "bundled": true, @@ -4245,6 +3623,11 @@ "version": "1.0.2", "bundled": true, "dev": true + }, + "yallist": { + "version": "3.0.2", + "bundled": true, + "dev": true } } }, @@ -4607,9 +3990,9 @@ } }, "globals": { - "version": "11.3.0", - "resolved": "https://registry.npmjs.org/globals/-/globals-11.3.0.tgz", - "integrity": "sha512-kkpcKNlmQan9Z5ZmgqKH/SMbSmjxQ7QjyNqfXVc8VJcoBV2UEg+sxQD15GQofGRh2hfpwUb70VC31DR7Rq5Hdw==", + "version": "11.5.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-11.5.0.tgz", + "integrity": "sha512-hYyf+kI8dm3nORsiiXUQigOU62hDLfJ9G01uyGMxhc6BKsircrUhC4uJPQPUSuq2GrTmiiEt7ewxlMdBewfmKQ==", "dev": true }, "globby": { @@ -4837,6 +4220,51 @@ } } }, + "gulp-concat": { + "version": "2.6.1", + "resolved": "https://registry.npmjs.org/gulp-concat/-/gulp-concat-2.6.1.tgz", + "integrity": "sha1-Yz0WyV2IUEYorQJmVmPO5aR5M1M=", + "dev": true, + "requires": { + "concat-with-sourcemaps": "1.0.6", + "through2": "2.0.3", + "vinyl": "2.1.0" + }, + "dependencies": { + "clone": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/clone/-/clone-2.1.1.tgz", + "integrity": "sha1-0hfR6WERjjrJpLi7oyhVU79kfNs=", + "dev": true + }, + "clone-stats": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/clone-stats/-/clone-stats-1.0.0.tgz", + "integrity": "sha1-s3gt/4u1R04Yuba/D9/ngvh3doA=", + "dev": true + }, + "replace-ext": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/replace-ext/-/replace-ext-1.0.0.tgz", + "integrity": "sha1-3mMSg3P8v3w8z6TeWkgMRaZ5WOs=", + "dev": true + }, + "vinyl": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/vinyl/-/vinyl-2.1.0.tgz", + "integrity": "sha1-Ah+cLPlR1rk5lDyJ617lrdT9kkw=", + "dev": true, + "requires": { + "clone": "2.1.1", + "clone-buffer": "1.0.0", + "clone-stats": "1.0.0", + "cloneable-readable": "1.0.0", + "remove-trailing-separator": "1.1.0", + "replace-ext": "1.0.0" + } + } + } + }, "gulp-rename": { "version": "1.2.2", "resolved": "https://registry.npmjs.org/gulp-rename/-/gulp-rename-1.2.2.tgz", @@ -4855,14 +4283,14 @@ } }, "gulp-sass": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/gulp-sass/-/gulp-sass-3.1.0.tgz", - "integrity": "sha1-U9xLaKH13f5EJKtMJHZVJpqLdLc=", + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/gulp-sass/-/gulp-sass-3.2.1.tgz", + "integrity": "sha512-UATbRpSDsyXCnpYSPBUEvdvtSEzksJs7/oQ0CujIpzKqKrO6vlnYwhX2UTsGrf4rNLwqlSSaM271It0uHYvJ3Q==", "dev": true, "requires": { "gulp-util": "3.0.8", "lodash.clonedeep": "4.5.0", - "node-sass": "4.7.2", + "node-sass": "4.9.0", "through2": "2.0.3", "vinyl-sourcemaps-apply": "0.2.1" } @@ -4935,6 +4363,48 @@ } } }, + "gulp-sourcemaps": { + "version": "2.6.4", + "resolved": "https://registry.npmjs.org/gulp-sourcemaps/-/gulp-sourcemaps-2.6.4.tgz", + "integrity": "sha1-y7IAhFCxvM5s0jv5gze+dRv24wo=", + "dev": true, + "requires": { + "@gulp-sourcemaps/identity-map": "1.0.1", + "@gulp-sourcemaps/map-sources": "1.0.0", + "acorn": "5.5.3", + "convert-source-map": "1.5.1", + "css": "2.2.1", + "debug-fabulous": "1.1.0", + "detect-newline": "2.1.0", + "graceful-fs": "4.1.11", + "source-map": "0.6.1", + "strip-bom-string": "1.0.0", + "through2": "2.0.3" + }, + "dependencies": { + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true + } + } + }, + "gulp-uglify": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/gulp-uglify/-/gulp-uglify-3.0.0.tgz", + "integrity": "sha1-DfAzHXKg0wLj434QlIXd3zPG0co=", + "dev": true, + "requires": { + "gulplog": "1.0.0", + "has-gulplog": "0.1.0", + "lodash": "4.17.5", + "make-error-cause": "1.2.2", + "through2": "2.0.3", + "uglify-js": "3.3.22", + "vinyl-sourcemaps-apply": "0.2.1" + } + }, "gulp-util": { "version": "3.0.8", "resolved": "https://registry.npmjs.org/gulp-util/-/gulp-util-3.0.8.tgz", @@ -5016,8 +4486,8 @@ "dev": true, "requires": { "chalk": "1.1.3", - "commander": "2.14.1", - "is-my-json-valid": "2.17.1", + "commander": "2.15.1", + "is-my-json-valid": "2.17.2", "pinkie-promise": "2.0.1" }, "dependencies": { @@ -5150,25 +4620,6 @@ } } }, - "hash-base": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/hash-base/-/hash-base-2.0.2.tgz", - "integrity": "sha1-ZuodhW206KVHDK32/OI65SRO8uE=", - "dev": true, - "requires": { - "inherits": "2.0.3" - } - }, - "hash.js": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/hash.js/-/hash.js-1.1.3.tgz", - "integrity": "sha512-/UETyP0W22QILqS+6HowevwhEFJ3MBJnwTf75Qob9Wz9t0DPuisL8kW8YZMK62dHAKE1c1p+gY1TtOLY+USEHA==", - "dev": true, - "requires": { - "inherits": "2.0.3", - "minimalistic-assert": "1.0.0" - } - }, "hawk": { "version": "3.1.3", "resolved": "https://registry.npmjs.org/hawk/-/hawk-3.1.3.tgz", @@ -5179,6 +4630,14 @@ "cryptiles": "2.0.5", "hoek": "2.16.3", "sntp": "1.0.9" + }, + "dependencies": { + "hoek": { + "version": "2.16.3", + "resolved": "https://registry.npmjs.org/hoek/-/hoek-2.16.3.tgz", + "integrity": "sha1-ILt0A9POo5jpHcRxCo/xuCdKJe0=", + "dev": true + } } }, "hipchat-notifier": { @@ -5192,23 +4651,6 @@ "request": "2.79.0" } }, - "hmac-drbg": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/hmac-drbg/-/hmac-drbg-1.0.1.tgz", - "integrity": "sha1-0nRXAQJabHdabFRXk+1QL8DGSaE=", - "dev": true, - "requires": { - "hash.js": "1.1.3", - "minimalistic-assert": "1.0.0", - "minimalistic-crypto-utils": "1.0.1" - } - }, - "hoek": { - "version": "2.16.3", - "resolved": "https://registry.npmjs.org/hoek/-/hoek-2.16.3.tgz", - "integrity": "sha1-ILt0A9POo5jpHcRxCo/xuCdKJe0=", - "dev": true - }, "homedir-polyfill": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/homedir-polyfill/-/homedir-polyfill-1.0.1.tgz", @@ -5230,12 +4672,6 @@ "integrity": "sha1-ELMKOGCF9Dzt41PMj6fLDe7qZos=", "dev": true }, - "htmlescape": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/htmlescape/-/htmlescape-1.1.1.tgz", - "integrity": "sha1-OgPtwiFLyjtmQko+eVk0lQnLA1E=", - "dev": true - }, "htmlparser2": { "version": "3.9.2", "resolved": "https://registry.npmjs.org/htmlparser2/-/htmlparser2-3.9.2.tgz", @@ -5251,32 +4687,25 @@ } }, "http-errors": { - "version": "1.6.2", - "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.6.2.tgz", - "integrity": "sha1-CgAsyFcHGSp+eUbO7cERVfYOxzY=", + "version": "1.6.3", + "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.6.3.tgz", + "integrity": "sha1-i1VoC7S+KDoLW/TqLjhYC+HZMg0=", "dev": true, "requires": { - "depd": "1.1.1", + "depd": "1.1.2", "inherits": "2.0.3", - "setprototypeof": "1.0.3", - "statuses": "1.4.0" - }, - "dependencies": { - "depd": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/depd/-/depd-1.1.1.tgz", - "integrity": "sha1-V4O04cRZ8G+lyif5kfPQbnoxA1k=", - "dev": true - } + "setprototypeof": "1.1.0", + "statuses": "1.5.0" } }, "http-proxy": { - "version": "1.16.2", - "resolved": "https://registry.npmjs.org/http-proxy/-/http-proxy-1.16.2.tgz", - "integrity": "sha1-Bt/ykpUr9k2+hHH6nfcwZtTzd0I=", + "version": "1.17.0", + "resolved": "https://registry.npmjs.org/http-proxy/-/http-proxy-1.17.0.tgz", + "integrity": "sha512-Taqn+3nNvYRfJ3bGvKfBSRwy1v6eePlm3oc/aWVxZp57DQr5Eq3xhKJi7Z4hZpS8PC3H4qI+Yly5EmFacGuA/g==", "dev": true, "requires": { - "eventemitter3": "1.2.0", + "eventemitter3": "3.1.0", + "follow-redirects": "1.4.1", "requires-port": "1.0.0" } }, @@ -5310,7 +4739,7 @@ "requires": { "assert-plus": "0.2.0", "jsprim": "1.4.1", - "sshpk": "1.13.1" + "sshpk": "1.14.1" } }, "httpntlm": { @@ -5329,12 +4758,6 @@ "integrity": "sha1-QzX/2CzZaWaKOUZckprGHWOTYn8=", "dev": true }, - "https-browserify": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/https-browserify/-/https-browserify-1.0.0.tgz", - "integrity": "sha1-7AbBDgo0wPL68Zn3/X/Hj//QPHM=", - "dev": true - }, "https-proxy-agent": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-1.0.0.tgz", @@ -5374,12 +4797,6 @@ "integrity": "sha512-oTZqweIP51xaGPI4uPa56/Pri/480R+mo7SeU+YETByQNhDG55ycFyNLIgta9vXhILrxXDmF7ZGhqZIcuN0gJQ==", "dev": true }, - "ieee754": { - "version": "1.1.8", - "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.1.8.tgz", - "integrity": "sha1-vjPUCsEO8ZJnAfbwii2G+/0a0+Q=", - "dev": true - }, "ignore": { "version": "3.3.7", "resolved": "https://registry.npmjs.org/ignore/-/ignore-3.3.7.tgz", @@ -5448,26 +4865,17 @@ "integrity": "sha512-RZY5huIKCMRWDUqZlEi72f/lmXKMvuszcMBduliQ3nnWbx9X/ZBQO7DijMEYS9EhHBb2qacRUMtC7svLwe0lcw==", "dev": true }, - "inline-source-map": { - "version": "0.6.2", - "resolved": "https://registry.npmjs.org/inline-source-map/-/inline-source-map-0.6.2.tgz", - "integrity": "sha1-+Tk0ccGKedFyT4Y/o4tYY3Ct4qU=", - "dev": true, - "requires": { - "source-map": "0.5.7" - } - }, "inquirer": { "version": "3.3.0", "resolved": "https://registry.npmjs.org/inquirer/-/inquirer-3.3.0.tgz", "integrity": "sha512-h+xtnyk4EwKvFWHrUYsWErEVR+igKtLdchu+o0Z1RL7VU/jVMFbYir2bp6bAj8efFNxWqHX0dIss6fJQ+/+qeQ==", "dev": true, "requires": { - "ansi-escapes": "3.0.0", + "ansi-escapes": "3.1.0", "chalk": "2.3.0", "cli-cursor": "2.1.0", "cli-width": "2.2.0", - "external-editor": "2.1.0", + "external-editor": "2.2.0", "figures": "2.0.0", "lodash": "4.17.5", "mute-stream": "0.0.7", @@ -5480,9 +4888,9 @@ }, "dependencies": { "ansi-escapes": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-3.0.0.tgz", - "integrity": "sha512-O/klc27mWNUigtv0F8NJWbLF00OcegQalkqKURWdosW08YZKi4m6CnSUSvIZG1otNJbTWhN01Hhz389DW7mvDQ==", + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-3.1.0.tgz", + "integrity": "sha512-UgAb8H9D41AQnu/PbWlCofQVcnV4Gs2bBJi9eZPxfU/hgglFh3SMDMENRIqdr7H6XFnXdoknctFByVsCOotTVw==", "dev": true }, "cli-cursor": { @@ -5549,67 +4957,6 @@ } } }, - "insert-module-globals": { - "version": "7.0.1", - "resolved": "https://registry.npmjs.org/insert-module-globals/-/insert-module-globals-7.0.1.tgz", - "integrity": "sha1-wDv04BywhtW15azorQr+eInWOMM=", - "dev": true, - "requires": { - "JSONStream": "1.3.2", - "combine-source-map": "0.7.2", - "concat-stream": "1.5.2", - "is-buffer": "1.1.6", - "lexical-scope": "1.2.0", - "process": "0.11.10", - "through2": "2.0.3", - "xtend": "4.0.1" - }, - "dependencies": { - "combine-source-map": { - "version": "0.7.2", - "resolved": "https://registry.npmjs.org/combine-source-map/-/combine-source-map-0.7.2.tgz", - "integrity": "sha1-CHAxKFazB6h8xKxIbzqaYq7MwJ4=", - "dev": true, - "requires": { - "convert-source-map": "1.1.3", - "inline-source-map": "0.6.2", - "lodash.memoize": "3.0.4", - "source-map": "0.5.7" - } - }, - "concat-stream": { - "version": "1.5.2", - "resolved": "https://registry.npmjs.org/concat-stream/-/concat-stream-1.5.2.tgz", - "integrity": "sha1-cIl4Yk2FavQaWnQd790mHadSwmY=", - "dev": true, - "requires": { - "inherits": "2.0.3", - "readable-stream": "2.0.6", - "typedarray": "0.0.6" - } - }, - "readable-stream": { - "version": "2.0.6", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.0.6.tgz", - "integrity": "sha1-j5A0HmilPMySh4jaz80Rs265t44=", - "dev": true, - "requires": { - "core-util-is": "1.0.2", - "inherits": "2.0.3", - "isarray": "1.0.0", - "process-nextick-args": "1.0.7", - "string_decoder": "0.10.31", - "util-deprecate": "1.0.2" - } - }, - "string_decoder": { - "version": "0.10.31", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz", - "integrity": "sha1-YuIDvEF2bGwoyfyEMB2rHFMQ+pQ=", - "dev": true - } - } - }, "interpret": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/interpret/-/interpret-1.1.0.tgz", @@ -5799,12 +5146,20 @@ } }, "is-glob": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.0.tgz", - "integrity": "sha1-lSHHaEXMJhCoUgPd8ICpWML/q8A=", + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-2.0.1.tgz", + "integrity": "sha1-0Jb5JqPe1WAPP9/ZEZjLCIjC2GM=", "dev": true, "requires": { - "is-extglob": "2.1.1" + "is-extglob": "1.0.0" + }, + "dependencies": { + "is-extglob": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-1.0.0.tgz", + "integrity": "sha1-rEaBd8SUNAWgkvyPKXYMb/xiBsA=", + "dev": true + } } }, "is-hexadecimal": { @@ -5813,14 +5168,21 @@ "integrity": "sha1-bghLvJIGH7sJcexYts5tQE4k2mk=", "dev": true }, + "is-my-ip-valid": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-my-ip-valid/-/is-my-ip-valid-1.0.0.tgz", + "integrity": "sha512-gmh/eWXROncUzRnIa1Ubrt5b8ep/MGSnfAUI3aRp+sqTCs1tv1Isl8d8F6JmkN3dXKc3ehZMrtiPN9eL03NuaQ==", + "dev": true + }, "is-my-json-valid": { - "version": "2.17.1", - "resolved": "https://registry.npmjs.org/is-my-json-valid/-/is-my-json-valid-2.17.1.tgz", - "integrity": "sha512-Q2khNw+oBlWuaYvEEHtKSw/pCxD2L5Rc1C+UQme9X6JdRDh7m5D7HkozA0qa3DUkQ6VzCnEm8mVIQPyIRkI5sQ==", + "version": "2.17.2", + "resolved": "https://registry.npmjs.org/is-my-json-valid/-/is-my-json-valid-2.17.2.tgz", + "integrity": "sha512-IBhBslgngMQN8DDSppmgDv7RNrlFotuuDsKcrCP3+HbFaVivIBU7u9oiiErw8sH4ynx3+gOGQ3q2otkgiSi6kg==", "dev": true, "requires": { "generate-function": "2.0.0", "generate-object-property": "1.2.0", + "is-my-ip-valid": "1.0.0", "jsonpointer": "4.0.1", "xtend": "4.0.1" } @@ -6050,7 +5412,7 @@ "dev": true, "requires": { "node-fetch": "1.7.3", - "whatwg-fetch": "2.0.3" + "whatwg-fetch": "2.0.4" } }, "isstream": { @@ -6140,15 +5502,6 @@ "integrity": "sha1-NJptRMU6Ud6JtAgFxdXlm0F9M0A=", "dev": true }, - "json-stable-stringify": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/json-stable-stringify/-/json-stable-stringify-0.0.1.tgz", - "integrity": "sha1-YRwj6BTbN1Un34URk9tZ3Sryf0U=", - "dev": true, - "requires": { - "jsonify": "0.0.0" - } - }, "json-stable-stringify-without-jsonify": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz", @@ -6161,18 +5514,6 @@ "integrity": "sha1-Epai1Y/UXxmg9s4B1lcB4sc1tus=", "dev": true }, - "jsonify": { - "version": "0.0.0", - "resolved": "https://registry.npmjs.org/jsonify/-/jsonify-0.0.0.tgz", - "integrity": "sha1-LHS27kHZPKUbe1qu6PUDYx0lKnM=", - "dev": true - }, - "jsonparse": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/jsonparse/-/jsonparse-1.3.1.tgz", - "integrity": "sha1-P02uSpH6wxX3EGL4UhzCOfE2YoA=", - "dev": true - }, "jsonpointer": { "version": "4.0.1", "resolved": "https://registry.npmjs.org/jsonpointer/-/jsonpointer-4.0.1.tgz", @@ -6209,47 +5550,40 @@ } }, "karma": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/karma/-/karma-2.0.0.tgz", - "integrity": "sha512-K9Kjp8CldLyL9ANSUctDyxC7zH3hpqXj/K09qVf06K3T/kXaHtFZ5tQciK7OzQu68FLvI89Na510kqQ2LCbpIw==", + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/karma/-/karma-2.0.2.tgz", + "integrity": "sha1-TS25QChQpmVR+nhLAWT7CCTtjEs=", "dev": true, "requires": { "bluebird": "3.5.1", "body-parser": "1.18.2", - "browserify": "14.5.0", "chokidar": "1.7.0", - "colors": "1.1.2", + "colors": "1.2.1", "combine-lists": "1.0.1", - "connect": "3.6.5", - "core-js": "2.5.3", + "connect": "3.6.6", + "core-js": "2.5.5", "di": "0.0.1", "dom-serialize": "2.2.1", "expand-braces": "0.1.2", "glob": "7.1.2", "graceful-fs": "4.1.11", - "http-proxy": "1.16.2", + "http-proxy": "1.17.0", "isbinaryfile": "3.0.2", "lodash": "4.17.5", - "log4js": "2.5.2", + "log4js": "2.5.3", "mime": "1.6.0", "minimatch": "3.0.4", "optimist": "0.6.1", - "qjobs": "1.1.5", + "qjobs": "1.2.0", "range-parser": "1.2.0", "rimraf": "2.6.2", "safe-buffer": "5.1.1", "socket.io": "2.0.4", "source-map": "0.6.1", "tmp": "0.0.33", - "useragent": "2.3.0" + "useragent": "2.2.1" }, "dependencies": { - "core-js": { - "version": "2.5.3", - "resolved": "https://registry.npmjs.org/core-js/-/core-js-2.5.3.tgz", - "integrity": "sha1-isw4NFgk8W2DZbfJtCWRaOjtYD4=", - "dev": true - }, "source-map": { "version": "0.6.1", "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", @@ -6303,29 +5637,10 @@ "dev": true }, "known-css-properties": { - "version": "0.5.0", - "resolved": "https://registry.npmjs.org/known-css-properties/-/known-css-properties-0.5.0.tgz", - "integrity": "sha512-LOS0CoS8zcZnB1EjLw4LLqDXw8nvt3AGH5dXLQP3D9O1nLLA+9GC5GnPl5mmF+JiQAtSX4VyZC7KvEtcA4kUtA==", - "dev": true - }, - "labeled-stream-splicer": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/labeled-stream-splicer/-/labeled-stream-splicer-2.0.0.tgz", - "integrity": "sha1-pS4dE4AkwAuGscDJH2d5GLiuClk=", - "dev": true, - "requires": { - "inherits": "2.0.3", - "isarray": "0.0.1", - "stream-splicer": "2.0.0" - }, - "dependencies": { - "isarray": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz", - "integrity": "sha1-ihis/Kmo9Bd+Cav8YDiTmwXR7t8=", - "dev": true - } - } + "version": "0.5.0", + "resolved": "https://registry.npmjs.org/known-css-properties/-/known-css-properties-0.5.0.tgz", + "integrity": "sha512-LOS0CoS8zcZnB1EjLw4LLqDXw8nvt3AGH5dXLQP3D9O1nLLA+9GC5GnPl5mmF+JiQAtSX4VyZC7KvEtcA4kUtA==", + "dev": true }, "lazy-cache": { "version": "2.0.2", @@ -6361,15 +5676,6 @@ "type-check": "0.3.2" } }, - "lexical-scope": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/lexical-scope/-/lexical-scope-1.2.0.tgz", - "integrity": "sha1-/Ope3HBKSzqHls3KQZw6CvryLfQ=", - "dev": true, - "requires": { - "astw": "2.2.0" - } - }, "libbase64": { "version": "0.1.0", "resolved": "https://registry.npmjs.org/libbase64/-/libbase64-0.1.0.tgz", @@ -6418,14 +5724,14 @@ } }, "lint-staged": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/lint-staged/-/lint-staged-6.1.0.tgz", - "integrity": "sha512-RMB6BUd2bEKaPnj06F7j8RRB8OHM+UP4fQS2LT8lF+X9BjSaezw1oVB5hc4elLhYvzlFCkhAaatzYz+x53YHgw==", + "version": "6.1.1", + "resolved": "https://registry.npmjs.org/lint-staged/-/lint-staged-6.1.1.tgz", + "integrity": "sha512-M/7bwLdXbeG7ZNLcasGeLMBDg60/w6obj3KOtINwJyxAxb53XGY0yH5FSZlWklEzuVbTtqtIfAajh6jYIN90AA==", "dev": true, "requires": { "app-root-path": "2.0.1", "chalk": "2.3.0", - "commander": "2.14.1", + "commander": "2.15.1", "cosmiconfig": "4.0.0", "debug": "3.1.0", "dedent": "0.7.0", @@ -6441,8 +5747,19 @@ "p-map": "1.2.0", "path-is-inside": "1.0.2", "pify": "3.0.0", - "staged-git-files": "0.0.4", + "staged-git-files": "1.0.0", "stringify-object": "3.2.2" + }, + "dependencies": { + "is-glob": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.0.tgz", + "integrity": "sha1-lSHHaEXMJhCoUgPd8ICpWML/q8A=", + "dev": true, + "requires": { + "is-extglob": "2.1.1" + } + } } }, "listr": { @@ -6465,7 +5782,7 @@ "log-update": "1.0.2", "ora": "0.2.3", "p-map": "1.2.0", - "rxjs": "5.5.6", + "rxjs": "5.5.10", "stream-to-observable": "0.2.0", "strip-ansi": "3.0.1" }, @@ -6610,31 +5927,32 @@ } }, "load-json-file": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/load-json-file/-/load-json-file-2.0.0.tgz", - "integrity": "sha1-eUfkIUmvgNaWy/eXvKq8/h/inKg=", + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/load-json-file/-/load-json-file-1.1.0.tgz", + "integrity": "sha1-lWkFcI1YtLq0wiYbBPWfMcmTdMA=", "dev": true, "requires": { "graceful-fs": "4.1.11", "parse-json": "2.2.0", "pify": "2.3.0", - "strip-bom": "3.0.0" + "pinkie-promise": "2.0.1", + "strip-bom": "2.0.0" }, "dependencies": { - "parse-json": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-2.2.0.tgz", - "integrity": "sha1-9ID0BDTvgHQfhGkJn43qGPVaTck=", - "dev": true, - "requires": { - "error-ex": "1.3.1" - } - }, "pify": { "version": "2.3.0", "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=", "dev": true + }, + "strip-bom": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-2.0.0.tgz", + "integrity": "sha1-YhmoVhZSBJHzV4i9vxRHqZx+aw4=", + "dev": true, + "requires": { + "is-utf8": "0.2.1" + } } } }, @@ -6766,12 +6084,6 @@ "lodash.isarray": "3.0.4" } }, - "lodash.memoize": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/lodash.memoize/-/lodash.memoize-3.0.4.tgz", - "integrity": "sha1-LcvSwofLwKVcxCMovQxzYVDVPj8=", - "dev": true - }, "lodash.mergewith": { "version": "4.6.1", "resolved": "https://registry.npmjs.org/lodash.mergewith/-/lodash.mergewith-4.6.1.tgz", @@ -6831,14 +6143,14 @@ } }, "log4js": { - "version": "2.5.2", - "resolved": "https://registry.npmjs.org/log4js/-/log4js-2.5.2.tgz", - "integrity": "sha512-MmZhzQCfCV5+nQgOqy34V9EV3k+Z/rPCdxyq+25EePKpwdUQxCb19BTmL5iX3iOCSAV/tWh7KVYqchwrx3+S2Q==", + "version": "2.5.3", + "resolved": "https://registry.npmjs.org/log4js/-/log4js-2.5.3.tgz", + "integrity": "sha512-YL/qpTxYtK0iWWbuKCrevDZz5lh+OjyHHD+mICqpjnYGKdNRBvPeh/1uYjkKUemT1CSO4wwLOwphWMpKAnD9kw==", "dev": true, "requires": { "amqplib": "0.5.2", "axios": "0.15.3", - "circular-json": "0.5.1", + "circular-json": "0.5.3", "date-format": "1.2.0", "debug": "3.1.0", "hipchat-notifier": "1.1.0", @@ -6852,9 +6164,9 @@ }, "dependencies": { "circular-json": { - "version": "0.5.1", - "resolved": "https://registry.npmjs.org/circular-json/-/circular-json-0.5.1.tgz", - "integrity": "sha512-UjgcRlTAhAkLeXmDe2wK7ktwy/tgAqxiSndTIPiFZuIPLZmzHzWMwUIe9h9m/OokypG7snxCDEuwJshGBdPvaw==", + "version": "0.5.3", + "resolved": "https://registry.npmjs.org/circular-json/-/circular-json-0.5.3.tgz", + "integrity": "sha512-YlxLOimeIoQGHnMe3kbf8qIV2Bj7uXLbljMPRguNT49GmSAzooNfS9EJ91rSJKbLBOOzM5agvtx0WyechZN/Hw==", "dev": true } } @@ -6879,8 +6191,8 @@ "optional": true, "requires": { "asynckit": "0.4.0", - "combined-stream": "1.0.5", - "mime-types": "2.1.17" + "combined-stream": "1.0.6", + "mime-types": "2.1.18" } }, "node-uuid": { @@ -6905,10 +6217,10 @@ "optional": true, "requires": { "aws-sign2": "0.6.0", - "aws4": "1.6.0", + "aws4": "1.7.0", "bl": "1.1.2", "caseless": "0.11.0", - "combined-stream": "1.0.5", + "combined-stream": "1.0.6", "extend": "3.0.1", "forever-agent": "0.6.1", "form-data": "2.0.0", @@ -6918,12 +6230,12 @@ "is-typedarray": "1.0.0", "isstream": "0.1.2", "json-stringify-safe": "5.0.1", - "mime-types": "2.1.17", + "mime-types": "2.1.18", "node-uuid": "1.4.8", "oauth-sign": "0.8.2", "qs": "6.2.3", "stringstream": "0.0.5", - "tough-cookie": "2.3.3", + "tough-cookie": "2.3.4", "tunnel-agent": "0.4.3" } } @@ -6964,6 +6276,15 @@ "yallist": "2.1.2" } }, + "lru-queue": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/lru-queue/-/lru-queue-0.1.0.tgz", + "integrity": "sha1-Jzi9nw089PhEkMVzbEhpmsYyzaM=", + "dev": true, + "requires": { + "es5-ext": "0.10.42" + } + }, "mailcomposer": { "version": "4.0.1", "resolved": "https://registry.npmjs.org/mailcomposer/-/mailcomposer-4.0.1.tgz", @@ -7012,6 +6333,21 @@ } } }, + "make-error": { + "version": "1.3.4", + "resolved": "https://registry.npmjs.org/make-error/-/make-error-1.3.4.tgz", + "integrity": "sha512-0Dab5btKVPhibSalc9QGXb559ED7G7iLjFXBaj9Wq8O3vorueR5K5jaE3hkG6ZQINyhA/JgG6Qk4qdFQjsYV6g==", + "dev": true + }, + "make-error-cause": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/make-error-cause/-/make-error-cause-1.2.2.tgz", + "integrity": "sha1-3wOI/NCzeBbf8KX7gQiTl3fcvJ0=", + "dev": true, + "requires": { + "make-error": "1.3.4" + } + }, "make-iterator": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/make-iterator/-/make-iterator-1.0.0.tgz", @@ -7071,28 +6407,6 @@ "integrity": "sha1-jUEmgWi/htEQK5gQnijlMeejRXg=", "dev": true }, - "md5.js": { - "version": "1.3.4", - "resolved": "https://registry.npmjs.org/md5.js/-/md5.js-1.3.4.tgz", - "integrity": "sha1-6b296UogpawYsENA/Fdk1bCdkB0=", - "dev": true, - "requires": { - "hash-base": "3.0.4", - "inherits": "2.0.3" - }, - "dependencies": { - "hash-base": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/hash-base/-/hash-base-3.0.4.tgz", - "integrity": "sha1-X8hoaEfs1zSZQDMZprCj8/auSRg=", - "dev": true, - "requires": { - "inherits": "2.0.3", - "safe-buffer": "5.1.1" - } - } - } - }, "mdast-util-compact": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/mdast-util-compact/-/mdast-util-compact-1.0.1.tgz", @@ -7118,6 +6432,22 @@ "mimic-fn": "1.2.0" } }, + "memoizee": { + "version": "0.4.12", + "resolved": "https://registry.npmjs.org/memoizee/-/memoizee-0.4.12.tgz", + "integrity": "sha512-sprBu6nwxBWBvBOh5v2jcsGqiGLlL2xr2dLub3vR8dnE8YB17omwtm/0NSHl8jjNbcsJd5GMWJAnTSVe/O0Wfg==", + "dev": true, + "requires": { + "d": "1.0.0", + "es5-ext": "0.10.42", + "es6-weak-map": "2.0.2", + "event-emitter": "0.3.5", + "is-promise": "2.1.0", + "lru-queue": "0.1.0", + "next-tick": "1.0.0", + "timers-ext": "0.1.5" + } + }, "meow": { "version": "3.7.0", "resolved": "https://registry.npmjs.org/meow/-/meow-3.7.0.tgz", @@ -7136,80 +6466,11 @@ "trim-newlines": "1.0.0" }, "dependencies": { - "load-json-file": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/load-json-file/-/load-json-file-1.1.0.tgz", - "integrity": "sha1-lWkFcI1YtLq0wiYbBPWfMcmTdMA=", - "dev": true, - "requires": { - "graceful-fs": "4.1.11", - "parse-json": "2.2.0", - "pify": "2.3.0", - "pinkie-promise": "2.0.1", - "strip-bom": "2.0.0" - } - }, "minimist": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.0.tgz", "integrity": "sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ=", "dev": true - }, - "parse-json": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-2.2.0.tgz", - "integrity": "sha1-9ID0BDTvgHQfhGkJn43qGPVaTck=", - "dev": true, - "requires": { - "error-ex": "1.3.1" - } - }, - "path-type": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/path-type/-/path-type-1.1.0.tgz", - "integrity": "sha1-WcRPfuSR2nBNpBXaWkBwuk+P5EE=", - "dev": true, - "requires": { - "graceful-fs": "4.1.11", - "pify": "2.3.0", - "pinkie-promise": "2.0.1" - } - }, - "pify": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", - "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=", - "dev": true - }, - "read-pkg": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-1.1.0.tgz", - "integrity": "sha1-9f+qXs0pyzHAR0vKfXVra7KePyg=", - "dev": true, - "requires": { - "load-json-file": "1.1.0", - "normalize-package-data": "2.4.0", - "path-type": "1.1.0" - } - }, - "read-pkg-up": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-1.0.1.tgz", - "integrity": "sha1-nWPBMnbAZZGNV/ACpX9AobZD+wI=", - "dev": true, - "requires": { - "find-up": "1.1.2", - "read-pkg": "1.1.0" - } - }, - "strip-bom": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-2.0.0.tgz", - "integrity": "sha1-YhmoVhZSBJHzV4i9vxRHqZx+aw4=", - "dev": true, - "requires": { - "is-utf8": "0.2.1" - } } } }, @@ -7234,16 +6495,6 @@ "to-regex": "3.0.1" } }, - "miller-rabin": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/miller-rabin/-/miller-rabin-4.0.1.tgz", - "integrity": "sha512-115fLhvZVqWwHPbClyntxEVfVDfl9DLLTuJvq3g2O/Oxi8AiNouAHvDSzHS0viUJc+V5vm3eq91Xwqn9dp4jRA==", - "dev": true, - "requires": { - "bn.js": "4.11.8", - "brorand": "1.1.0" - } - }, "mime": { "version": "1.6.0", "resolved": "https://registry.npmjs.org/mime/-/mime-1.6.0.tgz", @@ -7251,18 +6502,18 @@ "dev": true }, "mime-db": { - "version": "1.30.0", - "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.30.0.tgz", - "integrity": "sha1-dMZD2i3Z1qRTmZY0ZbJtXKfXHwE=", + "version": "1.33.0", + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.33.0.tgz", + "integrity": "sha512-BHJ/EKruNIqJf/QahvxwQZXKygOQ256myeN/Ew+THcAa5q+PjyTTMMeNQC4DZw5AwfvelsUrA6B67NKMqXDbzQ==", "dev": true }, "mime-types": { - "version": "2.1.17", - "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.17.tgz", - "integrity": "sha1-Cdejk/A+mVp5+K+Fe3Cp4KsWVXo=", + "version": "2.1.18", + "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.18.tgz", + "integrity": "sha512-lc/aahn+t4/SWV/qcmumYjymLsWfN3ELhpmVuUFjgsORruuZPVSwAQryq+HHGvO/SI2KVX26bx+En+zhM8g8hQ==", "dev": true, "requires": { - "mime-db": "1.30.0" + "mime-db": "1.33.0" } }, "mimic-fn": { @@ -7271,18 +6522,6 @@ "integrity": "sha512-jf84uxzwiuiIVKiOLpfYk7N46TSy8ubTonmneY9vrpHNAnp0QBt2BxWV9dO3/j+BoVAb+a5G6YDPW3M5HOdMWQ==", "dev": true }, - "minimalistic-assert": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/minimalistic-assert/-/minimalistic-assert-1.0.0.tgz", - "integrity": "sha1-cCvi3aazf0g2vLP121ZkG2Sh09M=", - "dev": true - }, - "minimalistic-crypto-utils": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/minimalistic-crypto-utils/-/minimalistic-crypto-utils-1.0.1.tgz", - "integrity": "sha1-9sAMHAsIIkblxNmd+4x8CDsrWCo=", - "dev": true - }, "minimatch": { "version": "3.0.4", "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz", @@ -7338,73 +6577,6 @@ "minimist": "0.0.8" } }, - "module-deps": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/module-deps/-/module-deps-4.1.1.tgz", - "integrity": "sha1-IyFYM/HaE/1gbMuAh7RIUty4If0=", - "dev": true, - "requires": { - "JSONStream": "1.3.2", - "browser-resolve": "1.11.2", - "cached-path-relative": "1.0.1", - "concat-stream": "1.5.2", - "defined": "1.0.0", - "detective": "4.7.1", - "duplexer2": "0.1.4", - "inherits": "2.0.3", - "parents": "1.0.1", - "readable-stream": "2.3.3", - "resolve": "1.5.0", - "stream-combiner2": "1.1.1", - "subarg": "1.0.0", - "through2": "2.0.3", - "xtend": "4.0.1" - }, - "dependencies": { - "concat-stream": { - "version": "1.5.2", - "resolved": "https://registry.npmjs.org/concat-stream/-/concat-stream-1.5.2.tgz", - "integrity": "sha1-cIl4Yk2FavQaWnQd790mHadSwmY=", - "dev": true, - "requires": { - "inherits": "2.0.3", - "readable-stream": "2.0.6", - "typedarray": "0.0.6" - }, - "dependencies": { - "readable-stream": { - "version": "2.0.6", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.0.6.tgz", - "integrity": "sha1-j5A0HmilPMySh4jaz80Rs265t44=", - "dev": true, - "requires": { - "core-util-is": "1.0.2", - "inherits": "2.0.3", - "isarray": "1.0.0", - "process-nextick-args": "1.0.7", - "string_decoder": "0.10.31", - "util-deprecate": "1.0.2" - } - } - } - }, - "duplexer2": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/duplexer2/-/duplexer2-0.1.4.tgz", - "integrity": "sha1-ixLauHjA1p4+eJEFFmKjL8a93ME=", - "dev": true, - "requires": { - "readable-stream": "2.3.3" - } - }, - "string_decoder": { - "version": "0.10.31", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz", - "integrity": "sha1-YuIDvEF2bGwoyfyEMB2rHFMQ+pQ=", - "dev": true - } - } - }, "ms": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", @@ -7427,9 +6599,9 @@ "dev": true }, "nan": { - "version": "2.8.0", - "resolved": "https://registry.npmjs.org/nan/-/nan-2.8.0.tgz", - "integrity": "sha1-7XFfP+neArV6XmJS2QqWZ14fCFo=", + "version": "2.10.0", + "resolved": "https://registry.npmjs.org/nan/-/nan-2.10.0.tgz", + "integrity": "sha512-bAdJv7fBLhWC+/Bls0Oza+mvTaNQtP+1RyhhhvD95pgUJz6XM5IzgmxOkItJ9tkoCiplvAnXI1tNmmUD/eScyA==", "dev": true }, "nanomatch": { @@ -7484,6 +6656,12 @@ "dev": true, "optional": true }, + "next-tick": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/next-tick/-/next-tick-1.0.0.tgz", + "integrity": "sha1-yobR/ogoFpsBICCOPchCS524NCw=", + "dev": true + }, "node-fetch": { "version": "1.7.3", "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-1.7.3.tgz", @@ -7507,7 +6685,7 @@ "mkdirp": "0.5.1", "nopt": "3.0.6", "npmlog": "4.1.2", - "osenv": "0.1.4", + "osenv": "0.1.5", "request": "2.79.0", "rimraf": "2.6.2", "semver": "5.3.0", @@ -7524,9 +6702,9 @@ } }, "node-sass": { - "version": "4.7.2", - "resolved": "https://registry.npmjs.org/node-sass/-/node-sass-4.7.2.tgz", - "integrity": "sha512-CaV+wLqZ7//Jdom5aUFCpGNoECd7BbNhjuwdsX/LkXBrHl8eb1Wjw4HvWqcFvhr5KuNgAk8i/myf/MQ1YYeroA==", + "version": "4.9.0", + "resolved": "https://registry.npmjs.org/node-sass/-/node-sass-4.9.0.tgz", + "integrity": "sha512-QFHfrZl6lqRU3csypwviz2XLgGNOoWQbo2GOvtsfQqOfL4cy1BtWnhx/XUeAO9LT3ahBzSRXcEO6DdvAH9DzSg==", "dev": true, "requires": { "async-foreach": "0.1.3", @@ -7541,7 +6719,7 @@ "lodash.mergewith": "4.6.1", "meow": "3.7.0", "mkdirp": "0.5.1", - "nan": "2.8.0", + "nan": "2.10.0", "node-gyp": "3.6.2", "npmlog": "4.1.2", "request": "2.79.0", @@ -7569,16 +6747,6 @@ "supports-color": "2.0.0" } }, - "cross-spawn": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-3.0.1.tgz", - "integrity": "sha1-ElYDfsufDF9549bvE14wdwGEuYI=", - "dev": true, - "requires": { - "lru-cache": "4.1.1", - "which": "1.3.0" - } - }, "gaze": { "version": "1.1.2", "resolved": "https://registry.npmjs.org/gaze/-/gaze-1.1.2.tgz", @@ -7774,7 +6942,7 @@ "integrity": "sha1-kiXybsOihcIJyuZ8OxGmtKtxQKo=", "dev": true, "requires": { - "commander": "2.14.1", + "commander": "2.15.1", "npm-path": "2.0.4", "which": "1.3.0" } @@ -8074,12 +7242,6 @@ "integrity": "sha1-/VZamvjrRHO6abbtijQ1LLVS8SY=", "dev": true }, - "os-browserify": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/os-browserify/-/os-browserify-0.3.0.tgz", - "integrity": "sha1-hUNzx/XCMVkU/Jv8a9gjj92h7Cc=", - "dev": true - }, "os-homedir": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/os-homedir/-/os-homedir-1.0.2.tgz", @@ -8102,9 +7264,9 @@ "dev": true }, "osenv": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/osenv/-/osenv-0.1.4.tgz", - "integrity": "sha1-Qv5tWVPfBsgGS+bxdsPQWqqjRkQ=", + "version": "0.1.5", + "resolved": "https://registry.npmjs.org/osenv/-/osenv-0.1.5.tgz", + "integrity": "sha512-0CWcCECdMVc2Rw3U5w9ZjqX6ga6ubk1xDVKxtBQPK7wis/0F2r9T6k4ydGYhecl7YUBxBVxhL5oisPsNxAPe2g==", "dev": true, "requires": { "os-homedir": "1.0.2", @@ -8200,34 +7362,6 @@ } } }, - "pako": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/pako/-/pako-1.0.6.tgz", - "integrity": "sha512-lQe48YPsMJAig+yngZ87Lus+NF+3mtu7DVOBu6b/gHO1YpKwIj5AWjZ/TOS7i46HD/UixzWb1zeWDZfGZ3iYcg==", - "dev": true - }, - "parents": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/parents/-/parents-1.0.1.tgz", - "integrity": "sha1-/t1NK/GTp3dF/nHjcdc8MwfZx1E=", - "dev": true, - "requires": { - "path-platform": "0.11.15" - } - }, - "parse-asn1": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/parse-asn1/-/parse-asn1-5.1.0.tgz", - "integrity": "sha1-N8T5t+06tlx0gXtfJICTf7+XxxI=", - "dev": true, - "requires": { - "asn1.js": "4.9.2", - "browserify-aes": "1.1.1", - "create-hash": "1.1.3", - "evp_bytestokey": "1.0.3", - "pbkdf2": "3.0.14" - } - }, "parse-entities": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/parse-entities/-/parse-entities-1.1.1.tgz", @@ -8283,13 +7417,12 @@ } }, "parse-json": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-4.0.0.tgz", - "integrity": "sha1-vjX1Qlvh9/bHRxhPmKeIy5lHfuA=", + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-2.2.0.tgz", + "integrity": "sha1-9ID0BDTvgHQfhGkJn43qGPVaTck=", "dev": true, "requires": { - "error-ex": "1.3.1", - "json-parse-better-errors": "1.0.1" + "error-ex": "1.3.1" } }, "parse-passwd": { @@ -8338,12 +7471,6 @@ "util": "0.10.3" } }, - "path-browserify": { - "version": "0.0.0", - "resolved": "https://registry.npmjs.org/path-browserify/-/path-browserify-0.0.0.tgz", - "integrity": "sha1-oLhwcpquIUAFt9UDLsLLuw+0RRo=", - "dev": true - }, "path-exists": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-2.1.0.tgz", @@ -8377,12 +7504,6 @@ "integrity": "sha1-PBrfhx6pzWyUMbbqK9dKD/BVxME=", "dev": true }, - "path-platform": { - "version": "0.11.15", - "resolved": "https://registry.npmjs.org/path-platform/-/path-platform-0.11.15.tgz", - "integrity": "sha1-6GQhf3TDaFDwhSt43Hv31KVyG/I=", - "dev": true - }, "path-proxy": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/path-proxy/-/path-proxy-1.0.0.tgz", @@ -8418,12 +7539,14 @@ "dev": true }, "path-type": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/path-type/-/path-type-2.0.0.tgz", - "integrity": "sha1-8BLMuEFbcJb8LaoQVMPXI4lZTHM=", + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/path-type/-/path-type-1.1.0.tgz", + "integrity": "sha1-WcRPfuSR2nBNpBXaWkBwuk+P5EE=", "dev": true, "requires": { - "pify": "2.3.0" + "graceful-fs": "4.1.11", + "pify": "2.3.0", + "pinkie-promise": "2.0.1" }, "dependencies": { "pify": { @@ -8434,19 +7557,6 @@ } } }, - "pbkdf2": { - "version": "3.0.14", - "resolved": "https://registry.npmjs.org/pbkdf2/-/pbkdf2-3.0.14.tgz", - "integrity": "sha512-gjsZW9O34fm0R7PaLHRJmLLVfSoesxztjPjE9o6R+qtVJij90ltg1joIovN9GKrRW3t1PzhDDG3UMEMFfZ+1wA==", - "dev": true, - "requires": { - "create-hash": "1.1.3", - "create-hmac": "1.1.6", - "ripemd160": "2.0.1", - "safe-buffer": "5.1.1", - "sha.js": "2.4.10" - } - }, "pify": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz", @@ -8498,6 +7608,16 @@ "pify": "3.0.0", "strip-bom": "3.0.0" } + }, + "parse-json": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-4.0.0.tgz", + "integrity": "sha1-vjX1Qlvh9/bHRxhPmKeIy5lHfuA=", + "dev": true, + "requires": { + "error-ex": "1.3.1", + "json-parse-better-errors": "1.0.1" + } } } }, @@ -8836,9 +7956,9 @@ "dev": true }, "prop-types": { - "version": "15.6.0", - "resolved": "https://registry.npmjs.org/prop-types/-/prop-types-15.6.0.tgz", - "integrity": "sha1-zq8IMCL8RrSjX2nhPvda7Q1jmFY=", + "version": "15.6.1", + "resolved": "https://registry.npmjs.org/prop-types/-/prop-types-15.6.1.tgz", + "integrity": "sha512-4ec7bY1Y66LymSUOH/zARVYObB23AT2h8cf6e/O6ZALB/N0sqZFEx7rq6EYPX2MkOdKORuooI/H5k9TlR4q7kQ==", "dev": true, "requires": { "fbjs": "0.8.16", @@ -8888,19 +8008,6 @@ "integrity": "sha1-8FKijacOYYkX7wqKw0wa5aaChrM=", "dev": true }, - "public-encrypt": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/public-encrypt/-/public-encrypt-4.0.0.tgz", - "integrity": "sha1-OfaZ86RlYN1eusvKaTyvfGXBjMY=", - "dev": true, - "requires": { - "bn.js": "4.11.8", - "browserify-rsa": "4.0.1", - "create-hash": "1.1.3", - "parse-asn1": "5.1.0", - "randombytes": "2.0.6" - } - }, "punycode": { "version": "1.4.1", "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.4.1.tgz", @@ -8915,9 +8022,9 @@ "optional": true }, "qjobs": { - "version": "1.1.5", - "resolved": "https://registry.npmjs.org/qjobs/-/qjobs-1.1.5.tgz", - "integrity": "sha1-ZZ3p8s+NzCehSBJ28gU3cnI4LnM=", + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/qjobs/-/qjobs-1.2.0.tgz", + "integrity": "sha512-8YOJEHtxpySA3fFDyCRxA+UUV+fA+rTWnuWvylOK/NCjhY+b4ocCtmu8TtsWb+mYeU+GCHf/S66KZF/AsteKHg==", "dev": true }, "qs": { @@ -8926,18 +8033,6 @@ "integrity": "sha1-51vV9uJoEioqDgvaYwslUMFmUCw=", "dev": true }, - "querystring": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/querystring/-/querystring-0.2.0.tgz", - "integrity": "sha1-sgmEkgO7Jd+CDadW50cAWHhSFiA=", - "dev": true - }, - "querystring-es3": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/querystring-es3/-/querystring-es3-0.2.1.tgz", - "integrity": "sha1-nsYfeQSYdXB9aUFFlv2Qek1xHnM=", - "dev": true - }, "quick-lru": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/quick-lru/-/quick-lru-1.1.0.tgz", @@ -8965,25 +8060,6 @@ } } }, - "randombytes": { - "version": "2.0.6", - "resolved": "https://registry.npmjs.org/randombytes/-/randombytes-2.0.6.tgz", - "integrity": "sha512-CIQ5OFxf4Jou6uOKe9t1AOgqpeU5fd70A8NPdHSGeYXqXsPe6peOwI0cUl88RWZ6sP1vPMV3avd/R6cZ5/sP1A==", - "dev": true, - "requires": { - "safe-buffer": "5.1.1" - } - }, - "randomfill": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/randomfill/-/randomfill-1.0.3.tgz", - "integrity": "sha512-YL6GrhrWoic0Eq8rXVbMptH7dAxCs0J+mh5Y0euNekPPYaxEmdVGim6GdoxoRzKW2yJoU8tueifS7mYxvcFDEQ==", - "dev": true, - "requires": { - "randombytes": "2.0.6", - "safe-buffer": "5.1.1" - } - }, "range-parser": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/range-parser/-/range-parser-1.2.0.tgz", @@ -9000,47 +8076,53 @@ "http-errors": "1.6.2", "iconv-lite": "0.4.19", "unpipe": "1.0.0" - } - }, - "read-only-stream": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/read-only-stream/-/read-only-stream-2.0.0.tgz", - "integrity": "sha1-JyT9aoET1zdkrCiNQ4YnDB2/F/A=", - "dev": true, - "requires": { - "readable-stream": "2.3.3" + }, + "dependencies": { + "depd": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/depd/-/depd-1.1.1.tgz", + "integrity": "sha1-V4O04cRZ8G+lyif5kfPQbnoxA1k=", + "dev": true + }, + "http-errors": { + "version": "1.6.2", + "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.6.2.tgz", + "integrity": "sha1-CgAsyFcHGSp+eUbO7cERVfYOxzY=", + "dev": true, + "requires": { + "depd": "1.1.1", + "inherits": "2.0.3", + "setprototypeof": "1.0.3", + "statuses": "1.5.0" + } + }, + "setprototypeof": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.0.3.tgz", + "integrity": "sha1-ZlZ+NwQ+608E2RvWWMDL77VbjgQ=", + "dev": true + } } }, "read-pkg": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-2.0.0.tgz", - "integrity": "sha1-jvHAYjxqbbDcZxPEv6xGMysjaPg=", + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-1.1.0.tgz", + "integrity": "sha1-9f+qXs0pyzHAR0vKfXVra7KePyg=", "dev": true, "requires": { - "load-json-file": "2.0.0", + "load-json-file": "1.1.0", "normalize-package-data": "2.4.0", - "path-type": "2.0.0" + "path-type": "1.1.0" } }, "read-pkg-up": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-2.0.0.tgz", - "integrity": "sha1-a3KoBImE4MQeeVEP1en6mbO1Sb4=", + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-1.0.1.tgz", + "integrity": "sha1-nWPBMnbAZZGNV/ACpX9AobZD+wI=", "dev": true, "requires": { - "find-up": "2.1.0", - "read-pkg": "2.0.0" - }, - "dependencies": { - "find-up": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-2.1.0.tgz", - "integrity": "sha1-RdG35QbHF93UgndaK3eSCjwMV6c=", - "dev": true, - "requires": { - "locate-path": "2.0.0" - } - } + "find-up": "1.1.2", + "read-pkg": "1.1.0" } }, "readable-stream": { @@ -9114,14 +8196,14 @@ "optional": true, "requires": { "double-ended-queue": "2.1.0-0", - "redis-commands": "1.3.1", + "redis-commands": "1.3.5", "redis-parser": "2.6.0" } }, "redis-commands": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/redis-commands/-/redis-commands-1.3.1.tgz", - "integrity": "sha1-gdgm9F+pyLIBH0zXoP5ZfSQdRCs=", + "version": "1.3.5", + "resolved": "https://registry.npmjs.org/redis-commands/-/redis-commands-1.3.5.tgz", + "integrity": "sha512-foGF8u6MXGFF++1TZVC6icGXuMYPftKXt1FBT2vrfU9ZATNtZJ8duRC5d1lEfE8hyVe3jhelHGB91oB7I6qLsA==", "dev": true, "optional": true }, @@ -9257,9 +8339,9 @@ "dev": true, "requires": { "aws-sign2": "0.6.0", - "aws4": "1.6.0", + "aws4": "1.7.0", "caseless": "0.11.0", - "combined-stream": "1.0.5", + "combined-stream": "1.0.6", "extend": "3.0.1", "forever-agent": "0.6.1", "form-data": "2.1.4", @@ -9269,11 +8351,11 @@ "is-typedarray": "1.0.0", "isstream": "0.1.2", "json-stringify-safe": "5.0.1", - "mime-types": "2.1.17", + "mime-types": "2.1.18", "oauth-sign": "0.8.2", "qs": "6.3.2", "stringstream": "0.0.5", - "tough-cookie": "2.3.3", + "tough-cookie": "2.3.4", "tunnel-agent": "0.4.3", "uuid": "3.2.1" } @@ -9381,16 +8463,6 @@ "glob": "7.1.2" } }, - "ripemd160": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/ripemd160/-/ripemd160-2.0.1.tgz", - "integrity": "sha1-D0WEKVxTo2KK9+bXmsohzlfRxuc=", - "dev": true, - "requires": { - "hash-base": "2.0.2", - "inherits": "2.0.3" - } - }, "run-async": { "version": "2.3.0", "resolved": "https://registry.npmjs.org/run-async/-/run-async-2.3.0.tgz", @@ -9401,9 +8473,9 @@ } }, "run-parallel": { - "version": "1.1.6", - "resolved": "https://registry.npmjs.org/run-parallel/-/run-parallel-1.1.6.tgz", - "integrity": "sha1-KQA8miFj4B4tLfyQV18sbB1hoDk=", + "version": "1.1.9", + "resolved": "https://registry.npmjs.org/run-parallel/-/run-parallel-1.1.9.tgz", + "integrity": "sha512-DEqnSRTDw/Tc3FXf49zedI638Z9onwUotBMiUFKmrO2sdFKIbXamXGQ3Axd4qgphxKB4kw/qP1w5kTxnfU1B9Q==", "dev": true }, "rx-lite": { @@ -9422,9 +8494,9 @@ } }, "rxjs": { - "version": "5.5.6", - "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-5.5.6.tgz", - "integrity": "sha512-v4Q5HDC0FHAQ7zcBX7T2IL6O5ltl1a2GX4ENjPXg6SjDY69Cmx9v4113C99a4wGF16ClPv5Z8mghuYorVkg/kg==", + "version": "5.5.10", + "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-5.5.10.tgz", + "integrity": "sha512-SRjimIDUHJkon+2hFo7xnvNC4ZEHGzCRwh9P7nzX3zPkCGFEg/tuElrNR7L/rZMagnK2JeH2jQwPRpmyXyLB6A==", "dev": true, "requires": { "symbol-observable": "1.0.1" @@ -9462,75 +8534,6 @@ "integrity": "sha1-MvxLn82vhF/N9+c7uXysImHwqwo=", "dev": true }, - "load-json-file": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/load-json-file/-/load-json-file-1.1.0.tgz", - "integrity": "sha1-lWkFcI1YtLq0wiYbBPWfMcmTdMA=", - "dev": true, - "requires": { - "graceful-fs": "4.1.11", - "parse-json": "2.2.0", - "pify": "2.3.0", - "pinkie-promise": "2.0.1", - "strip-bom": "2.0.0" - } - }, - "parse-json": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-2.2.0.tgz", - "integrity": "sha1-9ID0BDTvgHQfhGkJn43qGPVaTck=", - "dev": true, - "requires": { - "error-ex": "1.3.1" - } - }, - "path-type": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/path-type/-/path-type-1.1.0.tgz", - "integrity": "sha1-WcRPfuSR2nBNpBXaWkBwuk+P5EE=", - "dev": true, - "requires": { - "graceful-fs": "4.1.11", - "pify": "2.3.0", - "pinkie-promise": "2.0.1" - } - }, - "pify": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", - "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=", - "dev": true - }, - "read-pkg": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-1.1.0.tgz", - "integrity": "sha1-9f+qXs0pyzHAR0vKfXVra7KePyg=", - "dev": true, - "requires": { - "load-json-file": "1.1.0", - "normalize-package-data": "2.4.0", - "path-type": "1.1.0" - } - }, - "read-pkg-up": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-1.0.1.tgz", - "integrity": "sha1-nWPBMnbAZZGNV/ACpX9AobZD+wI=", - "dev": true, - "requires": { - "find-up": "1.1.2", - "read-pkg": "1.1.0" - } - }, - "strip-bom": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-2.0.0.tgz", - "integrity": "sha1-YhmoVhZSBJHzV4i9vxRHqZx+aw4=", - "dev": true, - "requires": { - "is-utf8": "0.2.1" - } - }, "yargs": { "version": "7.1.0", "resolved": "https://registry.npmjs.org/yargs/-/yargs-7.1.0.tgz", @@ -9576,21 +8579,21 @@ } }, "semistandard": { - "version": "12.0.0", - "resolved": "https://registry.npmjs.org/semistandard/-/semistandard-12.0.0.tgz", - "integrity": "sha512-jykJZVDYWFZ7Hej9bYwynBa+A8yQFksm4zZoli4O+KkqMuQTdlBzkJvtFRER7xufSnB6+XnBS423tjI3Gtrg7Q==", + "version": "12.0.1", + "resolved": "https://registry.npmjs.org/semistandard/-/semistandard-12.0.1.tgz", + "integrity": "sha512-+FBRXBCi8GC1Nivc4ruw2KXER31bE1lrNyESo7prn2Sv9I9+H/Iqpt0NOtlV/GUxq34AgJwJViBUpA3/PUGqOw==", "dev": true, "requires": { - "eslint": "4.14.0", - "eslint-config-semistandard": "12.0.0", - "eslint-config-standard": "11.0.0-beta.0", - "eslint-config-standard-jsx": "4.0.2", + "eslint": "4.18.2", + "eslint-config-semistandard": "12.0.1", + "eslint-config-standard": "11.0.0", + "eslint-config-standard-jsx": "5.0.0", "eslint-plugin-import": "2.8.0", - "eslint-plugin-node": "5.2.1", + "eslint-plugin-node": "6.0.1", "eslint-plugin-promise": "3.6.0", - "eslint-plugin-react": "7.5.1", + "eslint-plugin-react": "7.6.1", "eslint-plugin-standard": "3.0.1", - "standard-engine": "7.2.0" + "standard-engine": "8.0.1" } }, "semver": { @@ -9645,31 +8648,11 @@ "dev": true }, "setprototypeof": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.0.3.tgz", - "integrity": "sha1-ZlZ+NwQ+608E2RvWWMDL77VbjgQ=", + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.1.0.tgz", + "integrity": "sha512-BvE/TwpZX4FXExxOxZyRGQQv651MSwmWKZGqvmPcRIjDqWub67kTKuIMx43cZZrS/cBBzwBcNDWoFxt2XEFIpQ==", "dev": true }, - "sha.js": { - "version": "2.4.10", - "resolved": "https://registry.npmjs.org/sha.js/-/sha.js-2.4.10.tgz", - "integrity": "sha512-vnwmrFDlOExK4Nm16J2KMWHLrp14lBrjxMxBJpu++EnsuBmpiYaM/MEs46Vxxm/4FvdP5yTwuCTO9it5FSjrqA==", - "dev": true, - "requires": { - "inherits": "2.0.3", - "safe-buffer": "5.1.1" - } - }, - "shasum": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/shasum/-/shasum-1.0.2.tgz", - "integrity": "sha1-5wEjENj0F/TetXEhUOVni4euVl8=", - "dev": true, - "requires": { - "json-stable-stringify": "0.0.1", - "sha.js": "2.4.10" - } - }, "shebang-command": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-1.2.0.tgz", @@ -9685,18 +8668,6 @@ "integrity": "sha1-2kL0l0DAtC2yypcoVxyxkMmO/qM=", "dev": true }, - "shell-quote": { - "version": "1.6.1", - "resolved": "https://registry.npmjs.org/shell-quote/-/shell-quote-1.6.1.tgz", - "integrity": "sha1-9HgZSczkAmlxJ0MOo7PFR29IF2c=", - "dev": true, - "requires": { - "array-filter": "0.0.1", - "array-map": "0.0.0", - "array-reduce": "0.0.0", - "jsonify": "0.0.0" - } - }, "sigmund": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/sigmund/-/sigmund-1.0.1.tgz", @@ -9878,6 +8849,14 @@ "dev": true, "requires": { "hoek": "2.16.3" + }, + "dependencies": { + "hoek": { + "version": "2.16.3", + "resolved": "https://registry.npmjs.org/hoek/-/hoek-2.16.3.tgz", + "integrity": "sha1-ILt0A9POo5jpHcRxCo/xuCdKJe0=", + "dev": true + } } }, "socket.io": { @@ -9887,10 +8866,10 @@ "dev": true, "requires": { "debug": "2.6.9", - "engine.io": "3.1.4", + "engine.io": "3.1.5", "socket.io-adapter": "1.1.1", "socket.io-client": "2.0.4", - "socket.io-parser": "3.1.2" + "socket.io-parser": "3.1.3" }, "dependencies": { "debug": { @@ -9921,13 +8900,13 @@ "component-bind": "1.0.0", "component-emitter": "1.2.1", "debug": "2.6.9", - "engine.io-client": "3.1.4", + "engine.io-client": "3.1.6", "has-cors": "1.1.0", "indexof": "0.0.1", "object-component": "0.0.3", "parseqs": "0.0.5", "parseuri": "0.0.5", - "socket.io-parser": "3.1.2", + "socket.io-parser": "3.1.3", "to-array": "0.1.4" }, "dependencies": { @@ -9943,26 +8922,17 @@ } }, "socket.io-parser": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/socket.io-parser/-/socket.io-parser-3.1.2.tgz", - "integrity": "sha1-28IoIVH8T6675Aru3Ady66YZ9/I=", + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/socket.io-parser/-/socket.io-parser-3.1.3.tgz", + "integrity": "sha512-g0a2HPqLguqAczs3dMECuA1RgoGFPyvDqcbaDEdCWY9g59kdUAz3YRmaJBNKXflrHNwB7Q12Gkf/0CZXfdHR7g==", "dev": true, "requires": { "component-emitter": "1.2.1", - "debug": "2.6.9", + "debug": "3.1.0", "has-binary2": "1.0.2", "isarray": "2.0.1" }, "dependencies": { - "debug": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", - "dev": true, - "requires": { - "ms": "2.0.0" - } - }, "isarray": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/isarray/-/isarray-2.0.1.tgz", @@ -10095,9 +9065,9 @@ "dev": true }, "sshpk": { - "version": "1.13.1", - "resolved": "https://registry.npmjs.org/sshpk/-/sshpk-1.13.1.tgz", - "integrity": "sha1-US322mKHFEMW3EwY/hzx2UBzm+M=", + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/sshpk/-/sshpk-1.14.1.tgz", + "integrity": "sha1-Ew9Zde3a2WPx1W+SuaxsUfqfg+s=", "dev": true, "requires": { "asn1": "0.2.3", @@ -10119,23 +9089,29 @@ } }, "staged-git-files": { - "version": "0.0.4", - "resolved": "https://registry.npmjs.org/staged-git-files/-/staged-git-files-0.0.4.tgz", - "integrity": "sha1-15fhtVHKemOd7AI33G60u5vhfTU=", + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/staged-git-files/-/staged-git-files-1.0.0.tgz", + "integrity": "sha1-zbhHg3wfzFLAioctSIPMCHdmioA=", "dev": true }, "standard-engine": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/standard-engine/-/standard-engine-7.2.0.tgz", - "integrity": "sha512-4MTVXRZQjEWeD7tNt8lK1Yh7VLXbmZ/hj34uF9tpSdtYNNPosms2TLCnw/7MUl/rW1Uhx80s7CL8LtBdUtgrtw==", + "version": "8.0.1", + "resolved": "https://registry.npmjs.org/standard-engine/-/standard-engine-8.0.1.tgz", + "integrity": "sha512-LA531C3+nljom/XRvdW/hGPXwmilRkaRkENhO3FAGF1Vtq/WtCXzgmnc5S6vUHHsgv534MRy02C1ikMwZXC+tw==", "dev": true, "requires": { "deglob": "2.1.0", - "get-stdin": "5.0.1", + "get-stdin": "6.0.0", "minimist": "1.2.0", "pkg-conf": "2.1.0" }, "dependencies": { + "get-stdin": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/get-stdin/-/get-stdin-6.0.0.tgz", + "integrity": "sha512-jp4tHawyV7+fkkSKyvjuLZswblUtz+SQKzSWnBbii16BuZksJlU1wuBYXY75r+duh/llF1ur6oNwi+2ZzjKZ7g==", + "dev": true + }, "minimist": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.0.tgz", @@ -10229,9 +9205,9 @@ } }, "statuses": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.4.0.tgz", - "integrity": "sha512-zhSCtt8v2NDrRlPQpCNtw/heZLtfUDqxBM1udqikb/Hbk52LK4nQSwr10u77iopCW5LsyHpuXS0GnEc48mLeew==", + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.5.0.tgz", + "integrity": "sha1-Fhx9rBd2Wf2YEfQ3cfqZOBR4Yow=", "dev": true }, "stdout-stream": { @@ -10243,66 +9219,12 @@ "readable-stream": "2.3.3" } }, - "stream-browserify": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/stream-browserify/-/stream-browserify-2.0.1.tgz", - "integrity": "sha1-ZiZu5fm9uZQKTkUUyvtDu3Hlyds=", - "dev": true, - "requires": { - "inherits": "2.0.3", - "readable-stream": "2.3.3" - } - }, - "stream-combiner2": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/stream-combiner2/-/stream-combiner2-1.1.1.tgz", - "integrity": "sha1-+02KFCDqNidk4hrUeAOXvry0HL4=", - "dev": true, - "requires": { - "duplexer2": "0.1.4", - "readable-stream": "2.3.3" - }, - "dependencies": { - "duplexer2": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/duplexer2/-/duplexer2-0.1.4.tgz", - "integrity": "sha1-ixLauHjA1p4+eJEFFmKjL8a93ME=", - "dev": true, - "requires": { - "readable-stream": "2.3.3" - } - } - } - }, "stream-consume": { "version": "0.1.0", "resolved": "https://registry.npmjs.org/stream-consume/-/stream-consume-0.1.0.tgz", "integrity": "sha1-pB6tGm1ggc63n2WwYZAbbY89HQ8=", "dev": true }, - "stream-http": { - "version": "2.8.0", - "resolved": "https://registry.npmjs.org/stream-http/-/stream-http-2.8.0.tgz", - "integrity": "sha512-sZOFxI/5xw058XIRHl4dU3dZ+TTOIGJR78Dvo0oEAejIt4ou27k+3ne1zYmCV+v7UucbxIFQuOgnkTVHh8YPnw==", - "dev": true, - "requires": { - "builtin-status-codes": "3.0.0", - "inherits": "2.0.3", - "readable-stream": "2.3.3", - "to-arraybuffer": "1.0.1", - "xtend": "4.0.1" - } - }, - "stream-splicer": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/stream-splicer/-/stream-splicer-2.0.0.tgz", - "integrity": "sha1-G2O+Q4oTPktnHMGTUZdgAXWRDYM=", - "dev": true, - "requires": { - "inherits": "2.0.3", - "readable-stream": "2.3.3" - } - }, "stream-to-observable": { "version": "0.2.0", "resolved": "https://registry.npmjs.org/stream-to-observable/-/stream-to-observable-0.2.0.tgz", @@ -10396,6 +9318,12 @@ "integrity": "sha1-IzTBjpx1n3vdVv3vfprj1YjmjtM=", "dev": true }, + "strip-bom-string": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/strip-bom-string/-/strip-bom-string-1.0.0.tgz", + "integrity": "sha1-5SEekiQ2n7uB1jOi8ABE3IztrZI=", + "dev": true + }, "strip-eof": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/strip-eof/-/strip-eof-1.0.0.tgz", @@ -10765,15 +9693,15 @@ } }, "stylelint-config-sass-guidelines": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/stylelint-config-sass-guidelines/-/stylelint-config-sass-guidelines-4.1.0.tgz", - "integrity": "sha512-6WVjDElATbX5CUSaSlcWTOsJzeb9Ik+KwxCkFa01Mjh7ahjdIsWuAMehc8Kpw7E14pYMkljuJyfvCT9mKeNVAA==", + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/stylelint-config-sass-guidelines/-/stylelint-config-sass-guidelines-4.2.0.tgz", + "integrity": "sha512-wbcz+ghAQMZG2vd5SLNkz+yEt49l0EEzfVPyOUHOsWC48vJpvCanGkZcBQhJcDjOq/f27h7JFlN+wFqJz0AxYA==", "dev": true }, "stylelint-order": { - "version": "0.8.0", - "resolved": "https://registry.npmjs.org/stylelint-order/-/stylelint-order-0.8.0.tgz", - "integrity": "sha512-XwJO7rIAt/hnBJjOsDgEwNSeqw+5jE22da4pVKaePbojM9bGwhOoAWV7Q2BL8caOg81IlTesmYCEf8s0+2Cc5g==", + "version": "0.8.1", + "resolved": "https://registry.npmjs.org/stylelint-order/-/stylelint-order-0.8.1.tgz", + "integrity": "sha512-8mp1P2wnI9XShYXVXDsxVigE2eXnc0C2O4ktbwUvTBwjCP4xZskIbUVxp1evSG3OK4R7hXVNl/2BnJCZkrcc/w==", "dev": true, "requires": { "lodash": "4.17.5", @@ -10782,9 +9710,9 @@ } }, "stylelint-scss": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/stylelint-scss/-/stylelint-scss-2.3.0.tgz", - "integrity": "sha512-gYLw1jma/BUZ9eQ3hsrL/7bddQN2BJ13oSp0A0kOqje4hBrSCrUjf7rmpnK8taRWoU3KASwMo4apWg+YopDK5Q==", + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/stylelint-scss/-/stylelint-scss-2.5.0.tgz", + "integrity": "sha512-+joZpza5nQxAyGwzRMancFEl0EH9+1Vy88YzBghRMS0wHulzDPE9fEkBi6ZOlz+I3tYIBI4x9NbqO5/LkbeE3Q==", "dev": true, "requires": { "lodash": "4.17.5", @@ -10794,23 +9722,6 @@ "postcss-value-parser": "3.3.0" } }, - "subarg": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/subarg/-/subarg-1.0.0.tgz", - "integrity": "sha1-9izxdYHplrSPyWVpn1TAauJouNI=", - "dev": true, - "requires": { - "minimist": "1.2.0" - }, - "dependencies": { - "minimist": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.0.tgz", - "integrity": "sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ=", - "dev": true - } - } - }, "sugarss": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/sugarss/-/sugarss-1.0.1.tgz", @@ -10841,15 +9752,6 @@ "integrity": "sha1-lag9smGG1q9+ehjb2XYKL4bQj0A=", "dev": true }, - "syntax-error": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/syntax-error/-/syntax-error-1.4.0.tgz", - "integrity": "sha512-YPPlu67mdnHGTup2A8ff7BC2Pjq0e0Yp/IyTFN03zWO0RcK07uLcbi7C2KpGR2FvWbaB0+bfE27a+sBKebSo7w==", - "dev": true, - "requires": { - "acorn-node": "1.3.0" - } - }, "table": { "version": "4.0.2", "resolved": "https://registry.npmjs.org/table/-/table-4.0.2.tgz", @@ -10961,13 +9863,14 @@ "integrity": "sha1-dkpaEa9QVhkhsTPztE5hhofg9cM=", "dev": true }, - "timers-browserify": { - "version": "1.4.2", - "resolved": "https://registry.npmjs.org/timers-browserify/-/timers-browserify-1.4.2.tgz", - "integrity": "sha1-ycWLV1voQHN1y14kYtrO50NZ9B0=", + "timers-ext": { + "version": "0.1.5", + "resolved": "https://registry.npmjs.org/timers-ext/-/timers-ext-0.1.5.tgz", + "integrity": "sha512-tsEStd7kmACHENhsUPaxb8Jf8/+GZZxyNFQbZD07HQOyooOa6At1rQqjffgvg7n+dxscQa9cjjMdWhJtsP2sxg==", "dev": true, "requires": { - "process": "0.11.10" + "es5-ext": "0.10.42", + "next-tick": "1.0.0" } }, "timespan": { @@ -10992,12 +9895,6 @@ "integrity": "sha1-F+bBH3PdTz10zaek/zI46a2b+JA=", "dev": true }, - "to-arraybuffer": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/to-arraybuffer/-/to-arraybuffer-1.0.1.tgz", - "integrity": "sha1-fSKbH8xjfkZsoIEYCDanqr/4P0M=", - "dev": true - }, "to-object-path": { "version": "0.3.0", "resolved": "https://registry.npmjs.org/to-object-path/-/to-object-path-0.3.0.tgz", @@ -11108,9 +10005,9 @@ } }, "tough-cookie": { - "version": "2.3.3", - "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-2.3.3.tgz", - "integrity": "sha1-C2GKVWW23qkL80JdBNVe3EdadWE=", + "version": "2.3.4", + "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-2.3.4.tgz", + "integrity": "sha512-TZ6TTfI5NtZnuyy/Kecv+CnoROnyXn2DN97LontgQpCwsX2XyLYCC0ENhYkehSOwAp8rTQKc/NUIF7BkQ5rKLA==", "dev": true, "requires": { "punycode": "1.4.1" @@ -11171,12 +10068,6 @@ "dev": true, "optional": true }, - "tty-browserify": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/tty-browserify/-/tty-browserify-0.0.1.tgz", - "integrity": "sha512-C3TaO7K81YvjCgQH9Q1S3R3P3BtN3RIM8n+OvX4il1K1zgE8ZhI0op7kClgkxtutIE8hQrcrHBXvIheqKUUCxw==", - "dev": true - }, "tunnel-agent": { "version": "0.4.3", "resolved": "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.4.3.tgz", @@ -11200,13 +10091,13 @@ } }, "type-is": { - "version": "1.6.15", - "resolved": "https://registry.npmjs.org/type-is/-/type-is-1.6.15.tgz", - "integrity": "sha1-yrEPtJCeRByChC6v4a1kbIGARBA=", + "version": "1.6.16", + "resolved": "https://registry.npmjs.org/type-is/-/type-is-1.6.16.tgz", + "integrity": "sha512-HRkVv/5qY2G6I8iab9cI7v1bOIdhm94dVjQCPFElW9W+3GeDOSHmy2EBYe4VTApuzolPcmgFTN3ftVJRKR2J9Q==", "dev": true, "requires": { "media-typer": "0.3.0", - "mime-types": "2.1.17" + "mime-types": "2.1.18" } }, "typedarray": { @@ -11221,18 +10112,30 @@ "integrity": "sha512-uRdSdu1oA1rncCQL7sCj8vSyZkgtL7faaw9Tc9rZ3mGgraQ7+Pdx7w5mnOSF3gw9ZNG6oc+KXfkon3bKuROm0g==", "dev": true }, + "uglify-js": { + "version": "3.3.22", + "resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-3.3.22.tgz", + "integrity": "sha512-tqw96rL6/BG+7LM5VItdhDjTQmL5zG/I0b2RqWytlgeHe2eydZHuBHdA9vuGpCDhH/ZskNGcqDhivoR2xt8RIw==", + "dev": true, + "requires": { + "commander": "2.15.1", + "source-map": "0.6.1" + }, + "dependencies": { + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true + } + } + }, "ultron": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/ultron/-/ultron-1.1.1.tgz", "integrity": "sha512-UIEXBNeYmKptWH6z8ZnqTeS8fV74zG0/eRU9VGkpzz+LIJNs8W/zM/L+7ctCkRrgbNnnR0xxw4bKOr0cW0N0Og==", "dev": true }, - "umd": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/umd/-/umd-3.0.1.tgz", - "integrity": "sha1-iuVW4RAR9jwllnCKiDclnwGz1g4=", - "dev": true - }, "unc-path-regex": { "version": "0.1.2", "resolved": "https://registry.npmjs.org/unc-path-regex/-/unc-path-regex-0.1.2.tgz", @@ -11408,24 +10311,6 @@ "integrity": "sha1-2pN/emLiH+wf0Y1Js1wpNQZ6bHI=", "dev": true }, - "url": { - "version": "0.11.0", - "resolved": "https://registry.npmjs.org/url/-/url-0.11.0.tgz", - "integrity": "sha1-ODjpfPxgUh63PFJajlW/3Z4uKPE=", - "dev": true, - "requires": { - "punycode": "1.3.2", - "querystring": "0.2.0" - }, - "dependencies": { - "punycode": { - "version": "1.3.2", - "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.3.2.tgz", - "integrity": "sha1-llOgNvt8HuQjQvIyXM7v6jkmxI0=", - "dev": true - } - } - }, "use": { "version": "2.0.2", "resolved": "https://registry.npmjs.org/use/-/use-2.0.2.tgz", @@ -11512,13 +10397,21 @@ "dev": true }, "useragent": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/useragent/-/useragent-2.3.0.tgz", - "integrity": "sha512-4AoH4pxuSvHCjqLO04sU6U/uE65BYza8l/KKBS0b0hnUPWi+cQ2BpeTEwejCSx9SPV5/U03nniDTrWx5NrmKdw==", + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/useragent/-/useragent-2.2.1.tgz", + "integrity": "sha1-z1k+9PLRdYdei7ZY6pLhik/QbY4=", "dev": true, "requires": { - "lru-cache": "4.1.1", + "lru-cache": "2.2.4", "tmp": "0.0.33" + }, + "dependencies": { + "lru-cache": { + "version": "2.2.4", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-2.2.4.tgz", + "integrity": "sha1-bGWGGb7PFAMdDQtZSxYELOTcBj0=", + "dev": true + } } }, "util": { @@ -11557,9 +10450,9 @@ "dev": true }, "uws": { - "version": "0.14.5", - "resolved": "https://registry.npmjs.org/uws/-/uws-0.14.5.tgz", - "integrity": "sha1-Z6rzPEaypYel9mZtAPdpEyjxSdw=", + "version": "9.14.0", + "resolved": "https://registry.npmjs.org/uws/-/uws-9.14.0.tgz", + "integrity": "sha512-HNMztPP5A1sKuVFmdZ6BPVpBQd5bUjNC8EFMFiICK+oho/OQsAJy5hnIx4btMHiOk8j04f/DbIlqnEZ9d72dqg==", "dev": true, "optional": true }, @@ -11743,15 +10636,6 @@ "source-map": "0.5.7" } }, - "vm-browserify": { - "version": "0.0.4", - "resolved": "https://registry.npmjs.org/vm-browserify/-/vm-browserify-0.0.4.tgz", - "integrity": "sha1-XX6kW7755Kb/ZflUOOCofDV9WnM=", - "dev": true, - "requires": { - "indexof": "0.0.1" - } - }, "void-elements": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/void-elements/-/void-elements-2.0.1.tgz", @@ -11759,9 +10643,9 @@ "dev": true }, "whatwg-fetch": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/whatwg-fetch/-/whatwg-fetch-2.0.3.tgz", - "integrity": "sha1-nITsLc9oGH/wC8ZOEnS0QhduHIQ=", + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/whatwg-fetch/-/whatwg-fetch-2.0.4.tgz", + "integrity": "sha512-dcQ1GWpOD/eEQ97k66aiEVpNnapVj90/+R+SXTPYGHpYBBypfKJEQjLrvMZ7YXbKm21gXd4NcuxUTjiv1YtLng==", "dev": true }, "when": { @@ -11887,12 +10771,12 @@ "dev": true }, "yargs": { - "version": "11.0.0", - "resolved": "https://registry.npmjs.org/yargs/-/yargs-11.0.0.tgz", - "integrity": "sha512-Rjp+lMYQOWtgqojx1dEWorjCofi1YN7AoFvYV7b1gx/7dAAeuI4kN5SZiEvr0ZmsZTOpDRcCqrpI10L31tFkBw==", + "version": "11.1.0", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-11.1.0.tgz", + "integrity": "sha512-NwW69J42EsCSanF8kyn5upxvjp5ds+t3+udGBeTbFnERA+lF541DDpMawzo4z6W/QrzNM18D+BPMiOBibnFV5A==", "dev": true, "requires": { - "cliui": "4.0.0", + "cliui": "4.1.0", "decamelize": "1.2.0", "find-up": "2.1.0", "get-caller-file": "1.0.2", @@ -11913,9 +10797,9 @@ "dev": true }, "cliui": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/cliui/-/cliui-4.0.0.tgz", - "integrity": "sha512-nY3W5Gu2racvdDk//ELReY+dHjb9PlIcVDFXP72nVIhq2Gy3LuVXYwJoPVudwQnv1shtohpgkdCKT2YaKY0CKw==", + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-4.1.0.tgz", + "integrity": "sha512-4FG+RSG9DL7uEwRUZXZn3SS34DiDPfzP0VOiEwtUWlE+AR2EIg+hSyvrIgUUfhdgR/UkAeW2QHgeP+hWrXs7jQ==", "dev": true, "requires": { "string-width": "2.1.1", @@ -11923,6 +10807,17 @@ "wrap-ansi": "2.1.0" } }, + "cross-spawn": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-5.1.0.tgz", + "integrity": "sha1-6L0O/uWPz/b4+UUQoKVUu/ojVEk=", + "dev": true, + "requires": { + "lru-cache": "4.1.1", + "shebang-command": "1.2.0", + "which": "1.3.0" + } + }, "execa": { "version": "0.7.0", "resolved": "https://registry.npmjs.org/execa/-/execa-0.7.0.tgz", diff --git a/package.json b/package.json index e297420c..d00a4193 100644 --- a/package.json +++ b/package.json @@ -45,26 +45,29 @@ "civicrm-cv": "^0.1.2", "gulp": "^3.9.1", "gulp-clean": "^0.4.0", + "gulp-concat": "^2.6.1", "gulp-rename": "^1.2.2", "gulp-replace": "^0.6.1", - "gulp-sass": "^3.1.0", + "gulp-sass": "^3.2.1", "gulp-sass-bulk-import": "^1.0.1", + "gulp-sourcemaps": "^2.6.4", + "gulp-uglify": "^3.0.0", "husky": "^0.14.3", "jasmine-core": "^2.9.1", - "karma": "^2.0.0", + "karma": "^2.0.2", "karma-chrome-launcher": "^2.2.0", "karma-jasmine": "^1.1.1", "karma-junit-reporter": "^1.2.0", "karma-ng-html2js-preprocessor": "^1.0.0", "karma-requirejs": "^1.1.0", - "lint-staged": "^6.1.0", + "lint-staged": "^6.1.1", "path": "^0.12.7", "requirejs": "^2.3.5", - "semistandard": "^12.0.0", + "semistandard": "^12.0.1", "stylelint": "^8.4.0", - "stylelint-config-sass-guidelines": "^4.1.0", - "stylelint-order": "^0.8.0", - "stylelint-scss": "^2.3.0", - "yargs": "^11.0.0" + "stylelint-config-sass-guidelines": "^4.2.0", + "stylelint-order": "^0.8.1", + "stylelint-scss": "^2.5.0", + "yargs": "^11.1.0" } } diff --git a/uk.co.compucorp.civicrm.tasksassignments/CRM/Tasksassignments/Page/Options.php b/uk.co.compucorp.civicrm.tasksassignments/CRM/Tasksassignments/Page/Options.php index 244fb382..b56c33de 100755 --- a/uk.co.compucorp.civicrm.tasksassignments/CRM/Tasksassignments/Page/Options.php +++ b/uk.co.compucorp.civicrm.tasksassignments/CRM/Tasksassignments/Page/Options.php @@ -3,11 +3,25 @@ require_once 'CRM/Core/Page.php'; class CRM_Tasksassignments_Page_Options extends CRM_Admin_Page_Options { - + function run() { parent::run(); } - + + /** + * Browse all options. + */ + public function browse() { + parent::browse(); + + $optionValues = $this->get_template_vars('rows'); + $optionValues = array_filter($optionValues, function ($item) { + return $item['is_reserved'] == 0; + }); + + $this->assign('rows', $optionValues); + } + /** * Use the form name to create the tpl file name * @@ -20,7 +34,7 @@ function getTemplateFileName() { 'CRM_Admin_Page_Options' ) . '.tpl'; } - + function editForm() { //return self::$_gName ? 'CRM_Admin_Form_Options' : 'CRM_Admin_Form_OptionGroup'; if (self::$_gName === 'activity_type') { diff --git a/uk.co.compucorp.civicrm.tasksassignments/CRM/Tasksassignments/Upgrader.php b/uk.co.compucorp.civicrm.tasksassignments/CRM/Tasksassignments/Upgrader.php index 42c2ee11..53411d74 100755 --- a/uk.co.compucorp.civicrm.tasksassignments/CRM/Tasksassignments/Upgrader.php +++ b/uk.co.compucorp.civicrm.tasksassignments/CRM/Tasksassignments/Upgrader.php @@ -1,13 +1,13 @@ executeCustomDataFile('xml/customdata.xml'); $this->executeSqlFile('sql/install.sql'); $revisions = $this->getRevisions(); + foreach ($revisions as $revision) { $methodName = 'upgrade_' . $revision; if (is_callable(array($this, $methodName))) { @@ -16,23 +16,23 @@ public function install() { } $this->setComponentStatuses(array( - 'CiviTask' => true, - 'CiviDocument' => true, + 'CiviTask' => TRUE, + 'CiviDocument' => TRUE, )); } public function enable() { $this->setComponentStatuses(array( - 'CiviTask' => true, - 'CiviDocument' => true, + 'CiviTask' => TRUE, + 'CiviDocument' => TRUE, )); return TRUE; } public function disable() { $this->setComponentStatuses(array( - 'CiviTask' => false, - 'CiviDocument' => false, + 'CiviTask' => FALSE, + 'CiviDocument' => FALSE, )); } @@ -42,26 +42,30 @@ public function disable() { * * Note: This API has only been tested with CiviCRM 4.4. * - * @param array $components keys are component names (e.g. "CiviMail"); values are booleans + * @param array $components keys are component names (e.g. "CiviMail"); values are bools */ public function setComponentStatuses($components) { $getResult = civicrm_api3('setting', 'getsingle', array( 'domain_id' => CRM_Core_Config::domainID(), 'return' => array('enable_components'), )); + if (!is_array($getResult['enable_components'])) { throw new CRM_Core_Exception("Failed to determine component statuses"); } // Merge $components with existing list $enableComponents = $getResult['enable_components']; + foreach ($components as $component => $status) { if ($status) { $enableComponents = array_merge($enableComponents, array($component)); - } else { + } + else { $enableComponents = array_diff($enableComponents, array($component)); } } + civicrm_api3('setting', 'create', array( 'domain_id' => CRM_Core_Config::domainID(), 'enable_components' => array_unique($enableComponents), @@ -70,8 +74,8 @@ public function setComponentStatuses($components) { } public function upgrade_0001() { - $optionGroupID = CRM_Core_DAO::getFieldValue('CRM_Core_DAO_OptionGroup', 'task_status', 'id', 'name'); + if (!$optionGroupID) { $params = array( 'name' => 'task_status', @@ -79,12 +83,15 @@ public function upgrade_0001() { 'is_active' => 1, 'is_reserved' => 1, ); + civicrm_api3('OptionGroup', 'create', $params); + $optionsValue = array( 1 => 'Task sample status 1', 2 => 'Task sample status 2', 3 => 'Task sample status 3', ); + foreach ($optionsValue as $key => $value) { $opValueParams = array( 'option_group_id' => 'task_status', @@ -92,6 +99,7 @@ public function upgrade_0001() { 'label' => $value, 'value' => $key, ); + civicrm_api3('OptionValue', 'create', $opValueParams); } } @@ -106,20 +114,20 @@ public function upgrade_0002() { $weight = CRM_Core_DAO::getFieldValue('CRM_Core_DAO_Navigation', 'Contacts', 'weight', 'name'); //$contactNavId = CRM_Core_DAO::getFieldValue('CRM_Core_DAO_Navigation', 'Contacts', 'id', 'name'); $importJobNavigation = new CRM_Core_DAO_Navigation(); - $params = array ( + $params = array( 'domain_id' => CRM_Core_Config::domainID(), 'label' => ts('Tasks and Assignments'), 'name' => 'tasksassignments', 'url' => 'civicrm/tasksassignments/dashboard#/tasks', - 'parent_id' => null, - 'weight' => $weight+1, + 'parent_id' => NULL, + 'weight' => $weight + 1, 'permission' => 'access Tasks and Assignments', 'separator' => 1, - 'is_active' => 1 + 'is_active' => 1, ); + $importJobNavigation->copyValues($params); $importJobNavigation->save(); - CRM_Core_BAO_Navigation::resetNavigation(); return TRUE; @@ -129,18 +137,21 @@ public function upgrade_0003() { // Remove custom 'task_status' option group / values and group four of default 'activity_status' values as 'resolved'. $taskStatuses = array('Completed', 'Cancelled', 'Not Required', 'No_show'); - $optionGroupID = (int)CRM_Core_DAO::getFieldValue('CRM_Core_DAO_OptionGroup', 'task_status', 'id', 'name'); + $optionGroupID = (int) CRM_Core_DAO::getFieldValue('CRM_Core_DAO_OptionGroup', 'task_status', 'id', 'name'); + if ($optionGroupID) { CRM_Core_DAO::executeQuery("DELETE FROM `civicrm_option_value` WHERE option_group_id = {$optionGroupID}"); CRM_Core_DAO::executeQuery("DELETE FROM `civicrm_option_group` WHERE id = {$optionGroupID}"); } - $optionGroupID = (int)CRM_Core_DAO::getFieldValue('CRM_Core_DAO_OptionGroup', 'activity_status', 'id', 'name'); + $optionGroupID = (int) CRM_Core_DAO::getFieldValue('CRM_Core_DAO_OptionGroup', 'activity_status', 'id', 'name'); + if ($optionGroupID) { $result = civicrm_api3('OptionValue', 'get', array( 'sequential' => 1, 'option_group_id' => $optionGroupID, )); + foreach ($result['values'] as $value) { if (in_array($value['name'], $taskStatuses)) { civicrm_api3('OptionValue', 'create', array( @@ -155,12 +166,14 @@ public function upgrade_0003() { return TRUE; } - /* + /** * Install Documents statuses + * + * @return bool */ public function upgrade_0006() { - $optionGroupID = CRM_Core_DAO::getFieldValue('CRM_Core_DAO_OptionGroup', 'document_status', 'id', 'name'); + if (!$optionGroupID) { $params = array( 'name' => 'document_status', @@ -168,13 +181,16 @@ public function upgrade_0006() { 'is_active' => 1, 'is_reserved' => 1, ); + civicrm_api3('OptionGroup', 'create', $params); + $optionsValue = array( 1 => 'awaiting upload', 2 => 'awaiting approval', 3 => 'approved', 4 => 'rejected', ); + foreach ($optionsValue as $key => $value) { $opValueParams = array( 'option_group_id' => 'document_status', @@ -182,6 +198,7 @@ public function upgrade_0006() { 'label' => $value, 'value' => $key, ); + civicrm_api3('OptionValue', 'create', $opValueParams); } } @@ -189,12 +206,14 @@ public function upgrade_0006() { return TRUE; } - /* + /** * Install Tasks Assignments custom settings. + * + * @return bool */ public function upgrade_0007() { - $optionGroupID = CRM_Core_DAO::getFieldValue('CRM_Core_DAO_OptionGroup', 'ta_settings', 'id', 'name'); + if (!$optionGroupID) { $params = array( 'name' => 'ta_settings', @@ -202,7 +221,9 @@ public function upgrade_0007() { 'is_active' => 1, 'is_reserved' => 1, ); + civicrm_api3('OptionGroup', 'create', $params); + $optionsValue = array( 'documents_tab' => array( 'label' => 'Show or hide the Documents tab', @@ -225,6 +246,7 @@ public function upgrade_0007() { 'value' => '', ), ); + foreach ($optionsValue as $key => $value) { $opValueParams = array( 'option_group_id' => 'ta_settings', @@ -232,6 +254,7 @@ public function upgrade_0007() { 'label' => $value['label'], 'value' => $value['value'], ); + civicrm_api3('OptionValue', 'create', $opValueParams); } } @@ -239,15 +262,13 @@ public function upgrade_0007() { return TRUE; } - public function upgrade_0008() - { + public function upgrade_0008() { $this->executeCustomDataFile('xml/activity_custom_fields.xml'); return TRUE; } - public function upgrade_0009() - { + public function upgrade_0009() { $this->executeCustomDataFile('xml/probation.xml'); return TRUE; @@ -264,11 +285,12 @@ public function upgrade_0009() return TRUE; }*/ - /* + /** * Install Dummy Document Types (Activity Types) + * + * @return bool */ - public function upgrade_1011() - { + public function upgrade_1011() { $this->_installActivityTypes('CiviDocument', array( 'Joining Document 1', 'Exiting document 1', @@ -277,21 +299,22 @@ public function upgrade_1011() return TRUE; } - /* + /** * Set up Daily Reminder job + * + * @return bool */ - public function upgrade_1012() - { + public function upgrade_1012() { $dao = new CRM_Core_DAO_Job(); $dao->api_entity = 'task'; $dao->api_action = 'senddailyreminder'; $dao->find(TRUE); - if (!$dao->id) - { + + if (!$dao->id) { $dao = new CRM_Core_DAO_Job(); $dao->domain_id = CRM_Core_Config::domainID(); $dao->run_frequency = 'Daily'; - $dao->parameters = null; + $dao->parameters = NULL; $dao->name = 'Tasks and Assignments Daily Reminder'; $dao->description = 'Tasks and Assignments Daily Reminder'; $dao->api_entity = 'task'; @@ -303,16 +326,17 @@ public function upgrade_1012() return TRUE; } - /* + /** * Add Settings page to Tasks and Assignments top menu + * + * @return bool */ - public function upgrade_1013() - { + public function upgrade_1013() { $taNavigation = new CRM_Core_DAO_Navigation(); $taNavigation->name = 'tasksassignments'; - $taNavigation->find(true); - if ($taNavigation->id) - { + $taNavigation->find(TRUE); + + if ($taNavigation->id) { $taNavigation->url = ''; $taNavigation->save(); @@ -326,14 +350,14 @@ public function upgrade_1013() 'label' => ts('Settings'), 'name' => 'ta_settings', 'url' => 'civicrm/tasksassignments/settings', - ) + ), ); - foreach ($submenu as $key => $item) - { + foreach ($submenu as $key => $item) { $item['parent_id'] = $taNavigation->id; $item['weight'] = $key; $item['is_active'] = 1; + CRM_Core_BAO_Navigation::add($item); } @@ -343,15 +367,16 @@ public function upgrade_1013() return TRUE; } - /* + /** * Add Settings page to Administer top menu + * + * @return bool */ - public function upgrade_1014() - { + public function upgrade_1014() { // Add Tasks and Assignments to the Administer menu $administerNavId = CRM_Core_DAO::getFieldValue('CRM_Core_DAO_Navigation', 'Administer', 'id', 'name'); - if ($administerNavId) - { + + if ($administerNavId) { CRM_Core_DAO::executeQuery("DELETE FROM `civicrm_navigation` WHERE name = 'tasksassignments_administer' and parent_id = %1", array( 1 => array($administerNavId, 'Integer'), @@ -359,23 +384,24 @@ public function upgrade_1014() ); $taAdminNavigation = new CRM_Core_DAO_Navigation(); - $params = array ( + $params = array( 'domain_id' => CRM_Core_Config::domainID(), 'label' => ts('Tasks and Assignments'), 'name' => 'tasksassignments_administer', - 'url' => null, + 'url' => NULL, 'parent_id' => $administerNavId, 'separator' => 1, - 'is_active' => 1 + 'is_active' => 1, ); + $taAdminNavigation->copyValues($params); $taAdminNavigation->save(); $taSettings = new CRM_Core_DAO_Navigation(); $taSettings->name = 'ta_settings'; - $taSettings->find(true); - if ($taSettings->id) - { + $taSettings->find(TRUE); + + if ($taSettings->id) { $taSettings->parent_id = $taAdminNavigation->id; $taSettings->save(); } @@ -386,11 +412,10 @@ public function upgrade_1014() return TRUE; } - public function upgrade_1015() - { + public function upgrade_1015() { $setting = civicrm_api3('OptionValue', 'get', array( 'option_group_id' => 'ta_settings', - 'name' => 'is_task_dashboard_default' + 'name' => 'is_task_dashboard_default', )); if (empty($setting['id'])) { @@ -398,7 +423,7 @@ public function upgrade_1015() 'option_group_id' => 'ta_settings', 'name' => 'is_task_dashboard_default', 'label' => 'Is task dashboard the default page', - 'value' => '1' + 'value' => '1', ); civicrm_api3('OptionValue', 'create', $opValueParams); } @@ -406,11 +431,10 @@ public function upgrade_1015() return TRUE; } - public function upgrade_1016() - { + public function upgrade_1016() { CRM_Tasksassignments_DashboardSwitcher::switchToTasksAndAssignments(); - return true; + return TRUE; } /** @@ -421,29 +445,29 @@ public function upgrade_1016() public function upgrade_1018() { $taNavigation = new CRM_Core_BAO_Navigation(); $taNavigation->name = 'tasksassignments'; - $taNavigation->find(true); + $taNavigation->find(TRUE); - if($taNavigation->id && !$taNavigation->permission) { + if ($taNavigation->id && !$taNavigation->permission) { $navigation = new CRM_Core_BAO_Navigation(); $foo = array( 'id' => $taNavigation->id, 'permission' => 'access Tasks and Assignments', 'separator' => 1, - 'is_active' => 1 + 'is_active' => 1, ); $params = $navigation->add($foo); - return true; + return TRUE; } - return false; + return FALSE; } /** * Disables the Case menu items if Tasks&Assignments is enabled * - * @return {boolean} + * @return bool */ public function upgrade_1019() { $isEnabled = CRM_Core_DAO::getFieldValue('CRM_Core_DAO_Extension', 'uk.co.compucorp.civicrm.tasksassignments', 'is_active', 'full_name'); @@ -453,18 +477,19 @@ public function upgrade_1019() { CRM_Core_BAO_Navigation::resetNavigation(); } - return true; + return TRUE; } - /* + /** * Install Tasks Assignments 'days_to_create_a_document_clone' setting field. * It keeps a number of days to create a document clone before original * expiry date. * - * @return {boolean} + * @return bool */ public function upgrade_1020() { $optionGroupID = CRM_Core_DAO::getFieldValue('CRM_Core_DAO_OptionGroup', 'ta_settings', 'id', 'name'); + if (!$optionGroupID) { civicrm_api3('OptionGroup', 'create', array( 'name' => 'ta_settings', @@ -473,11 +498,13 @@ public function upgrade_1020() { 'is_reserved' => 1, )); } + $optionValue = civicrm_api3('OptionValue', 'get', array( 'sequential' => 1, 'option_group_id' => 'ta_settings', 'name' => "days_to_create_a_document_clone", )); + if (empty($optionValue['id'])) { civicrm_api3('OptionValue', 'create', array( 'option_group_id' => 'ta_settings', @@ -486,16 +513,20 @@ public function upgrade_1020() { 'value' => 0, )); } + return TRUE; } /** * Uninstalls the dummy document types in old CiviHR installs * And adds real, default values + * + * @return bool */ public function upgrade_1021() { $this->_uninstallActivityTypes('CiviDocument', array( - 'Joining Document 1', 'Exiting Document 1' + 'Joining Document 1', + 'Exiting Document 1', )); $this->_installActivityTypes('CiviDocument', array( @@ -504,30 +535,29 @@ public function upgrade_1021() { 'Government Photo ID', 'Driving licence', 'Identity card', - 'Certificate of sponsorship (COS)' + 'Certificate of sponsorship (COS)', )); return TRUE; } - /* + /** * Set up scheduled job which clones documents on pre-set days before * their original expiry date. * * @see PCHR-1365 */ - public function upgrade_1022() - { + public function upgrade_1022() { $dao = new CRM_Core_DAO_Job(); $dao->api_entity = 'document'; $dao->api_action = 'clonedocuments'; $dao->find(TRUE); - if (!$dao->id) - { + + if (!$dao->id) { $dao = new CRM_Core_DAO_Job(); $dao->domain_id = CRM_Core_Config::domainID(); $dao->run_frequency = 'Daily'; - $dao->parameters = null; + $dao->parameters = NULL; $dao->name = 'Clone Documents'; $dao->description = 'Clone any approved document within pre-set days before its original expiry date'; $dao->api_entity = 'document'; @@ -542,18 +572,17 @@ public function upgrade_1022() /** * Set up Documents Notification scheduled job. */ - public function upgrade_1023() - { + public function upgrade_1023() { $dao = new CRM_Core_DAO_Job(); $dao->api_entity = 'document'; $dao->api_action = 'senddocumentsnotification'; $dao->find(TRUE); - if (!$dao->id) - { + + if (!$dao->id) { $dao = new CRM_Core_DAO_Job(); $dao->domain_id = CRM_Core_Config::domainID(); $dao->run_frequency = 'Daily'; - $dao->parameters = null; + $dao->parameters = NULL; $dao->name = 'Documents Notification'; $dao->description = 'Tasks and Assignments Documents Notification'; $dao->api_entity = 'document'; @@ -565,8 +594,7 @@ public function upgrade_1023() return TRUE; } - public function upgrade_1024() - { + public function upgrade_1024() { $this->executeCustomDataFile('xml/activity_custom_fields.xml'); return TRUE; @@ -593,6 +621,8 @@ public function upgrade_1026() { /** * Remove the old Dashboard submenu item + * + * @return bool */ public function upgrade_1027() { $taDashboard = new CRM_Core_DAO_Navigation(); @@ -611,6 +641,8 @@ public function upgrade_1027() { /** * Add new submenu links + * + * @return bool */ public function upgrade_1028() { $taNavigation = new CRM_Core_DAO_Navigation(); @@ -659,6 +691,8 @@ public function upgrade_1028() { /** * Rename "Tasks and Assignments" menu items to just "Tasks" + * + * @return bool */ public function upgrade_1029() { $default = []; @@ -682,6 +716,8 @@ public function upgrade_1029() { /** * Rename "Settings" menu item to "Tasks Settings" + * + * @return bool */ public function upgrade_1030() { $default = []; @@ -705,13 +741,125 @@ public function upgrade_1031() { $params = [ 'name' => 'tasksassignments', 'api.Navigation.create' => ['id' => '$value.id', 'icon' => 'crm-i fa-list-ul'], - 'parent_id' => ['IS NULL' => true], + 'parent_id' => ['IS NULL' => TRUE], ]; civicrm_api3('Navigation', 'get', $params); return TRUE; } + /** + * Upgrade CustomGroup, setting Probation and Activity_Custom_Fields to is_reserved Yes + * + * @return bool + */ + public function upgrade_1032() { + $result = civicrm_api3('CustomGroup', 'get', [ + 'sequential' => 1, + 'return' => ['id'], + 'name' => ['IN' => ['Probation', 'Activity_Custom_Fields']], + ]); + + foreach ($result['values'] as $value) { + civicrm_api3('CustomGroup', 'create', [ + 'id' => $value['id'], + 'is_reserved' => 1, + ]); + } + + return TRUE; + } + + /** + * Update permissions and set the weight for the "Tasks" menu item. + * + * @return bool + */ + public function upgrade_1033() { + $permission = 'administer CiviCase'; + $itemsToChange = ['tasksassignments_administer', 'ta_settings']; + + // get item IDs + $params = ['name' => ['IN' => $itemsToChange]]; + $itemsToChange = civicrm_api3('Navigation', 'get', $params); + $itemsToChange = array_column($itemsToChange['values'], 'name', 'id'); + $tasksId = array_search('tasksassignments_administer', $itemsToChange); + $taSettingsId = array_search('ta_settings', $itemsToChange); + + // Update permissions for settings item + $params = ['permission' => $permission, 'id' => $taSettingsId]; + civicrm_api3('Navigation', 'create', $params); + + // Update parent weight + permission + $params = ['id' => $tasksId, 'weight' => -97, 'permission' => $permission]; + civicrm_api3('Navigation', 'create', $params); + + return TRUE; + } + + /** + * Renames the case status Ongoing and Resolved to In Progress and Completed. + * + * @return bool + */ + public function upgrade_1034() { + $this->_relabelCaseStatus('Ongoing', 'In Progress'); + $this->_relabelCaseStatus('Resolved', 'Completed'); + + return TRUE; + } + + /** + * Deletes activity types that are not needed by T&W. + * + * @return bool + */ + public function upgrade_1035() { + $this->_uninstallAllComponentActivities([ + 'CiviCampaign', + 'CiviContribute', + 'CiviEvent', + 'CiviMember', + 'CiviPledge', + ]); + + $this->_uninstallActivitiesByName([ + 'Downloaded Invoice', + 'Emailed Invoice', + 'Inbound SMS', + 'SMS', + 'SMS delivery', + 'Tell a Friend', + ]); + + $this->_uninstallActivityTypes('CiviCase', [ + 'Background Check', + 'Background_Check', + 'Collate and print goals', + 'Collection of Appraisal forms', + 'Collection of appraisal paperwork', + 'Conduct appraisal', + 'Follow up on progress', + 'ID badge', + 'Interview Prospect', + 'Issue confirmation/warning letter', + 'Issue extension letter', + 'Prepare and email schedule', + 'Prepare formats', + 'Print formats', + 'Revoke access to databases', + ]); + + $this->_uninstallActivityTypes('CiviDocument', [ + 'Joining Document 2', + 'Joining Document 3', + 'Exiting document 2', + 'Exiting document 3', + ]); + + return TRUE; + } + public function uninstall() { CRM_Core_DAO::executeQuery("DELETE FROM `civicrm_navigation` WHERE name IN ('tasksassignments', 'ta_dashboard_tasks', 'ta_dashboard_documents', 'ta_dashboard_calendar', 'ta_dashboard_keydates', 'tasksassignments_administer', 'ta_settings')"); CRM_Core_BAO_Navigation::resetNavigation(); @@ -727,7 +875,7 @@ public function uninstall() { * @return array */ private function _fetchActivityTypeParams($component) { - $componentId = null; + $componentId = NULL; $componentQuery = 'SELECT id FROM civicrm_component WHERE name = %1'; $componentParams = array(1 => array($component, 'String')); $componentResult = CRM_Core_DAO::executeQuery($componentQuery, $componentParams); @@ -754,7 +902,7 @@ private function _fetchActivityTypeParams($component) { return array( 'component_id' => $componentId, - 'option_group_id' => $optionGroupID + 'option_group_id' => $optionGroupID, ); } @@ -772,25 +920,82 @@ private function _installActivityTypes($component, array $types) { } } + /** + * Removes activity types by using their names as reference. + * + * @param array $activityNames + */ + private function _uninstallActivitiesByName(array $activityNames) { + $result = civicrm_api3('OptionValue', 'get', [ + 'sequential' => 1, + 'option_group_id' => 'activity_type', + 'name' => ['IN' => $activityNames], + 'return' => 'id' + ]); + + foreach ($result['values'] as $activity) { + civicrm_api3('OptionValue', 'delete', ['id' => $activity['id']]); + } + } + /** * Uninstall (if they exist) the given activity types for the given component * - * @param string $component - * @param array $types + * @param string $componentName + * @param array $types */ - private function _uninstallActivityTypes($component, array $types) { - $params = $this->_fetchActivityTypeParams('CiviDocument'); - $typeIds = array_map(function ($type) { - return $type['id']; - }, civicrm_api3('OptionValue', 'get', array( + private function _uninstallActivityTypes($componentName, array $types) { + $params = $this->_fetchActivityTypeParams($componentName); + $result = civicrm_api3('OptionValue', 'get', [ 'component_id' => $params['component_id'], 'option_group_id' => $params['option_group_id'], - 'name' => array('IN' => $types), + 'name' => ['IN' => $types], + 'return' => 'id', + ]); + + foreach ($result['values'] as $activity) { + civicrm_api3('OptionValue', 'delete', ['id' => $activity['id']]); + } + } + + /** + * Removes activity types by using their parent component as reference. + * + * @param array $componentNames + */ + private function _uninstallAllComponentActivities(array $componentNames) { + $result = civicrm_api3('OptionValue', 'get', [ + 'option_group_id' => 'activity_type', + 'component_id' => ['IN' => $componentNames], 'return' => 'id' - ))['values']); + ]); + + foreach ($result['values'] as $activity) { + civicrm_api3('OptionValue', 'delete', ['id' => $activity['id']]); + } + } - foreach ($typeIds as $id) { - civicrm_api3('OptionValue', 'delete', array('id' => $id)); + /** + * Renames the label for a case status + * + * @param string $fromLabel + * @param string $toLabel + */ + private function _relabelCaseStatus($fromLabel, $toLabel) { + $result = civicrm_api3('OptionValue', 'get', [ + 'option_group_id.name' => 'case_status', + 'label' => $fromLabel, + 'is_reserved' => 1, + 'sequential' => 1, + 'options' => [ 'limit' => 1 ], + ]); + + if ($result['count']) { + civicrm_api3('OptionValue', 'create', [ + 'id' => $result['values'][0]['id'], + 'label' => $toLabel + ]); } } + } diff --git a/uk.co.compucorp.civicrm.tasksassignments/gulpfile.js b/uk.co.compucorp.civicrm.tasksassignments/gulpfile.js index 9ee6c686..c07e3743 100644 --- a/uk.co.compucorp.civicrm.tasksassignments/gulpfile.js +++ b/uk.co.compucorp.civicrm.tasksassignments/gulpfile.js @@ -1,5 +1,6 @@ var gulp = require('gulp'); var clean = require('gulp-clean'); +var concat = require('gulp-concat'); var rename = require('gulp-rename'); var replace = require('gulp-replace'); var karma = require('karma'); @@ -7,6 +8,8 @@ var exec = require('child_process').exec; var path = require('path'); var fs = require('fs'); var argv = require('yargs').argv; +var uglify = require('gulp-uglify'); +var sourcemaps = require('gulp-sourcemaps'); gulp.task('sass', function (done) { // The app style relies on compass's gems, so we need to rely on it @@ -17,6 +20,20 @@ gulp.task('sass', function (done) { }); }); +gulp.task('crm-js-bundle', function () { + return gulp.src([ + 'js/src/crm-tasks-workflows/modules/*.js', + 'js/src/crm-tasks-workflows/controllers/*.js', + 'js/src/crm-tasks-workflows/decorators/*.js', + 'js/src/crm-tasks-workflows.js' + ]) + .pipe(sourcemaps.init()) + .pipe(concat('crm-tasks-workflows.min.js')) + .pipe(uglify()) + .pipe(sourcemaps.write()) + .pipe(gulp.dest('js/dist/')); +}); + gulp.task('requirejs-bundle', function (done) { exec('r.js -o js/build.js', function (err, stdout, stderr) { err && err.code && console.log(stdout); @@ -26,11 +43,30 @@ gulp.task('requirejs-bundle', function (done) { gulp.task('watch', function () { gulp.watch('scss/**/*.scss', ['sass']); - gulp.watch('js/src/**/*.js', ['requirejs-bundle']).on('change', function (file) { + gulp.watch([ + 'js/src/tasks-assignments.js', + 'js/src/tasks-assignments.js/**/*.js' + ], ['requirejs-bundle']).on('change', function (file) { try { test.for(file.path); } catch (ex) { test.all(); } }); - gulp.watch(['js/test/**/*.js', '!js/test/mocks/**/*.js', '!js/test/test-main.js']).on('change', function (file) { - test.single(file.path); + gulp.watch([ + 'js/src/crm-tasks-workflows.js', + 'js/src/crm-tasks-workflows/**/*.js' + ], ['crm-js-bundle']).on('change', function (file) { + try { test.for(file.path); } catch (ex) { test.all(); } + }); + gulp.watch([ + 'js/test/crm-tasks-workflows/**/*.js', + '!js/test/crm-tasks-workflows/mocks/**/*.js' + ]).on('change', function (file) { + test.single('crm-tasks-workflows', file.path); + }); + gulp.watch([ + 'js/test/tasks-assignments/**/*.js', + '!js/test/tasks-assignments/mocks/**/*.js', + '!js/test/tasks-assignments/test-main.js' + ]).on('change', function (file) { + test.single('tasks-assignments', file.path); }); }); @@ -38,7 +74,7 @@ gulp.task('test', function (done) { test.all(); }); -gulp.task('default', ['requirejs-bundle', 'sass', 'test', 'watch']); +gulp.task('default', ['crm-js-bundle', 'requirejs-bundle', 'sass', 'test', 'watch']); var test = (function () { /** @@ -51,7 +87,7 @@ var test = (function () { var reporters = argv.reporters ? argv.reporters.split(',') : ['progress']; new karma.Server({ - configFile: path.join(__dirname, '/js/', configFile), + configFile: path.join(__dirname, '/js/test/', configFile), reporters: reporters, singleRun: true }, function () { @@ -65,7 +101,8 @@ var test = (function () { * Runs all the tests */ all: function () { - runServer('karma.conf.js'); + runServer('crm-tasks-workflows/karma.conf.js'); + runServer('tasks-assignments/karma.conf.js'); }, /** @@ -80,8 +117,8 @@ var test = (function () { for: function (srcFile) { var srcFileNoExt = path.basename(srcFile, path.extname(srcFile)); var testFile = srcFile - .replace('src/tasks-assignments/', 'test/') - .replace(srcFileNoExt + '.js', srcFileNoExt + '.spec.js'); + .replace('src/', 'test/') + .replace(srcFileNoExt + '.js', srcFileNoExt + '.spec.js'); try { var stats = fs.statSync(testFile); @@ -98,20 +135,21 @@ var test = (function () { * It passes to the karma server a temporary config file * which is deleted once the test has been run * + * @param {string} module - The module name * @param {string} testFile - The full path of a test file */ - single: function (testFile) { + single: function (module, testFile) { var configFile = 'karma.' + path.basename(testFile, path.extname(testFile)) + '.conf.temp.js'; - gulp.src(path.join(__dirname, '/js/karma.conf.js')) - .pipe(replace('*.spec.js', path.basename(testFile))) - .pipe(rename(configFile)) - .pipe(gulp.dest(path.join(__dirname, '/js'))) - .on('end', function () { - runServer(configFile, function () { - gulp.src(path.join(__dirname, '/js/', configFile), { read: false }).pipe(clean()); + gulp.src(path.join(__dirname, '/js/test/', module, '/karma.conf.js')) + .pipe(replace('*.spec.js', path.basename(testFile))) + .pipe(rename(configFile)) + .pipe(gulp.dest(path.join(__dirname, '/js/test'))) + .on('end', function () { + runServer(configFile, function () { + gulp.src(path.join(__dirname, '/js/test', configFile), { read: false }).pipe(clean()); + }); }); - }); } }; })(); diff --git a/uk.co.compucorp.civicrm.tasksassignments/info.xml b/uk.co.compucorp.civicrm.tasksassignments/info.xml index 29bb2cdb..9da02d24 100755 --- a/uk.co.compucorp.civicrm.tasksassignments/info.xml +++ b/uk.co.compucorp.civicrm.tasksassignments/info.xml @@ -8,8 +8,8 @@ Compucorp Ltd info@compucorp.co.uk - 2018-03-26 - 1.7.5 + 2018-04-30 + 1.7.6 stable 4.7 diff --git a/uk.co.compucorp.civicrm.tasksassignments/js/dist/crm-tasks-workflows.min.js b/uk.co.compucorp.civicrm.tasksassignments/js/dist/crm-tasks-workflows.min.js new file mode 100644 index 00000000..254456ad --- /dev/null +++ b/uk.co.compucorp.civicrm.tasksassignments/js/dist/crm-tasks-workflows.min.js @@ -0,0 +1,2 @@ +!function(t){"use strict";angular.module("crm-tasks-workflows.controllers",[])}(),function(t){"use strict";angular.module("crm-tasks-workflows.core",["crmCaseType"])}(),function(t){"use strict";angular.module("crm-tasks-workflows.decorators",[])}(),function(t){"use strict";function o(t,o,e,r,n,s,c){var a,i;o.debug("Controller: CaseTypeExtendedController"),n.actTypes={values:(a=s.values.map(function(t){return t.label=t.label+" (Task)",t}),i=c.values.map(function(t){return t.label=t.label+" (Document)",t}),a.concat(i))},t("CaseTypeCtrl",{$scope:e,crmApi:r,apiCalls:n});var l=e.addActivity;e.addActivity=function(t,o){l(t,o),t.activityTypes.forEach(function(t){t.name===o&&delete t.reference_activity})}}angular.module("crm-tasks-workflows.controllers").controller("CaseTypeExtendedController",o),o.$inject=["$controller","$log","$scope","crmApi","apiCalls","activityOptionsTask","activityOptionsDocument"]}(),function(t){"use strict";function e(t){var o;function e(o){function t(t){return t("OptionValue","get",{option_group_id:"activity_type",component_id:o,sequential:1,options:{sort:"name",limit:0}})}return t.$inject=["crmApi"],t}return(o=t.routes["/caseType/:id"]).controller="CaseTypeExtendedController",o.resolve.activityOptionsTask=e("CiviTask"),o.resolve.activityOptionsDocument=e("CiviDocument"),t}angular.module("crm-tasks-workflows.decorators").config(["$provide","$routeProvider",function(t,o){t.decorator("$route",e)}]),e.$inject=["$delegate"]}(),function(t){"use strict";angular.module("crm-tasks-workflows",["crm-tasks-workflows.core","crm-tasks-workflows.controllers","crm-tasks-workflows.decorators"])}(); +//# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImNybS10YXNrcy13b3JrZmxvd3MuY29udHJvbGxlcnMuanMiLCJjcm0tdGFza3Mtd29ya2Zsb3dzLmNvcmUuanMiLCJjcm0tdGFza3Mtd29ya2Zsb3dzLmRlY29yYXRvci5qcyIsImNhc2V0eXBlLmV4dGVuZGVkLmNvbnRyb2xsZXIuanMiLCJyb3V0ZS5kZWNvcmF0b3IuanMiLCJjcm0tdGFza3Mtd29ya2Zsb3dzLmpzIl0sIm5hbWVzIjpbImFuZ3VsYXIiLCJtb2R1bGUiLCJDYXNlVHlwZUV4dGVuZGVkQ29udHJvbGxlciIsIiRjb250cm9sbGVyIiwiJGxvZyIsIiRzY29wZSIsImNybUFwaSIsImFwaUNhbGxzIiwiYWN0aXZpdHlPcHRpb25zVGFzayIsImFjdGl2aXR5T3B0aW9uc0RvY3VtZW50IiwidGFza09wdGlvbnMiLCJkb2N1bWVudE9wdGlvbnMiLCJkZWJ1ZyIsImFjdFR5cGVzIiwidmFsdWVzIiwibWFwIiwidHlwZSIsImxhYmVsIiwiZG9jdW1lbnQiLCJjb25jYXQiLCJvcmlnaW5hbEFkZEFjdGl2aXR5IiwiYWRkQWN0aXZpdHkiLCJhY3Rpdml0eVNldCIsImFjdGl2aXR5VHlwZSIsImFjdGl2aXR5VHlwZXMiLCJmb3JFYWNoIiwiYWN0aXZpdHkiLCJuYW1lIiwicmVmZXJlbmNlX2FjdGl2aXR5IiwiY29udHJvbGxlciIsIiRpbmplY3QiLCJSb3V0ZURlY29yYXRvciIsIiRkZWxlZ2F0ZSIsImNhc2VUeXBlRWRpdFJvdXRlIiwiZ2V0UmVzb2x2ZXJGb3JBY3Rpdml0eVR5cGVDb21wb25lbnQiLCJjb21wb25lbnROYW1lIiwiYWN0aXZpdHlPcHRpb25zUmVzb2x2ZXIiLCJvcHRpb25fZ3JvdXBfaWQiLCJjb21wb25lbnRfaWQiLCJzZXF1ZW50aWFsIiwib3B0aW9ucyIsInNvcnQiLCJsaW1pdCIsInJvdXRlcyIsInJlc29sdmUiLCJjb25maWciLCIkcHJvdmlkZSIsIiRyb3V0ZVByb3ZpZGVyIiwiZGVjb3JhdG9yIl0sIm1hcHBpbmdzIjoiQ0FFQSxTQUFBQSxHQUNBLGFBR0FBLFFBREFDLE9BQUEsa0NBQUEsSUFIQSxHQ0FBLFNBQUFELEdBQ0EsYUFLQUEsUUFIQUMsT0FBQSwyQkFBQSxDQUNBLGdCQUpBLEdDQUEsU0FBQUQsR0FDQSxhQUdBQSxRQURBQyxPQUFBLGlDQUFBLElBSEEsR0NBQSxTQUFBRCxHQUNBLGFBU0EsU0FBQUUsRUFBQUMsRUFBQUMsRUFBQUMsRUFBQUMsRUFBQUMsRUFBQUMsRUFBQUMsR0E2QkEsSUFXQUMsRUFNQUMsRUE3Q0FQLEVBQUFRLE1BQUEsMENBNkJBTCxFQUFBTSxTQUFBLENBQUFDLFFBVUFKLEVBQUFGLEVBQUFNLE9BQUFDLElBQUEsU0FBQUMsR0FHQSxPQUZBQSxFQUFBQyxNQUFBRCxFQUFBQyxNQUFBLFVBRUFELElBR0FMLEVBQUFGLEVBQUFLLE9BQUFDLElBQUEsU0FBQUcsR0FHQSxPQUZBQSxFQUFBRCxNQUFBQyxFQUFBRCxNQUFBLGNBRUFDLElBR0FSLEVBQUFTLE9BQUFSLEtBckJBUixFQUFBLGVBQUEsQ0FBQUUsT0FBQUEsRUFBQUMsT0FBQUEsRUFBQUMsU0FBQUEsSUEzQkEsSUFBQWEsRUFBQWYsRUFBQWdCLFlBRUFoQixFQUFBZ0IsWUFRQSxTQUFBQyxFQUFBQyxHQUVBSCxFQUFBRSxFQUFBQyxHQUdBRCxFQUFBRSxjQUFBQyxRQUFBLFNBQUFDLEdBQ0FBLEVBQUFDLE9BQUFKLFVBQ0FHLEVBQUFFLHNCQWtDQTVCLFFBOURBQyxPQUFBLG1DQUNBNEIsV0FBQSw2QkFBQTNCLEdBRUFBLEVBQUE0QixRQUFBLENBQ0EsY0FBQSxPQUFBLFNBQUEsU0FBQSxXQUFBLHNCQUFBLDJCQVBBLEdDQUEsU0FBQTlCLEdBQ0EsYUFTQSxTQUFBK0IsRUFBQUMsR0FDQSxJQUNBQyxFQU9BLFNBQUFDLEVBQUFDLEdBR0EsU0FBQUMsRUFBQTlCLEdBQ0EsT0FBQUEsRUFBQSxjQUFBLE1BQUEsQ0FDQStCLGdCQUFBLGdCQUNBQyxhQUFBSCxFQUNBSSxXQUFBLEVBQ0FDLFFBQUEsQ0FBQUMsS0FBQSxPQUFBQyxNQUFBLEtBSUEsT0FYQU4sRUFBQU4sUUFBQSxDQUFBLFVBV0FNLEVBR0EsT0F0QkFILEVBQUFELEVBQUFXLE9BQUEsa0JBRUFkLFdBQUEsNkJBQ0FJLEVBQUFXLFFBQUFwQyxvQkFBQTBCLEVBQUEsWUFDQUQsRUFBQVcsUUFBQW5DLHdCQUFBeUIsRUFBQSxnQkFrQkFGLEVBRUFoQyxRQWpDQUMsT0FBQSxrQ0FDQTRDLE9BQUEsQ0FBQSxXQUFBLGlCQUFBLFNBQUFDLEVBQUFDLEdBQ0FELEVBQUFFLFVBQUEsU0FBQWpCLE1BR0FBLEVBQUFELFFBQUEsQ0FBQSxhQVJBLEdDQUEsU0FBQTlCLEdBQ0EsYUFPQUEsUUFMQUMsT0FBQSxzQkFBQSxDQUNBLDJCQUNBLGtDQUNBLG1DQU5BIiwiZmlsZSI6ImNybS10YXNrcy13b3JrZmxvd3MubWluLmpzIiwic291cmNlc0NvbnRlbnQiOlsiLyogZ2xvYmFsIGFuZ3VsYXIgKi9cblxuKGZ1bmN0aW9uIChhbmd1bGFyKSB7XG4gICd1c2Ugc3RyaWN0JztcblxuICBhbmd1bGFyLm1vZHVsZSgnY3JtLXRhc2tzLXdvcmtmbG93cy5jb250cm9sbGVycycsIFtdKTtcbn0pKGFuZ3VsYXIpO1xuIiwiLyogZ2xvYmFsIGFuZ3VsYXIgKi9cblxuKGZ1bmN0aW9uIChhbmd1bGFyKSB7XG4gICd1c2Ugc3RyaWN0JztcblxuICBhbmd1bGFyLm1vZHVsZSgnY3JtLXRhc2tzLXdvcmtmbG93cy5jb3JlJywgW1xuICAgICdjcm1DYXNlVHlwZSdcbiAgXSk7XG59KShhbmd1bGFyKTtcbiIsIi8qIGdsb2JhbCBhbmd1bGFyICovXG5cbihmdW5jdGlvbiAoYW5ndWxhcikge1xuICAndXNlIHN0cmljdCc7XG5cbiAgYW5ndWxhci5tb2R1bGUoJ2NybS10YXNrcy13b3JrZmxvd3MuZGVjb3JhdG9ycycsIFtdKTtcbn0pKGFuZ3VsYXIpO1xuIiwiLyogZ2xvYmFsIGFuZ3VsYXIgKi9cblxuKGZ1bmN0aW9uIChhbmd1bGFyKSB7XG4gICd1c2Ugc3RyaWN0JztcblxuICBhbmd1bGFyLm1vZHVsZSgnY3JtLXRhc2tzLXdvcmtmbG93cy5jb250cm9sbGVycycpXG4gICAgLmNvbnRyb2xsZXIoJ0Nhc2VUeXBlRXh0ZW5kZWRDb250cm9sbGVyJywgQ2FzZVR5cGVFeHRlbmRlZENvbnRyb2xsZXIpO1xuXG4gIENhc2VUeXBlRXh0ZW5kZWRDb250cm9sbGVyLiRpbmplY3QgPSBbXG4gICAgJyRjb250cm9sbGVyJywgJyRsb2cnLCAnJHNjb3BlJywgJ2NybUFwaScsICdhcGlDYWxscycsICdhY3Rpdml0eU9wdGlvbnNUYXNrJywgJ2FjdGl2aXR5T3B0aW9uc0RvY3VtZW50J1xuICBdO1xuXG4gIGZ1bmN0aW9uIENhc2VUeXBlRXh0ZW5kZWRDb250cm9sbGVyICgkY29udHJvbGxlciwgJGxvZywgJHNjb3BlLCBjcm1BcGksIGFwaUNhbGxzLCBhY3Rpdml0eU9wdGlvbnNUYXNrLCBhY3Rpdml0eU9wdGlvbnNEb2N1bWVudCkge1xuICAgICRsb2cuZGVidWcoJ0NvbnRyb2xsZXI6IENhc2VUeXBlRXh0ZW5kZWRDb250cm9sbGVyJyk7XG5cbiAgICBpbml0UGFyZW50Q29udHJvbGxlcigpO1xuICAgIHZhciBvcmlnaW5hbEFkZEFjdGl2aXR5ID0gJHNjb3BlLmFkZEFjdGl2aXR5O1xuXG4gICAgJHNjb3BlLmFkZEFjdGl2aXR5ID0gYWRkQWN0aXZpdHk7XG5cbiAgICAvKipcbiAgICAgKiBBZGQgbmV3IGFjdGl2aXR5XG4gICAgICpcbiAgICAgKiBAcGFyYW0ge0FycmF5fSBhY3Rpdml0eVNldFxuICAgICAqIEBwYXJhbSB7U3RyaW5nfSBhY3Rpdml0eVR5cGVcbiAgICAgKi9cbiAgICBmdW5jdGlvbiBhZGRBY3Rpdml0eSAoYWN0aXZpdHlTZXQsIGFjdGl2aXR5VHlwZSkge1xuICAgICAgLy8gY2FsbCBwYXJlbnRcbiAgICAgIG9yaWdpbmFsQWRkQWN0aXZpdHkoYWN0aXZpdHlTZXQsIGFjdGl2aXR5VHlwZSk7XG5cbiAgICAgIC8vIHJlbW92ZSByZWZlcmVuY2VfYWN0aXZpdHkgcHJvcGVydHkgZnJvbSBuZXdseSBhZGRlZCBhY3Rpdml0eVxuICAgICAgYWN0aXZpdHlTZXQuYWN0aXZpdHlUeXBlcy5mb3JFYWNoKGZ1bmN0aW9uIChhY3Rpdml0eSkge1xuICAgICAgICBpZiAoYWN0aXZpdHkubmFtZSA9PT0gYWN0aXZpdHlUeXBlKSB7XG4gICAgICAgICAgZGVsZXRlIGFjdGl2aXR5LnJlZmVyZW5jZV9hY3Rpdml0eTtcbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogSW5pdGlhbGlzZSB0aGUgcGFyZW50IGNvbnRyb2xsZXJcbiAgICAgKi9cbiAgICBmdW5jdGlvbiBpbml0UGFyZW50Q29udHJvbGxlciAoKSB7XG4gICAgICBhcGlDYWxscy5hY3RUeXBlcyA9IHsgdmFsdWVzOiBwcmVwYXJlQWN0aXZpdHlUeXBlcygpIH07XG4gICAgICAkY29udHJvbGxlcignQ2FzZVR5cGVDdHJsJywgeyRzY29wZTogJHNjb3BlLCBjcm1BcGk6IGNybUFwaSwgYXBpQ2FsbHM6IGFwaUNhbGxzfSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogR2V0IGxpc3Qgb2YgYWN0aXZpdHkgdHlwZXMgd2l0aCBjb21wb25lbnQgdHlwZSBhZGRlZCB0byBsYWJlbFxuICAgICAqXG4gICAgICogQHJldHVybiB7QXJyYXl9XG4gICAgICovXG4gICAgZnVuY3Rpb24gcHJlcGFyZUFjdGl2aXR5VHlwZXMgKCkge1xuICAgICAgdmFyIHRhc2tPcHRpb25zID0gYWN0aXZpdHlPcHRpb25zVGFzay52YWx1ZXMubWFwKGZ1bmN0aW9uICh0eXBlKSB7XG4gICAgICAgIHR5cGUubGFiZWwgPSAodHlwZS5sYWJlbCArICcgKFRhc2spJyk7XG5cbiAgICAgICAgcmV0dXJuIHR5cGU7XG4gICAgICB9KTtcblxuICAgICAgdmFyIGRvY3VtZW50T3B0aW9ucyA9IGFjdGl2aXR5T3B0aW9uc0RvY3VtZW50LnZhbHVlcy5tYXAoZnVuY3Rpb24gKGRvY3VtZW50KSB7XG4gICAgICAgIGRvY3VtZW50LmxhYmVsID0gKGRvY3VtZW50LmxhYmVsICsgJyAoRG9jdW1lbnQpJyk7XG5cbiAgICAgICAgcmV0dXJuIGRvY3VtZW50O1xuICAgICAgfSk7XG5cbiAgICAgIHJldHVybiB0YXNrT3B0aW9ucy5jb25jYXQoZG9jdW1lbnRPcHRpb25zKTtcbiAgICB9XG4gIH1cbn0pKGFuZ3VsYXIpO1xuIiwiLyogZ2xvYmFsIGFuZ3VsYXIgKi9cblxuKGZ1bmN0aW9uIChhbmd1bGFyKSB7XG4gICd1c2Ugc3RyaWN0JztcblxuICBhbmd1bGFyLm1vZHVsZSgnY3JtLXRhc2tzLXdvcmtmbG93cy5kZWNvcmF0b3JzJylcbiAgICAuY29uZmlnKFsnJHByb3ZpZGUnLCAnJHJvdXRlUHJvdmlkZXInLCBmdW5jdGlvbiAoJHByb3ZpZGUsICRyb3V0ZVByb3ZpZGVyKSB7XG4gICAgICAkcHJvdmlkZS5kZWNvcmF0b3IoJyRyb3V0ZScsIFJvdXRlRGVjb3JhdG9yKTtcbiAgICB9XSk7XG5cbiAgUm91dGVEZWNvcmF0b3IuJGluamVjdCA9IFsnJGRlbGVnYXRlJ107XG5cbiAgZnVuY3Rpb24gUm91dGVEZWNvcmF0b3IgKCRkZWxlZ2F0ZSkge1xuICAgIChmdW5jdGlvbiBpbml0ICgpIHtcbiAgICAgIHZhciBjYXNlVHlwZUVkaXRSb3V0ZSA9ICRkZWxlZ2F0ZS5yb3V0ZXNbJy9jYXNlVHlwZS86aWQnXTtcblxuICAgICAgY2FzZVR5cGVFZGl0Um91dGUuY29udHJvbGxlciA9ICdDYXNlVHlwZUV4dGVuZGVkQ29udHJvbGxlcic7XG4gICAgICBjYXNlVHlwZUVkaXRSb3V0ZS5yZXNvbHZlLmFjdGl2aXR5T3B0aW9uc1Rhc2sgPSBnZXRSZXNvbHZlckZvckFjdGl2aXR5VHlwZUNvbXBvbmVudCgnQ2l2aVRhc2snKTtcbiAgICAgIGNhc2VUeXBlRWRpdFJvdXRlLnJlc29sdmUuYWN0aXZpdHlPcHRpb25zRG9jdW1lbnQgPSBnZXRSZXNvbHZlckZvckFjdGl2aXR5VHlwZUNvbXBvbmVudCgnQ2l2aURvY3VtZW50Jyk7XG4gICAgfSkoKTtcblxuICAgIGZ1bmN0aW9uIGdldFJlc29sdmVyRm9yQWN0aXZpdHlUeXBlQ29tcG9uZW50IChjb21wb25lbnROYW1lKSB7XG4gICAgICBhY3Rpdml0eU9wdGlvbnNSZXNvbHZlci4kaW5qZWN0ID0gWydjcm1BcGknXTtcblxuICAgICAgZnVuY3Rpb24gYWN0aXZpdHlPcHRpb25zUmVzb2x2ZXIgKGNybUFwaSkge1xuICAgICAgICByZXR1cm4gY3JtQXBpKCdPcHRpb25WYWx1ZScsICdnZXQnLCB7XG4gICAgICAgICAgb3B0aW9uX2dyb3VwX2lkOiAnYWN0aXZpdHlfdHlwZScsXG4gICAgICAgICAgY29tcG9uZW50X2lkOiBjb21wb25lbnROYW1lLFxuICAgICAgICAgIHNlcXVlbnRpYWw6IDEsXG4gICAgICAgICAgb3B0aW9uczogeyBzb3J0OiAnbmFtZScsIGxpbWl0OiAwIH1cbiAgICAgICAgfSk7XG4gICAgICB9XG5cbiAgICAgIHJldHVybiBhY3Rpdml0eU9wdGlvbnNSZXNvbHZlcjtcbiAgICB9XG5cbiAgICByZXR1cm4gJGRlbGVnYXRlO1xuICB9XG59KShhbmd1bGFyKTtcbiIsIi8qIGdsb2JhbCBhbmd1bGFyICovXG5cbihmdW5jdGlvbiAoYW5ndWxhcikge1xuICAndXNlIHN0cmljdCc7XG5cbiAgYW5ndWxhci5tb2R1bGUoJ2NybS10YXNrcy13b3JrZmxvd3MnLCBbXG4gICAgJ2NybS10YXNrcy13b3JrZmxvd3MuY29yZScsXG4gICAgJ2NybS10YXNrcy13b3JrZmxvd3MuY29udHJvbGxlcnMnLFxuICAgICdjcm0tdGFza3Mtd29ya2Zsb3dzLmRlY29yYXRvcnMnXG4gIF0pO1xufSkoYW5ndWxhcik7XG4iXX0= diff --git a/uk.co.compucorp.civicrm.tasksassignments/js/dist/tasks-assignments.min.js b/uk.co.compucorp.civicrm.tasksassignments/js/dist/tasks-assignments.min.js index a094f449..a590fffc 100644 --- a/uk.co.compucorp.civicrm.tasksassignments/js/dist/tasks-assignments.min.js +++ b/uk.co.compucorp.civicrm.tasksassignments/js/dist/tasks-assignments.min.js @@ -14,7 +14,7 @@ */ define("tasks-assignments/modules/tasks-assignments.constants",["common/angular"],function(e){"use strict";e.module("tasks-assignments.constants",[]).constant("config",{DEBUG:!!+CRM.debug,CLASS_NAME_PREFIX:"ct-",CONTACT_ID:CRM.contactId||null,LOGGED_IN_CONTACT_ID:CRM.adminId||null,path:{EXT:CRM.tasksAssignments.extensionPath,TPL:CRM.tasksAssignments.extensionPath+"views/"},permissions:{allowDelete:CRM.tasksAssignments.permissions.delete_tasks_and_documents},url:{REST:CRM.url("civicrm/ajax/rest"),ASSIGNMENTS:CRM.url("civicrm/case"),CIVI_DASHBOARD:CRM.url("civicrm/"),CONTACT:CRM.url("civicrm/contact/view"),FILE:"/civicrm/tasksassignments/file",CSV_EXPORT:CRM.url("civicrm/tasksassignments")},status:{resolve:{DOCUMENT:["3","4"],TASK:["2","3","6","8"]}}})}),define("tasks-assignments/controllers/assignments.controller",[],function(){"use strict";function e(e,t,n,a,s,r,i){e.info("Controller: AssignmentsController")}return e.__name="AssignmentsController",e.$inject=["$log","$rootElement","$rootScope","$scope","$uibModal","$state","config"],e}),define("tasks-assignments/controllers/calendar.controller",["common/angular","common/moment"],function(e,t){"use strict";function n(n,a,s,r,i,o,c,l,u,d){function m(n,a,s){var r=[];return e.forEach(a,function(e){e.activity_date_time=t(e.activity_date_time).toDate(),this.push({id:e.id,title:s[e.activity_type_id],type:n,startsAt:e.activity_date_time,endsAt:e.activity_date_time,editable:!1,deletable:!1,incrementsBadgeTotal:!0}),e.expire_date&&(e.expire_date=t(e.expire_date).toDate(),+e.expire_date!=+e.activity_date_time&&this.push({id:e.id,title:s[e.activity_type_id],type:n,startsAt:e.expire_date,endsAt:e.expire_date,editable:!1,deletable:!1,incrementsBadgeTotal:!0}))},r),r}function f(e){r.calendarDay=t(e).toDate(),r.calendarView="day"}function g(e,n,a,s,r){var i,o,c,l=e.id,u=n.id,d=a.length,m=0;if(u)for(;m-1?{}:t,n,r.calTaskList,s.cache.taskType.obj,"task")}),r.$on("documentDelete",function(e,t){g({},{id:t},r.calDocList)}),r.$on("documentFormSuccess",function(e,t,n){g(s.cache.documentStatusResolve.indexOf(t.status_id)>-1?{}:t,n,r.calDocList,s.cache.documentType.obj,"document")}),r.$on("assignmentFormSuccess",function(e,t){Array.prototype.push.apply(r.calTaskList,this.createCalEventList("task",t.taskList,s.cache.taskType.obj)),+l.tabEnabled.documents&&Array.prototype.push.apply(r.calDocList,this.createCalEventList("document",t.documentList,s.cache.documentType.obj))}.bind(this))}r.calendarDay=new Date,r.calendarTitle="",r.calendarView=o.params.calendarView||"month",r.calTaskList=[],r.calDocList=[],this.createCalEventList=m.bind(this),r.displayDayView=f,function(){v.call(this),r.calTaskList=this.createCalEventList("task",d,s.cache.taskType.obj),+l.tabEnabled.documents&&(r.calDocList=this.createCalEventList("document",u,s.cache.documentType.obj))}.bind(this)()}return n.__name="CalendarController",n.$inject=["$filter","$log","$rootScope","$scope","$timeout","$state","$stateParams","settings","documentList","taskList"],n}),define("tasks-assignments/controllers/date-list.controller",["common/moment"],function(e){"use strict";function t(t,n,a,s,r,i,o,c,l,u){function d(e){for(var t,n=0,a=e.length,s={},r=[];n-1;a.task.resolved=t,a.task.completed=t}),a.$watch("task.activity_date_time",function(e){a.task.due=new Date(e).setHours(0,0,0,0)<(new Date).setHours(0,0,0,0)})}t.debug("Controller: TaskController"),a.isCollapsed=!0,a.picker={opened:!1},a.task.activity_date_time=a.task.activity_date_time?e(a.task.activity_date_time).toDate():null,a.dpOpen=s,function(){r()}()}return n.__name="TaskController",n.$inject=["$log","$rootScope","$scope"],n}),define("tasks-assignments/controllers/dashboard/nav-main.controller",[],function(){"use strict";function e(e,t,n){function a(e){return n.includes(e)}e.debug("Controller: NavMainController"),t.isActive=a}return e.__name="NavMainController",e.$inject=["$log","$scope","$state"],e}),define("tasks-assignments/controllers/dashboard/top-bar.controller",[],function(){"use strict";function e(e,t,n,a){e.debug("Controller: TopBarController"),t.itemAdd={},t.itemAdd.fn=function(){a.includes("documents")?t.modalDocument():t.modalTask()},t.itemAdd.label=function(){return a.includes("documents")?"Add Document":"Add Task"}}return e.__name="TopBarController",e.$inject=["$log","$rootScope","$scope","$state"],e}),define("tasks-assignments/services/contact.service",["common/angular","common/lodash"],function(e,t){"use strict";function n(n,a,s,r,i,o,c,l){function u(e){if(!e||"number"!=typeof+e&&"object"!=typeof e)return null;var a=r.defer();return e={IN:t.uniq(e.IN)},n.get({json:{id:e,return:"display_name, sort_name, id, contact_id, contact_type, email"}},function(e){c.errorHandler(e,"Unable to fetch contacts",a)||a.resolve(e.values)},function(){a.reject("Unable to fetch contact")}),a.promise}function d(t,a){if(a&&"object"!=typeof a)return null;var s=r.defer(),i={};return e.extend(i,a),i.display_name=t,i.return="display_name, contact_id, contact_type, email",n.get({action:"get",json:i},function(e){if(!c.errorHandler(e,"Unable to fetch contact list",s)){var t=[];for(var n in e.values)t.push({label:e.values[n].display_name,description:[e.values[n].email],id:e.values[n].contact_id,icon_class:e.values[n].contact_type});s.resolve(t)}},function(){s.reject("Unable to fetch contact list")}),s.promise}function m(t){var n,a,s=o.cache.contact.obj||{},r=[],c=[];e.extend(s,t);for(a in s)n=s[a],r.push(n),c.push({description:n.email?[n.email]:[],label:n.display_name,icon_class:n.contact_type,id:n.contact_id});r=i("orderBy")(r,"sort_name"),c=i("orderBy")(c,"label"),o.cache.contact={arr:r,obj:s,arrSearch:c}}return l.debug("Service: contactService"),{get:u,search:d,updateCache:m}}return n.__name="contactService",n.$inject=["Contact","$resource","config","$q","$filter","$rootScope","utilsService","$log"],n}),define("tasks-assignments/services/document.service",["common/angular","common/lodash"],function(e,t){"use strict";function n(n,a,s,r,i,o,c,l){function u(t,s){if(!t||!e.isArray(t)||!s||"number"!=typeof+s)return null;if(!t.length)return t;var r=a.defer();return n.save({action:"copy_to_assignment"},{json:{id:t,case_id:s}||{}},function(e){i.errorHandler(e,"Unable to assign documents",r)||r.resolve(e.values)},function(){r.reject("Unable to assign documents")}),r.promise}function d(e,n){var i,l,u=[],d=[];return void 0===n&&(n=["contacts","assignments"]),n=Array.isArray(n)?n:[n],t.contains(n,"contacts")&&(u=m(e),s.CONTACT_ID&&u.push(s.CONTACT_ID),i=u&&u.length?o.get({IN:u}).then(function(e){o.updateCache(e)}):a.resolve()),t.contains(n,"assignments")&&(d=f(e),l=d&&d.length&&r.extEnabled.assignments?c.get({IN:d}).then(function(e){c.updateCache(e)}):a.resolve()),a.all([i,l])}function m(e){return t(e).map(function(e){var t=[];return t.push(e.source_contact_id),e.assignee_contact_id&&e.assignee_contact_id.length&&(t=t.concat(e.assignee_contact_id)),e.target_contact_id&&e.target_contact_id.length&&t.push(e.target_contact_id[0]),t}).flatten().value()}function f(e){return e.filter(function(e){return!!e.case_id}).map(function(e){return e.case_id})}function g(e){if(!e||"number"!=typeof+e)return null;var t=a.defer();return n.delete({action:"delete",json:{id:e}},function(e){t.resolve(e)},function(){t.reject("Could not delete document ID: "+e)}),t.promise}function v(t){var s=a.defer();return t=t&&"object"==typeof t?t:{},t=e.extend({component:"CiviDocument",options:{limit:0},is_current_revision:"1",is_deleted:"0",sequential:"1",return:"activity_date_time, activity_type_id, assignee_contact_id, details, id, source_contact_id, target_contact_id, subject, status_id, expire_date"},t),n.get({json:t},function(e){s.resolve(e.values)},function(){s.reject("Unable to fetch documents list")}),s.promise}function p(){var e=a.defer(),s={arr:[],obj:{}};return n.get({action:"getoptions",json:{field:"status_id"}},function(n){t.each(n.values,function(e){s.arr.push({key:e.key.toString(),value:e.value}),s.obj[e.key]=e.value}),e.resolve(s)}),e.promise}function h(){var e=a.defer(),s={arr:[],obj:{}};return n.get({action:"getoptions",json:{field:"activity_type_id",options:{limit:0}}},function(n){t.each(n.values,function(e){s.arr.push({key:e.key,value:e.value}),s.obj[e.key]=e.value}),e.resolve(s)}),e.promise}function y(){return a.all({documentType:this.getDocumentTypes(),documentStatus:this.getDocumentStatus()})}function _(t){if(!t||"object"!=typeof t)return null;var r,o=a.defer(),c=e.extend({sequential:1,debug:s.DEBUG},t);return n.save({action:"create"},{json:c||{}},function(e){i.errorHandler(e,"Unable to save document",o)||(r=e.values,o.resolve(1===r.length?r[0]:null))},function(){o.reject("Unable to save document")}),o.promise}function k(t){if(!t||!e.isArray(t))return null;if(!t.length)return t;var s=a.defer();return n.save({action:"create_multiple"},{json:{document:t}||{}},function(e){i.errorHandler(e,"Unable to save documents",s)||s.resolve(e.values)},function(){s.reject("Unable to save documents")}),s.promise}function $(e,t){if(!e||"number"!=typeof+e)return null;var s=a.defer();return n.save({action:"sendreminder"},{json:{activity_id:e,notes:t||""}||{}},function(e){i.errorHandler(e,"Unable to send a reminder",s)||s.resolve(e)},function(){s.reject("Unable to send a reminder")}),s.promise}return l.debug("Service: documentService"),{assign:u,cacheContactsAndAssignments:d,delete:g,get:v,getOptions:y,getDocumentStatus:p,getDocumentTypes:h,save:_,saveMultiple:k,sendReminder:$}}return n.__name="documentService",n.$inject=["Document","$q","config","settings","utilsService","contactService","assignmentService","$log"],n}),define("tasks-assignments/services/task.service",["common/angular","common/lodash","common/moment"],function(e,t,n){"use strict";function a(a,s,r,i,o){function c(t,n){if(!t||!e.isArray(t)||!n||"number"!=typeof+n)return null;if(!t.length)return t;var r=s.defer();return a.save({action:"copy_to_assignment"},{json:{id:t,case_id:n}||{}},function(e){i.errorHandler(e,"Unable to assign tasks",r)||r.resolve(e.values)},function(){r.reject("Unable to assign tasks")}),r.promise}function l(e){if(!e||"number"!=typeof+e)return null;var t=s.defer();return a.delete({action:"delete",json:{id:e}},function(e){t.resolve(e)},function(){t.reject("Could not delete task ID: "+e)}),t.promise}function u(t){var n=s.defer();return t=t&&"object"==typeof t?t:{},t=e.extend({component:"CiviTask",options:{limit:0},is_current_revision:"1",is_deleted:"0",sequential:"1",return:"activity_date_time, activity_type_id, assignee_contact_id, details, id, source_contact_id, target_contact_id, subject, status_id"},t),a.get({json:t},function(e){n.resolve(e.values)},function(){n.reject("Unable to fetch tasks list")}),n.promise}function d(){var e=s.defer(),n={arr:[],obj:{}};return a.get({action:"getoptions",json:{field:"activity_type_id",options:{limit:0}}},function(a){t.each(a.values,function(e){n.arr.push({key:e.key,value:e.value}),n.obj[e.key]=e.value}),e.resolve(n)}),e.promise}function m(){return s.all({taskType:this.getActivityTypes(),taskStatus:this.getTaskStatus()})}function f(){var e=s.defer(),n={arr:[],obj:{}};return a.get({action:"getoptions",json:{field:"status_id"}},function(a){t.each(a.values,function(e){n.arr.push({key:e.key,value:e.value}),n.obj[e.key]=e.value}),e.resolve(n)}),e.promise}function g(t){if(!t||"object"!=typeof t)return null;t.activity_date_time instanceof Date&&(t.activity_date_time=n(t.activity_date_time.getTime()).format("YYYY-MM-DD"));var r,o=s.defer(),c=e.extend({},t);return a.save({action:"create"},{json:c||{}},function(e){i.errorHandler(e,"Unable to save task",o)||(r=e.values,o.resolve(1===r.length?r[0]:null))},function(){o.reject("Unable to save task")}),o.promise}function v(t){if(!t||!e.isArray(t))return null;if(!t.length)return t;t.forEach(function(e){e.activity_date_time instanceof Date&&(e.activity_date_time=n(e.activity_date_time.getTime()).format("YYYY-MM-DD"))});var r=s.defer();return a.save({action:"create_multiple"},{json:{task:t}||{}},function(e){i.errorHandler(e,"Unable to save tasks",r)||r.resolve(e.values)},function(){r.reject("Unable to save tasks")}),r.promise}function p(e,t){if(!e||"number"!=typeof+e)return null;var n=s.defer();return a.save({action:"sendreminder"},{json:{activity_id:e,notes:t}},function(e){i.errorHandler(e,"Unable to send a reminder",n)||n.resolve(e)},function(){n.reject("Unable to send a reminder")}),n.promise}return o.debug("Service: taskService"),{assign:c,delete:l,get:u,getActivityTypes:d,getOptions:m, -getTaskStatus:f,save:g,saveMultiple:v,sendReminder:p}}return a.__name="taskService",a.$inject=["Task","$q","config","utilsService","$log"],a}),define("tasks-assignments/services/assignment.service",["common/angular","common/lodash"],function(e,t){"use strict";function n(t,n,a,s,r,i,o,c,l,u,d,m,f,g){function v(e,n){if(!e||"number"!=typeof+e||!n||"number"!=typeof+n)return null;var a=i.defer();return t.save({action:"create",json:{sequential:1,contact_id_a:e,contact_id_b:o.LOGGED_IN_CONTACT_ID,relationship_type_id:9,case_id:n}},null,function(e){c.errorHandler(e,"Unable to assign coordinator",a)||a.resolve(e.values)},function(){a.reject("Unable to assign coordinator")}),a.promise}function p(e){if(!e||"number"!=typeof+e&&"object"!=typeof e)return null;var t=i.defer();return n.get({json:{options:{limit:0},id:e,return:["case_type_id","contacts","client_id","contact_id","id","is_deleted","start_date","status_id","subject"],debug:o.DEBUG}},function(e){c.errorHandler(e,"Unable to fetch assignments",t)||t.resolve(e.values)},function(){t.reject("Unable to fetch assignments")}),t.promise}function h(){var e=i.defer();return s.get({},function(t){c.errorHandler(t,"Unable to fetch assignment types",e)||e.resolve(t.values)},function(){e.reject("Unable to fetch assignment types")}),e.promise}function y(t){if(!t||"object"!=typeof t)return null;var a,s=i.defer(),r=e.extend({sequential:1,debug:o.DEBUG},t);return n.save({action:"create",json:r},null,function(e){c.errorHandler(e,"Unable to save an assignment",s)||(a=e.values,s.resolve(1===a.length?a[0]:null))},function(){s.reject("Unable to save an assignment")}),s.promise}function _(e,t,n){return n=Array.isArray(n)?n.join(","):n,a.query({sortName:e,excludeCaseIds:t,includeContactIds:n}).$promise}function k(e){return document.getElementsByClassName("CRM_Case_Form_Search").length?void CRM.refreshParent(".CRM_Case_Form_Search"):document.getElementById("tab_case")?void CRM.tabHeader.updateCount("#tab_case",CRM.tabHeader.getCount("#tab_case")+(e||0)):void("/assignments"===u.path()&&d.reload(!0))}function $(t){var n,a,s,r=m.cache.assignment.obj||{},i=[],o=[];e.extend(r,t);for(a in r)n=r[a],s=m.cache.assignmentType.obj[n.case_type_id].title,i.push(n),o.push({label:n.contacts[0].sort_name+" - "+s+(n.end_date?" (closed)":""),label_class:+n.is_deleted||n.end_date?"strikethrough":"",id:a,extra:{case_subject:n.subject,case_type:s,contact_id:n.contacts[0].contact_id,end_date:n.end_date,sort_name:n.contacts[0].sort_name,start_date:n.start_date}});i=l("orderBy")(i,"subject"),o=l("orderBy")(o,"label"),m.cache.assignment={arr:i,obj:r,arrSearch:o}}return f.debug("Service: assignmentService"),{get:p,assignCoordinator:v,getTypes:h,save:y,search:_,updateCache:$,updateTab:k}}return n.__name="assignmentService",n.$inject=["Relationship","Assignment","AssignmentSearch","AssignmentType","contactService","$q","config","utilsService","$filter","$location","$state","$rootScope","$log","$timeout"],n}),define("tasks-assignments/controllers/modal/modal-assignment-activity.controller",["common/lodash","common/angular","common/moment","tasks-assignments/services/contact.service","tasks-assignments/services/document.service","tasks-assignments/services/task.service","tasks-assignments/services/assignment.service"],function(e,t,n){"use strict";function a(e,t){function a(){t.$watch("$parent.assignment.dueDate",function(e){t.activity.create&&(t.activity.activity_date_time=e?n(e).add(t.activity.offset,"days").toDate():null)}),t.$watch("$parent.assignment.contact_id",function(e){e&&t.activity.create&&(t.activity.target_contact_id=[e])})}e.debug("Controller: ModalAssignmentTaskController"),t.isDisabled=!t.activity.activity_type_id&&!t.activity.isAdded,t.activity.create=!t.isDisabled,function(){a()}()}return a.__name="ModalAssignmentActivityController",a.$inject=["$log","$scope"],a}),define("tasks-assignments/controllers/modal/modal-assignment.controller",["common/lodash","common/angular","common/moment"],function(e,t,n){"use strict";function a(n,a,s,r,i,o,c,l,u,d,m,f,g,v,p){function h(e){e&&e.push(t.extend(t.copy(j),{isAdded:!0}))}function y(e){var t={};t[e.id]={contact_id:e.id,contact_type:e.icon_class,sort_name:e.label,display_name:e.label,email:e.description.length?e.description[0]:""},v.updateCache(t)}function _(){c.dismiss("cancel")}function k(){if(!n("filter")(i.taskList,{create:!0}).length&&!n("filter")(i.documentList,{create:!0}).length)return i.alert.msg="Please add at least one task.",void(i.alert.show=!0);A(i.assignment)&&(i.$broadcast("ct-spinner-show"),i.assignment.start_date=new Date,m.save(i.assignment).then(function(e){var n=i.documentList.filter(function(e){return e.create}).map(function(t){return t.case_id=e.id,t}),a=i.taskList.filter(function(e){return e.create}).map(function(t){return t.case_id=e.id,t});s.all({relationship:m.assignCoordinator(i.assignment.contact_id,e.id),document:g.saveMultiple(n.map(function(e){return t.copy(e)})),task:f.saveMultiple(a.map(function(e){return t.copy(e)}))}).then(function(s){var o,l=[],d=[],f={};for(o=0;o=se.fileSizeLimit&&(a=!1)}),!a&&b.alert("Large files",n,{expires:5e3}),a}function te(e){var t=[];if(e.target_contact_id[0]||t.push("Contact"),e.activity_type_id||t.push("Document type"),e.status_id||t.push("Document status"),e.status_id||t.push("Status"),t.length){var n=1===t.length?"Required field":"Required fields",a=t.join(", ");return b.alert(n,a,{expires:5e3}),!1}return!0}function ne(e){o.$broadcast("ct-spinner-show"),$.openFile(e).then(function(e){o.$broadcast("ct-spinner-hide")})}function ae(){o.$watch("cache.contact.arrSearch",M)}s.debug("Controller: ModalDocumentController");var se=this;se.document={},se.files=[],se.fileSizeLimit=0,se.filesTrash=[],se.mode=w,se.modalTitle="edit"===se.mode?"Edit Document":"New Document",se.containsFiles=!0,se.remindMeMessage='Checking this box sets a reminder that this document needs to be renewed a set number of days before the Expiry Date. You can set this by going here CiviHR will do this by creating a copy of this document with the status ‘awaiting upload’, which you will be able to see in your Documents list.',se.role=C||"admin",se.showCId=!v.CONTACT_ID,se.uploader=k.uploader("civicrm_activity"),se.dpOpened={due:!1,exp:!1,form:!1},se.addAssignee=T,se.addQueryParam=E,se.cacheAssignment=x,se.cacheContact=A,se.cancel=j,se.confirm=I,se.dpOpen=R,se.dropzoneClick=L,se.fileMoveToTrash=P,se.getDocumentType=H,se.getDocumentStatus=q,se.getStatusIdByName=U,se.isRole=B,se.onContactChanged=Y,se.parseDate=G,se.removeAssignee=W,se.refreshAssignments=z,se.refreshContacts=K,se.remindMeInfo=X,se.statusFieldVisible=Z,se.showStatusField=Q,se.searchContactAssignments=J,se.viewFile=ne,function(){e.copy(D,se.document),e.copy(S,se.files),O(),N(),M(),ae(),F()}()}return a.__name="ModalDocumentController",a.$inject=["$filter","$log","$q","$rootElement","$rootScope","$scope","$timeout","$window","$dialog","$uibModal","$uibModalInstance","HR_settings","config","appSettingsService","assignmentService","contactService","documentService","fileServiceTA","fileService","notificationService","modalMode","role","data","files"],a}),define("tasks-assignments/controllers/modal/modal-progress.controller",[],function(){"use strict";function e(e,t,n,a,s,r,i,o){function c(){s.dismiss("File upload canceled")}e.debug("Controller: ModalProgressController"),n.uploader=i,n.cancel=c,function(){i.queue.length&&(i.item=i.queue[0].file.name),i.onProgressItem=function(e){this.item=e.file.name},r.upload(i,o).then(function(e){a(function(){s.close(e)},500)})}()}return e.__name="ModalProgressController",e.$inject=["$log","$q","$scope","$timeout","$uibModalInstance","fileServiceTA","uploader","entityId"],e}),define("tasks-assignments/controllers/modal/modal-reminder.controller",["common/angular"],function(e){"use strict";function t(t,n,a,s,r,i,o,c,l,u,d,m){function f(){o.dismiss("cancel")}function g(){r.$broadcast("ct-spinner-show"),("task"===m?l:c).sendReminder(r.data.id,r.reminder.notes).then(function(){CRM.alert("Message sent to: "+s.cache.contact.obj[r.data.assignee_contact_id[0]].sort_name,"Reminder sent","success"),o.close(),r.$broadcast("ta-spinner-hide")},function(e){return CRM.alert(e,"Error","error"),o.dismiss(),r.$broadcast("ta-spinner-hide"),a.reject()})}n.debug("Controller: ModalReminderController"),r.data={},r.type=m,e.copy(d,r.data),r.reminder={},r.data.assignee_contact_id=r.data.assignee_contact_id||[],r.data.target_contact_id=r.data.target_contact_id||[u.CONTACT_ID],r.contacts=s.cache.contact.arrSearch,r.showCId=!u.CONTACT_ID,r.cancel=f,r.confirm=g}return t.__name="ModalReminderController",t.$inject=["$filter","$log","$q","$rootScope","$scope","$dialog","$uibModalInstance","documentService","taskService","config","data","type"],t}),define("tasks-assignments/controllers/modal/modal-task-migrate.controller",["common/angular"],function(e){"use strict";function t(t,n,a,s,r,i,o,c,l,u,d,m,f,g,v,p,h){function y(e){var t={};t[e.id]={contact_id:e.id,contact_type:e.icon_class,sort_name:e.label,display_name:e.label,email:e.description.length?e.description[0]:""},m.updateCache(t)}function _(){if(i.taskMigrateForm.$pristine)return void l.dismiss("cancel");u.open({copyCancel:"No",msg:"Are you sure you want to cancel? Changes will be lost!"}).then(function(e){e&&(i.$broadcast("ct-spinner-hide"),l.dismiss("cancel"))})}function k(){if(i.migrate.task.statusListSelected||i.migrate.document.statusListSelected){var t,n=[],s=[],o=0;e.forEach(i.migrate.task.list,function(e){i.migrate.task.statusListSelected.indexOf(e.status_id)>-1&&this.push(e)},n),+h.tabEnabled.documents&&e.forEach(i.migrate.document.list,function(e){i.migrate.document.statusListSelected.indexOf(e.status_id)>-1&&this.push(e)},n),i.$broadcast("ct-spinner-show"),e.forEach(n,function(n){n.assignee_contact_id[0]=i.migrate.to,this.push(function(){var s=a.defer();return t=o?this[o-1]:{},a.when(t).then(function(){v.save({entity:"Activity",action:"create",json:e.extend({sequential:"1",component:""},n)},null,function(e){g.errorHandler(e,"Unable to save task",s)||s.resolve(1===e.values.length?e.values[0]:null)},function(){s.reject("Unable to save task")})}),s.promise}.bind(this)()),o++},s),a.all(s).then(function(e){e.length?CRM.alert(e.length+" item(s) re-assigned from: "+r.cache.contact.obj[i.migrate.from].sort_name+" to: "+r.cache.contact.obj[i.migrate.to].sort_name,"Migrate Tasks","success"):CRM.alert("0 items re-assigned.","Migrate Tasks","warning"),l.dismiss(),i.$broadcast("ct-spinner-hide")},function(e){CRM.alert(e,"Error","error"),l.dismiss(),i.$broadcast("ct-spinner-hide")})}}function $(n){i.$broadcast("ct-spinner-show"),n=n||i.migrate.from,i.migrate.task.statusList=[],i.migrate.task.statusListSelected=[],i.migrate.document.statusList=[],i.migrate.document.statusListSelected=[],i.migrate.dataLoaded=!1;var a=[];v.get({entity:"ActivityContact",json:{component:"",sequential:"1",return:"activity_id",contact_id:n,record_type_id:"1",options:{limit:"0"}}},function(n){n.values&&n.values.length?(e.forEach(n.values,function(e){this.push(e.activity_id)},a),v.get({entity:"Activity",json:{component:"",options:{limit:0},id:{IN:a},is_current_revision:"1",is_deleted:"0",sequential:"1",return:"assignee_contact_id, activity_type_id, assignee_contact_id, id, status_id"}},function(n){function a(e,t){var n=i.migrate[e];n.list.push(t),n.statusList.indexOf(t.status_id)>-1||(o[e].indexOf(t.status_id)>-1?n.statusList.push(t.status_id):(n.statusList.unshift(t.status_id),n.statusListSelected.push(t.status_id)))}var s=r.cache.documentType.obj,o={task:r.cache.taskStatusResolve,document:r.cache.documentStatusResolve};n.values&&n.values.length&&(n.values=t("orderBy")(n.values,"-status_id"),e.forEach(n.values,function(e){s[e.activity_type_id]?a("document",e):a("task",e)})),i.migrate.dataLoaded=!0,i.$broadcast("ct-spinner-hide")})):(i.migrate.dataLoaded=!0,i.$broadcast("ct-spinner-hide"))})}function b(e){e&&m.search(e,{contact_type:"Individual"}).then(function(e){i.contacts=e})}n.debug("Controller: ModalTaskMigrateController"),i.contacts=r.cache.contact.arrSearch,i.migrate={},i.migrate.dataLoaded=!1,i.migrate.from="",i.migrate.to="",i.migrate.document={list:[],statusList:[],statusListSelected:[]},i.migrate.task={list:[],statusList:[],statusListSelected:[]},i.cacheContact=y,i.cancel=_,i.confirm=k,i.getActivities=$,i.refreshContacts=b}return t.__name="ModalTaskMigrateController",t.$inject=["$filter","$log","$q","$rootElement","$rootScope","$scope","$timeout","$uibModal","$uibModalInstance","$dialog","assignmentService","contactService","taskService","utilsService","Task","activityType","settings"],t}),define("tasks-assignments/controllers/modal/modal-task.controller",["common/angular","common/moment"],function(e,t){"use strict";function n(n,a,s,r,i,o,c,l,u,d,m,f,g,v,p,h){function y(e){if(!i.cache.assignment.obj[e.id]){var t={};t[e.id]={case_type_id:n("filter")(i.cache.assignmentType.arr,{title:e.extra.case_type})[0].id,client_id:{1:e.extra.contact_id},contact_id:{1:e.extra.contact_id},contacts:[{sort_name:e.extra.sort_name,contact_id:e.extra.contact_id}],end_date:e.extra.end_date,id:e.id,is_deleted:"strikethrough"===e.label_class?"1":"0",start_date:e.extra.start_date,subject:e.extra.case_subject},m.updateCache(t)}}function _(e){var t={};t[e.id]={contact_id:e.id,contact_type:e.icon_class,sort_name:e.label,display_name:e.label,email:e.description.length?e.description[0]:""},f.updateCache(t)}function k(){if(o.taskForm.$pristine)return void u.dismiss("cancel");d.open({copyCancel:"No",msg:"Are you sure you want to cancel? Changes will be lost!"}).then(function(e){e&&(o.$broadcast("ct-spinner-hide"),u.dismiss("cancel"))})}function $(){var t=e.copy(o.task);if(T(t)){if(e.equals(p,t))return void u.dismiss("cancel");o.$broadcast("ct-spinner-show"),+t.case_id==+p.case_id&&delete t.case_id,t.activity_date_time=t.activity_date_time||new Date,g.save(t).then(function(e){o.task.id=e.id,o.task.case_id=e.case_id,m.updateTab(),o.openNew&&(o.task.open=!0,o.openNew=!1),u.close(o.task),o.$broadcast("ct-spinner-hide")},function(e){return CRM.alert(e,"Error","error"),o.$broadcast("ct-spinner-hide"),s.reject()})}}function b(e){e.preventDefault(),e.stopPropagation(),o.dpOpened=!0}function w(e){var t=i.cache.contact.arrSearch;return o.task.id?t.filter(function(t){return+o.task[e+"_contact_id"][0]==+t.id}):[]}function C(){o.$watch("task.target_contact_id",function(e,t){e!==t&&(o.task.case_id=null,o.showFieldAssignment=!1,D(e))},!0)}function D(e){o.assignments=[],e[0]&&(c(function(){o.$broadcast("ct-spinner-show")},0),m.search(null,null,e).then(function(e){o.assignments=e,o.$broadcast("ct-spinner-hide")}))}function S(e,t){e&&f.search(e,{contact_type:"Individual"}).then(function(e){o.contacts[t]=e})}function T(e){var t=[];if(e.target_contact_id[0]||t.push("Task Target"),e.activity_type_id||t.push("Task type"),e.activity_date_time||t.push("Due date"),t.length){var n=CRM.alert(t.join(", "),1===t.length?"Required field":"Required fields","error");return c(function(){n.close(),n=null},5e3),!1}return!0}a.debug("Controller: ModalTaskController"),o.assignments=[],o.format=v.DATE_FORMAT.toLowerCase(),o.data=p,o.showCId=!h.CONTACT_ID,o.showFieldAssignment=!1,o.task={},e.copy(p,o.task),o.task.activity_date_time=o.task.activity_date_time||t().toDate(),o.task.assignee_contact_id=o.task.assignee_contact_id||[],o.task.source_contact_id=o.task.source_contact_id||h.LOGGED_IN_CONTACT_ID,o.task.target_contact_id=o.task.target_contact_id||[h.CONTACT_ID],o.contacts={target:w("target"),assignee:w("assignee")},o.cacheAssignment=y,o.cacheContact=_,o.cancel=k,o.confirm=$,o.dpOpen=b,o.refreshContacts=S,function(){C(),o.task.id&&D(o.task.target_contact_id)}()}return n.__name="ModalTaskController",n.$inject=["$filter","$log","$q","$rootElement","$rootScope","$scope","$timeout","$uibModal","$uibModalInstance","$dialog","assignmentService","contactService","taskService","HR_settings","data","config"],n}),define("tasks-assignments/modules/tasks-assignments.controllers",["common/angular","tasks-assignments/controllers/assignments.controller","tasks-assignments/controllers/calendar.controller","tasks-assignments/controllers/date-list.controller","tasks-assignments/controllers/document-list.controller","tasks-assignments/controllers/document.controller","tasks-assignments/controllers/external-page.controller","tasks-assignments/controllers/main.controller","tasks-assignments/controllers/settings.controller","tasks-assignments/controllers/task-list.controller","tasks-assignments/controllers/task.controller","tasks-assignments/controllers/dashboard/nav-main.controller","tasks-assignments/controllers/dashboard/top-bar.controller","tasks-assignments/controllers/modal/modal-assignment-activity.controller","tasks-assignments/controllers/modal/modal-assignment.controller","tasks-assignments/controllers/modal/modal-dialog.controller","tasks-assignments/controllers/modal/modal-document.controller","tasks-assignments/controllers/modal/modal-progress.controller","tasks-assignments/controllers/modal/modal-reminder.controller","tasks-assignments/controllers/modal/modal-task-migrate.controller","tasks-assignments/controllers/modal/modal-task.controller"],function(e,t,n,a,s,r,i,o,c,l,u,d,m,f,g,v,p,h,y,_,k){"use strict";return e.module("tasks-assignments.controllers",[]).controller(t.__name,t).controller(n.__name,n).controller(a.__name,a).controller(s.__name,s).controller(r.__name,r).controller(i.__name,i).controller(o.__name,o).controller(c.__name,c).controller(l.__name,l).controller(u.__name,u).controller(d.__name,d).controller(m.__name,m).controller(f.__name,f).controller(g.__name,g).controller(v.__name,v).controller(p.__name,p).controller(h.__name,h).controller(y.__name,y).controller(_.__name,_).controller(k.__name,k)}),define("tasks-assignments/vendor/angular-bootstrap-calendar",["common/moment"],function(e){"use strict";angular.module("mwl.calendar",[]),angular.module("mwl.calendar").run(["$templateCache",function(e){e.put("src/templates/calendar.html",'
The value passed to the view attribute of the calendar is not set
The value passed to current-day attribute of the calendar is not set
'),e.put("src/templates/calendarCustom.html",'
The value passed to the view attribute of the calendar is not set
The value passed to current-day attribute of the calendar is not set
'), +getTaskStatus:f,save:g,saveMultiple:v,sendReminder:p}}return a.__name="taskService",a.$inject=["Task","$q","config","utilsService","$log"],a}),define("tasks-assignments/services/assignment.service",["common/angular","common/lodash"],function(e,t){"use strict";function n(t,n,a,s,r,i,o,c,l,u,d,m,f,g){function v(e,n){if(!e||"number"!=typeof+e||!n||"number"!=typeof+n)return null;var a=i.defer();return t.save({action:"create",json:{sequential:1,contact_id_a:e,contact_id_b:o.LOGGED_IN_CONTACT_ID,relationship_type_id:9,case_id:n}},null,function(e){c.errorHandler(e,"Unable to assign coordinator",a)||a.resolve(e.values)},function(){a.reject("Unable to assign coordinator")}),a.promise}function p(e){if(!e||"number"!=typeof+e&&"object"!=typeof e)return null;var t=i.defer();return n.get({json:{options:{limit:0},id:e,return:["case_type_id","contacts","client_id","contact_id","id","is_deleted","start_date","status_id","subject"],debug:o.DEBUG}},function(e){c.errorHandler(e,"Unable to fetch assignments",t)||t.resolve(e.values)},function(){t.reject("Unable to fetch assignments")}),t.promise}function h(){var e=i.defer();return s.get({},function(t){c.errorHandler(t,"Unable to fetch assignment types",e)||e.resolve(t.values)},function(){e.reject("Unable to fetch assignment types")}),e.promise}function y(t){if(!t||"object"!=typeof t)return null;var a,s=i.defer(),r=e.extend({sequential:1,debug:o.DEBUG},t);return n.save({action:"create",json:r},null,function(e){c.errorHandler(e,"Unable to save an assignment",s)||(a=e.values,s.resolve(1===a.length?a[0]:null))},function(){s.reject("Unable to save an assignment")}),s.promise}function _(e,t,n){return n=Array.isArray(n)?n.join(","):n,a.query({sortName:e,excludeCaseIds:t,includeContactIds:n}).$promise}function k(e){return document.getElementsByClassName("CRM_Case_Form_Search").length?void CRM.refreshParent(".CRM_Case_Form_Search"):document.getElementById("tab_case")?void CRM.tabHeader.updateCount("#tab_case",CRM.tabHeader.getCount("#tab_case")+(e||0)):void("/assignments"===u.path()&&d.reload(!0))}function $(t){var n,a,s,r=m.cache.assignment.obj||{},i=[],o=[];e.extend(r,t);for(a in r)n=r[a],s=m.cache.assignmentType.obj[n.case_type_id].title,i.push(n),o.push({label:n.contacts[0].sort_name+" - "+s+(n.end_date?" (closed)":""),label_class:+n.is_deleted||n.end_date?"strikethrough":"",id:a,extra:{case_subject:n.subject,case_type:s,contact_id:n.contacts[0].contact_id,end_date:n.end_date,sort_name:n.contacts[0].sort_name,start_date:n.start_date}});i=l("orderBy")(i,"subject"),o=l("orderBy")(o,"label"),m.cache.assignment={arr:i,obj:r,arrSearch:o}}return f.debug("Service: assignmentService"),{get:p,assignCoordinator:v,getTypes:h,save:y,search:_,updateCache:$,updateTab:k}}return n.__name="assignmentService",n.$inject=["Relationship","Assignment","AssignmentSearch","AssignmentType","contactService","$q","config","utilsService","$filter","$location","$state","$rootScope","$log","$timeout"],n}),define("tasks-assignments/controllers/modal/modal-assignment-activity.controller",["common/lodash","common/angular","common/moment","tasks-assignments/services/contact.service","tasks-assignments/services/document.service","tasks-assignments/services/task.service","tasks-assignments/services/assignment.service"],function(e,t,n){"use strict";function a(e,t){function a(){t.$watch("$parent.assignment.dueDate",function(e){t.activity.create&&(t.activity.activity_date_time=e?n(e).add(t.activity.offset,"days").toDate():null)}),t.$watch("$parent.assignment.contact_id",function(e){e&&t.activity.create&&(t.activity.target_contact_id=[e])})}e.debug("Controller: ModalAssignmentTaskController"),t.isDisabled=!t.activity.activity_type_id&&!t.activity.isAdded,t.activity.create=!t.isDisabled,function(){a()}()}return a.__name="ModalAssignmentActivityController",a.$inject=["$log","$scope"],a}),define("tasks-assignments/controllers/modal/modal-assignment.controller",["common/lodash","common/angular","common/moment"],function(e,t,n){"use strict";function a(n,a,s,r,i,o,c,l,u,d,m,f,g,v,p){function h(e){e&&e.push(t.extend(t.copy(j),{isAdded:!0}))}function y(e){var t={};t[e.id]={contact_id:e.id,contact_type:e.icon_class,sort_name:e.label,display_name:e.label,email:e.description.length?e.description[0]:""},v.updateCache(t)}function _(){c.dismiss("cancel")}function k(){if(!n("filter")(i.taskList,{create:!0}).length&&!n("filter")(i.documentList,{create:!0}).length)return i.alert.msg="Please add at least one task.",void(i.alert.show=!0);A(i.assignment)&&(i.$broadcast("ct-spinner-show"),i.assignment.start_date=new Date,m.save(i.assignment).then(function(e){var n=i.documentList.filter(function(e){return e.create}).map(function(t){return t.case_id=e.id,t}),a=i.taskList.filter(function(e){return e.create}).map(function(t){return t.case_id=e.id,t});s.all({relationship:m.assignCoordinator(i.assignment.contact_id,e.id),document:g.saveMultiple(n.map(function(e){return t.copy(e)})),task:f.saveMultiple(a.map(function(e){return t.copy(e)}))}).then(function(s){var o,l=[],d=[],f={};for(o=0;o=se.fileSizeLimit&&(a=!1)}),!a&&b.alert("Large files",n,{expires:5e3}),a}function te(e){var t=[];if(e.target_contact_id[0]||t.push("Contact"),e.activity_type_id||t.push("Document type"),e.status_id||t.push("Document status"),e.status_id||t.push("Status"),t.length){var n=1===t.length?"Required field":"Required fields",a=t.join(", ");return b.alert(n,a,{expires:5e3}),!1}return!0}function ne(e){o.$broadcast("ct-spinner-show"),$.openFile(e).then(function(e){o.$broadcast("ct-spinner-hide")})}function ae(){o.$watch("cache.contact.arrSearch",M)}s.debug("Controller: ModalDocumentController");var se=this;se.document={},se.files=[],se.fileSizeLimit=0,se.filesTrash=[],se.mode=w,se.modalTitle="edit"===se.mode?"Edit Document":"New Document",se.containsFiles=!0,se.remindMeMessage='Checking this box sets a reminder that this document needs to be renewed a set number of days before the Expiry Date. You can set this by going here CiviHR will do this by creating a copy of this document with the status ‘awaiting upload’, which you will be able to see in your Documents list.',se.role=C||"admin",se.showCId=!v.CONTACT_ID,se.uploader=k.uploader("civicrm_activity"),se.dpOpened={due:!1,exp:!1,form:!1},se.addAssignee=T,se.addQueryParam=E,se.cacheAssignment=x,se.cacheContact=A,se.cancel=j,se.confirm=I,se.dpOpen=R,se.dropzoneClick=L,se.fileMoveToTrash=P,se.getDocumentType=H,se.getDocumentStatus=q,se.getStatusIdByName=U,se.isRole=B,se.onContactChanged=Y,se.parseDate=G,se.removeAssignee=W,se.refreshAssignments=z,se.refreshContacts=K,se.remindMeInfo=X,se.statusFieldVisible=Z,se.showStatusField=Q,se.searchContactAssignments=J,se.viewFile=ne,function(){e.copy(D,se.document),e.copy(S,se.files),O(),N(),M(),ae(),F()}()}return a.__name="ModalDocumentController",a.$inject=["$filter","$log","$q","$rootElement","$rootScope","$scope","$timeout","$window","$dialog","$uibModal","$uibModalInstance","HR_settings","config","appSettingsService","assignmentService","contactService","documentService","fileServiceTA","fileService","notificationService","modalMode","role","data","files"],a}),define("tasks-assignments/controllers/modal/modal-progress.controller",[],function(){"use strict";function e(e,t,n,a,s,r,i,o){function c(){s.dismiss("File upload canceled")}e.debug("Controller: ModalProgressController"),n.uploader=i,n.cancel=c,function(){i.queue.length&&(i.item=i.queue[0].file.name),i.onProgressItem=function(e){this.item=e.file.name},r.upload(i,o).then(function(e){a(function(){s.close(e)},500)})}()}return e.__name="ModalProgressController",e.$inject=["$log","$q","$scope","$timeout","$uibModalInstance","fileServiceTA","uploader","entityId"],e}),define("tasks-assignments/controllers/modal/modal-reminder.controller",["common/angular"],function(e){"use strict";function t(t,n,a,s,r,i,o,c,l,u,d,m){function f(){o.dismiss("cancel")}function g(){r.$broadcast("ct-spinner-show"),("task"===m?l:c).sendReminder(r.data.id,r.reminder.notes).then(function(){CRM.alert("Message sent to: "+s.cache.contact.obj[r.data.assignee_contact_id[0]].sort_name,"Reminder sent","success"),o.close(),r.$broadcast("ta-spinner-hide")},function(e){return CRM.alert(e,"Error","error"),o.dismiss(),r.$broadcast("ta-spinner-hide"),a.reject()})}n.debug("Controller: ModalReminderController"),r.data={},r.type=m,e.copy(d,r.data),r.reminder={},r.data.assignee_contact_id=r.data.assignee_contact_id||[],r.data.target_contact_id=r.data.target_contact_id||[u.CONTACT_ID],r.contacts=s.cache.contact.arrSearch,r.showCId=!u.CONTACT_ID,r.cancel=f,r.confirm=g}return t.__name="ModalReminderController",t.$inject=["$filter","$log","$q","$rootScope","$scope","$dialog","$uibModalInstance","documentService","taskService","config","data","type"],t}),define("tasks-assignments/controllers/modal/modal-task-migrate.controller",["common/angular"],function(e){"use strict";function t(t,n,a,s,r,i,o,c,l,u,d,m,f,g,v,p,h){function y(e){var t={};t[e.id]={contact_id:e.id,contact_type:e.icon_class,sort_name:e.label,display_name:e.label,email:e.description.length?e.description[0]:""},m.updateCache(t)}function _(){if(i.taskMigrateForm.$pristine)return void l.dismiss("cancel");u.open({copyCancel:"No",msg:"Are you sure you want to cancel? Changes will be lost!"}).then(function(e){e&&(i.$broadcast("ct-spinner-hide"),l.dismiss("cancel"))})}function k(){if(i.migrate.task.statusListSelected||i.migrate.document.statusListSelected){var t,n=[],s=[],o=0;e.forEach(i.migrate.task.list,function(e){i.migrate.task.statusListSelected.indexOf(e.status_id)>-1&&this.push(e)},n),+h.tabEnabled.documents&&e.forEach(i.migrate.document.list,function(e){i.migrate.document.statusListSelected.indexOf(e.status_id)>-1&&this.push(e)},n),i.$broadcast("ct-spinner-show"),e.forEach(n,function(n){n.assignee_contact_id[0]=i.migrate.to,this.push(function(){var s=a.defer();return t=o?this[o-1]:{},a.when(t).then(function(){v.save({entity:"Activity",action:"create",json:e.extend({sequential:"1",component:""},n)},null,function(e){g.errorHandler(e,"Unable to save task",s)||s.resolve(1===e.values.length?e.values[0]:null)},function(){s.reject("Unable to save task")})}),s.promise}.bind(this)()),o++},s),a.all(s).then(function(e){e.length?CRM.alert(e.length+" item(s) re-assigned from: "+r.cache.contact.obj[i.migrate.from].sort_name+" to: "+r.cache.contact.obj[i.migrate.to].sort_name,"Migrate Tasks","success"):CRM.alert("0 items re-assigned.","Migrate Tasks","warning"),l.dismiss(),i.$broadcast("ct-spinner-hide")},function(e){CRM.alert(e,"Error","error"),l.dismiss(),i.$broadcast("ct-spinner-hide")})}}function $(n){i.$broadcast("ct-spinner-show"),n=n||i.migrate.from,i.migrate.task.statusList=[],i.migrate.task.statusListSelected=[],i.migrate.document.statusList=[],i.migrate.document.statusListSelected=[],i.migrate.dataLoaded=!1;var a=[];v.get({entity:"ActivityContact",json:{component:"",sequential:"1",return:"activity_id",contact_id:n,record_type_id:"1",options:{limit:"0"}}},function(n){n.values&&n.values.length?(e.forEach(n.values,function(e){this.push(e.activity_id)},a),v.get({entity:"Activity",json:{component:"",options:{limit:0},id:{IN:a},is_current_revision:"1",is_deleted:"0",sequential:"1",return:"assignee_contact_id, activity_type_id, assignee_contact_id, id, status_id"}},function(n){function a(e,t){var n=i.migrate[e];n.list.push(t),n.statusList.indexOf(t.status_id)>-1||(o[e].indexOf(t.status_id)>-1?n.statusList.push(t.status_id):(n.statusList.unshift(t.status_id),n.statusListSelected.push(t.status_id)))}var s=r.cache.documentType.obj,o={task:r.cache.taskStatusResolve,document:r.cache.documentStatusResolve};n.values&&n.values.length&&(n.values=t("orderBy")(n.values,"-status_id"),e.forEach(n.values,function(e){s[e.activity_type_id]?a("document",e):a("task",e)})),i.migrate.dataLoaded=!0,i.$broadcast("ct-spinner-hide")})):(i.migrate.dataLoaded=!0,i.$broadcast("ct-spinner-hide"))})}function b(e){e&&m.search(e,{contact_type:"Individual"}).then(function(e){i.contacts=e})}n.debug("Controller: ModalTaskMigrateController"),i.contacts=r.cache.contact.arrSearch,i.migrate={},i.migrate.dataLoaded=!1,i.migrate.from="",i.migrate.to="",i.migrate.document={list:[],statusList:[],statusListSelected:[]},i.migrate.task={list:[],statusList:[],statusListSelected:[]},i.cacheContact=y,i.cancel=_,i.confirm=k,i.getActivities=$,i.refreshContacts=b}return t.__name="ModalTaskMigrateController",t.$inject=["$filter","$log","$q","$rootElement","$rootScope","$scope","$timeout","$uibModal","$uibModalInstance","$dialog","assignmentService","contactService","taskService","utilsService","Task","activityType","settings"],t}),define("tasks-assignments/controllers/modal/modal-task.controller",["common/angular","common/moment"],function(e,t){"use strict";function n(n,a,s,r,i,o,c,l,u,d,m,f,g,v,p,h){function y(e){if(!i.cache.assignment.obj[e.id]){var t={};t[e.id]={case_type_id:n("filter")(i.cache.assignmentType.arr,{title:e.extra.case_type})[0].id,client_id:{1:e.extra.contact_id},contact_id:{1:e.extra.contact_id},contacts:[{sort_name:e.extra.sort_name,contact_id:e.extra.contact_id}],end_date:e.extra.end_date,id:e.id,is_deleted:"strikethrough"===e.label_class?"1":"0",start_date:e.extra.start_date,subject:e.extra.case_subject},m.updateCache(t)}}function _(e){var t={};t[e.id]={contact_id:e.id,contact_type:e.icon_class,sort_name:e.label,display_name:e.label,email:e.description.length?e.description[0]:""},f.updateCache(t)}function k(){if(o.taskForm.$pristine)return void u.dismiss("cancel");d.open({copyCancel:"No",msg:"Are you sure you want to cancel? Changes will be lost!"}).then(function(e){e&&(o.$broadcast("ct-spinner-hide"),u.dismiss("cancel"))})}function $(){var t=e.copy(o.task);if(T(t)){if(e.equals(p,t))return void u.dismiss("cancel");o.$broadcast("ct-spinner-show"),+t.case_id==+p.case_id&&delete t.case_id,t.activity_date_time=t.activity_date_time||new Date,g.save(t).then(function(e){o.task.id=e.id,o.task.case_id=e.case_id,m.updateTab(),o.openNew&&(o.task.open=!0,o.openNew=!1),u.close(o.task),o.$broadcast("ct-spinner-hide")},function(e){return CRM.alert(e,"Error","error"),o.$broadcast("ct-spinner-hide"),s.reject()})}}function b(e){e.preventDefault(),e.stopPropagation(),o.dpOpened=!0}function w(e){var t=i.cache.contact.arrSearch;return o.task.id?t.filter(function(t){return+o.task[e+"_contact_id"][0]==+t.id}):[]}function C(){o.$watch("task.target_contact_id",function(e,t){e!==t&&(o.task.case_id=null,o.showFieldAssignment=!1,D(e))},!0)}function D(e){o.assignments=[],e[0]&&(c(function(){o.$broadcast("ct-spinner-show")},0),m.search(null,null,e).then(function(e){o.assignments=e,o.$broadcast("ct-spinner-hide")}))}function S(e,t){e&&f.search(e,{contact_type:"Individual"}).then(function(e){o.contacts[t]=e})}function T(e){var t=[];if(e.target_contact_id[0]||t.push("Task Target"),e.activity_type_id||t.push("Task type"),e.activity_date_time||t.push("Due date"),t.length){var n=CRM.alert(t.join(", "),1===t.length?"Required field":"Required fields","error");return c(function(){n.close(),n=null},5e3),!1}return!0}a.debug("Controller: ModalTaskController"),o.assignments=[],o.format=v.DATE_FORMAT.toLowerCase(),o.data=p,o.showCId=!h.CONTACT_ID,o.showFieldAssignment=!1,o.task={},e.copy(p,o.task),o.task.activity_date_time=o.task.activity_date_time||t().toDate(),o.task.assignee_contact_id=o.task.assignee_contact_id||[],o.task.source_contact_id=o.task.source_contact_id||h.LOGGED_IN_CONTACT_ID,o.task.target_contact_id=o.task.target_contact_id||[h.CONTACT_ID],o.contacts={target:w("target"),assignee:w("assignee")},o.cacheAssignment=y,o.cacheContact=_,o.cancel=k,o.confirm=$,o.dpOpen=b,o.refreshContacts=S,function(){C(),o.task.id&&D(o.task.target_contact_id)}()}return n.__name="ModalTaskController",n.$inject=["$filter","$log","$q","$rootElement","$rootScope","$scope","$timeout","$uibModal","$uibModalInstance","$dialog","assignmentService","contactService","taskService","HR_settings","data","config"],n}),define("tasks-assignments/modules/tasks-assignments.controllers",["common/angular","tasks-assignments/controllers/assignments.controller","tasks-assignments/controllers/calendar.controller","tasks-assignments/controllers/date-list.controller","tasks-assignments/controllers/document-list.controller","tasks-assignments/controllers/document.controller","tasks-assignments/controllers/external-page.controller","tasks-assignments/controllers/main.controller","tasks-assignments/controllers/settings.controller","tasks-assignments/controllers/task-list.controller","tasks-assignments/controllers/task.controller","tasks-assignments/controllers/dashboard/nav-main.controller","tasks-assignments/controllers/dashboard/top-bar.controller","tasks-assignments/controllers/modal/modal-assignment-activity.controller","tasks-assignments/controllers/modal/modal-assignment.controller","tasks-assignments/controllers/modal/modal-dialog.controller","tasks-assignments/controllers/modal/modal-document.controller","tasks-assignments/controllers/modal/modal-progress.controller","tasks-assignments/controllers/modal/modal-reminder.controller","tasks-assignments/controllers/modal/modal-task-migrate.controller","tasks-assignments/controllers/modal/modal-task.controller"],function(e,t,n,a,s,r,i,o,c,l,u,d,m,f,g,v,p,h,y,_,k){"use strict";return e.module("tasks-assignments.controllers",[]).controller(t.__name,t).controller(n.__name,n).controller(a.__name,a).controller(s.__name,s).controller(r.__name,r).controller(i.__name,i).controller(o.__name,o).controller(c.__name,c).controller(l.__name,l).controller(u.__name,u).controller(d.__name,d).controller(m.__name,m).controller(f.__name,f).controller(g.__name,g).controller(v.__name,v).controller(p.__name,p).controller(h.__name,h).controller(y.__name,y).controller(_.__name,_).controller(k.__name,k)}),define("tasks-assignments/vendor/angular-bootstrap-calendar",["common/moment"],function(e){"use strict";angular.module("mwl.calendar",[]),angular.module("mwl.calendar").run(["$templateCache",function(e){e.put("src/templates/calendar.html",'
The value passed to the view attribute of the calendar is not set
The value passed to current-day attribute of the calendar is not set
'),e.put("src/templates/calendarCustom.html",'
The value passed to the view attribute of the calendar is not set
The value passed to current-day attribute of the calendar is not set
'), e.put("src/templates/calendarDayView.html",'
'),e.put("src/templates/calendarMonthDay.html",'
'),e.put("src/templates/calendarMonthDayCustom.html",'
  • Tasks
  • Documents
'),e.put("src/templates/calendarMonthEventsList.html",'
'),e.put("src/templates/calendarMonthView.html",'
'),e.put("src/templates/calendarMonthViewCustom.html",'
'),e.put("src/templates/calendarSlideBox.html",'
'),e.put("src/templates/calendarWeekView.html",'

'),e.put("src/templates/calendarWeekViewCustom.html",''),e.put("src/templates/calendarYearView.html",'
')}]),angular.module("mwl.calendar").constant("moment",e),angular.module("mwl.calendar").factory("calendarTitle",["moment","calendarConfig",function(e,t){function n(n){return e(n).format(t.titleFormats.day)}function a(n){return t.titleFormats.week.replace("{week}",e(n).week()).replace("{year}",e(n).format("YYYY"))}function s(n){return e(n).format(t.titleFormats.month)}function r(n){return e(n).format(t.titleFormats.year)}return{day:n,week:a,month:s,year:r}}]),angular.module("mwl.calendar").factory("calendarHelper",["moment","calendarConfig",function(e,t){function n(t,n,a,s){return t=e(t),n=e(n),a=e(a),s=e(s),t.isAfter(a)&&t.isBefore(s)||n.isAfter(a)&&n.isBefore(s)||t.isBefore(a)&&n.isAfter(s)||t.isSame(a)||n.isSame(s)}function a(t,a,s){var r=e(t).startOf(a),i=e(t).endOf(a);return s.filter(function(e){return n(e.startsAt,e.endsAt,r,i)})}function s(e){return e.filter(function(e){return!1!==e.incrementsBadgeTotal}).length}function r(){for(var n=[],a=0;a<7;)n.push(e().weekday(a++).format(t.dateFormats.weekDay));return n}function i(e,t,a){return e.filter(function(e){return n(e.startsAt,e.endsAt,t,a)})}function o(n,r){for(var o=[],c=a(r,"year",n),l=e(r).startOf("year"),u=0;u<12;){var d=l.clone(),m=d.clone().endOf("month"),f=i(c,d,m);o.push({label:d.format(t.dateFormats.month),isToday:d.isSame(e().startOf("month")),events:f,date:d,badgeTotal:s(f)}),l.add(1,"month"),u++}return o}function c(t,n,r){for(var o=a(r,"month",t),c=a(r,"month",n),l=e(r).startOf("month"),u=l.clone().startOf("week"),d=e(r).endOf("month").endOf("week"),m=[],f=e().startOf("day");u.isBefore(d);){var g=u.month()===e(r).month(),v=[],p=[];g&&(v=i(o,u,u.clone().endOf("day")),p=i(c,u,u.clone().endOf("day"))),m.push({label:u.date(),date:u.clone(),inMonth:g,isPast:f.isAfter(u),isToday:f.isSame(u),isFuture:f.isBefore(u),isWeekend:[0,6].indexOf(u.day())>-1,events:v,documents:p,badgeEventsTotal:s(v),badgeDocumentsTotal:s(p)}),u.add(1,"day")}return m}function l(n,a,s){for(var r=e(s).startOf("week"),o=e(s).endOf("week"),c=r.clone(),l=[],u=[],d=10,m=e().startOf("day");l.length<7;)u.push([]),l.push({weekDayLabel:c.format(t.dateFormats.weekDay),date:c.clone(),dayLabel:c.format(t.dateFormats.day),isPast:c.isBefore(m),isToday:c.isSame(m),isFuture:c.isAfter(m),isWeekend:[0,6].indexOf(c.day())>-1}),c.add(1,"day");var f=i(n.concat(a),r,o).map(function(t){var n,a,s=e(t.startsAt).startOf("day"),i=e(t.endsAt).startOf("day"),c=e(r).startOf("day"),l=e(o).startOf("day");return n=s.isBefore(c)||s.isSame(c)?0:s.diff(c,"days"),i.isAfter(l)&&(i=l),s.isBefore(c)&&(s=c),a=e(i).diff(s,"days")+1,t.daySpan=a,t.dayOffset=n,t.overdue=s.isBefore(m),u[n].push(t),t});return u.map(function(e){d=e.length>d?e.length:d}),u.map(function(e){if(e.lengthu&&(t.height=0),t.left=0,t}).filter(function(e){return e.height>0}).map(function(e){var t=!0;return m.forEach(function(a,s){var r=!0;a.forEach(function(t){(n(e.startsAt,e.endsAt,t.startsAt,t.endsAt)||n(t.startsAt,t.endsAt,e.startsAt,e.endsAt))&&(r=!1)}),r&&t&&(t=!1,e.left=150*s,m[s].push(e))}),t&&(e.left=150*m.length,m.push([e])),e})}return{getWeekDayNames:r,getYearView:o,getMonthView:c,getWeekView:l,getDayView:u}}]),angular.module("mwl.calendar").service("calendarDebounce",["$timeout",function(e){function t(t,n,a){var s;return function(){function r(){s=null,a||t.apply(i,o)}var i=this,o=arguments,c=a&&!s;e.cancel(s),s=e(r,n),c&&t.apply(i,o)}}return t}]),angular.module("mwl.calendar").provider("calendarConfig",function(){var e={hour:"ha",day:"D MMM",month:"MMMM",weekDay:"dddd"},t={day:"dddd D MMMM, YYYY",week:"Week {week} of {year}",month:"MMMM YYYY",year:"YYYY"},n={eventsLabel:"Events",timeLabel:"Time"},a=this;a.setDateFormats=function(t){return angular.extend(e,t),a},a.setTitleFormats=function(e){return angular.extend(t,e),a},a.setI18nStrings=function(e){return angular.extend(n,e),a},a.$get=function(){return{dateFormats:e,titleFormats:t,i18nStrings:n}}}),angular.module("mwl.calendar").filter("calendarTruncateEventTitle",function(){return function(e,t,n){return e?e.length>=t&&e.length/20>n/30?e.substr(0,t)+"...":e:""}}),angular.module("mwl.calendar").filter("calendarLimitTo",function(){return function(e,t,n){return t=Math.abs(Number(t))===1/0?Number(t):parseInt(t),isNaN(t)?e:(angular.isNumber(e)&&(e=e.toString()),angular.isArray(e)||angular.isString(e)?(n=!n||isNaN(n)?0:parseInt(n),n=n<0&&n>=-e.length?e.length+n:n,t>=0?e.slice(n,n+t):0===n?e.slice(t,e.length):e.slice(Math.max(0,n+t),n)):e)}}),angular.module("mwl.calendar").directive("mwlDateModifier",function(){return{restrict:"A",controller:["$element","$attrs","$scope","moment",function(e,t,n,a){function s(){angular.isDefined(t.setToToday)?n.date=new Date:angular.isDefined(t.increment)?n.date=a(n.date).add(1,n.increment).toDate():angular.isDefined(t.decrement)&&(n.date=a(n.date).subtract(1,n.decrement).toDate()),n.$apply()}e.bind("click",s),n.$on("$destroy",function(){e.unbind("click",s)})}],scope:{date:"=",increment:"=",decrement:"="}}}),angular.module("mwl.calendar").directive("mwlCollapseFallback",["$injector",function(e){return e.has("collapseDirective")?{}:{restrict:"A",controller:["$scope","$attrs","$element",function(e,t,n){var a=e.$watch(t.mwlCollapseFallback,function(e){e?n.addClass("ng-hide"):n.removeClass("ng-hide")}),s=e.$on("$destroy",function(){s(),a()})}]}}]),angular.module("mwl.calendar").directive("mwlCalendarYear",function(){return{templateUrl:"src/templates/calendarYearView.html",restrict:"EA",require:"^mwlCalendar",scope:{events:"=",currentDay:"=",onEventClick:"=",onEditEventClick:"=",onDeleteEventClick:"=",editEventHtml:"=",deleteEventHtml:"=",autoOpen:"=",onTimespanClick:"="},controller:["$scope","moment","calendarHelper",function(e,t,n){var a=this,s=!0;e.$on("calendar.refreshView",function(){a.view=n.getYearView(e.events,e.currentDay),e.autoOpen&&s&&(s=!1,a.view.forEach(function(n){t(e.currentDay).startOf("month").isSame(n.date)&&a.monthClicked(n,!0)}))}),a.monthClicked=function(t,n){n||e.onTimespanClick({calendarDate:t.date.toDate()}),a.openRowIndex=null;var s=a.view.indexOf(t);s===a.openMonthIndex?a.openMonthIndex=null:(a.openMonthIndex=s,a.openRowIndex=Math.floor(s/4))}}],controllerAs:"vm",link:function(e,t,n,a){e.vm.calendarCtrl=a}}}),angular.module("mwl.calendar").directive("mwlCalendarWeek",function(){return{templateUrl:"src/templates/calendarWeekViewCustom.html",restrict:"EA",require:"^mwlCalendar",scope:{documents:"=",events:"=",currentDay:"=",onEventClick:"="},controller:["$scope","calendarHelper",function(e,t){var n=this;e.$on("calendar.refreshView",function(){n.view=t.getWeekView(e.events,e.documents,e.currentDay)})}],controllerAs:"vm",link:function(e,t,n,a){e.vm.calendarCtrl=a}}}),angular.module("mwl.calendar").directive("mwlCalendarSlideBox",function(){return{restrict:"EA",templateUrl:"src/templates/calendarSlideBox.html",replace:!0,controller:["$scope","$sce",function(e,t){var n=this;n.$sce=t;var a=e.$watch("isOpen",function(e){n.shouldCollapse=!e}),s=e.$on("$destroy",function(){s(),a()})}],controllerAs:"vm",require:["^?mwlCalendarMonth","^?mwlCalendarYear"],link:function(e,t,n,a){e.isMonthView=!!a[0],e.isYearView=!!a[1]},scope:{isOpen:"=",events:"=",onEventClick:"=",editEventHtml:"=",onEditEventClick:"=",deleteEventHtml:"=",onDeleteEventClick:"="}}}),angular.module("mwl.calendar").directive("mwlCalendarMonth",function(){return{templateUrl:"src/templates/calendarMonthViewCustom.html",restrict:"EA",require:"^mwlCalendar",scope:{events:"=",documents:"=",currentDay:"=",onEventClick:"=",onEditEventClick:"=",onDeleteEventClick:"=",editEventHtml:"=",deleteEventHtml:"=",autoOpen:"=",onTimespanClick:"="},controller:["$scope","moment","calendarHelper",function(e,t,n){var a=this,s=!0;e.$on("calendar.refreshView",function(){a.weekDays=n.getWeekDayNames(),a.view=n.getMonthView(e.events,e.documents,e.currentDay);var r=Math.floor(a.view.length/7);a.monthOffsets=[];for(var i=0;i-1&&(n.highlightClass="day-highlight dh-event-"+e.type)}})}}],controllerAs:"vm",link:function(e,t,n,a){e.vm.calendarCtrl=a}}}),angular.module("mwl.calendar").directive("mwlCalendarDay",function(){return{templateUrl:"src/templates/calendarDayView.html",restrict:"EA",require:"^mwlCalendar",scope:{events:"=",currentDay:"=",onEventClick:"=",dayViewStart:"=",dayViewEnd:"=",dayViewSplit:"="},controller:["$scope","$timeout","moment","calendarHelper","calendarConfig",function(e,t,n,a,s){function r(){i=n(e.dayViewStart||"00:00","HH:mm"),o=n(e.dayViewEnd||"23:00","HH:mm"),c.dayViewSplit=parseInt(e.dayViewSplit),c.hourHeight=60/e.dayViewSplit*30,c.hours=[];for(var t=n(i),a=0;a<=o.diff(i,"hours");a++)c.hours.push({label:t.format(s.dateFormats.hour)}),t.add(1,"hour")}var i,o,c=this;c.calendarConfig=s;var l=n.locale();e.$on("calendar.refreshView",function(){l!==n.locale()&&(l=n.locale(),r()),c.view=a.getDayView(e.events,e.currentDay,i.hours(),o.hours(),c.hourHeight)}),r()}],controllerAs:"vm"}}),angular.module("mwl.calendar").directive("mwlCalendar",function(){return{templateUrl:"src/templates/calendarCustom.html",restrict:"EA",scope:{events:"=",documents:"=",view:"=",viewTitle:"=",currentDay:"=",editEventHtml:"=",deleteEventHtml:"=",autoOpen:"=",onEventClick:"&",onEditEventClick:"&",onDeleteEventClick:"&",onTimespanClick:"&",onDrillDownClick:"&",dayViewStart:"@",dayViewEnd:"@",dayViewSplit:"@"},controller:["$scope","$timeout","moment","calendarTitle","calendarDebounce",function(e,t,n,a,s){var r=this;e.events=e.events||[],e.documents=e.documents||[],r.changeView=function(t,n){e.view=t,e.currentDay=n},r.drillDown=function(t){var a=n(t).toDate(),s={year:"month",month:"day",week:"day"};!1!==e.onDrillDownClick({calendarDate:a,calendarNextView:s[e.view]})&&r.changeView(s[e.view],a)};var i=n(e.currentDay),o=angular.copy(e.view),c=s(function(){a[e.view]&&(e.viewTitle=a[e.view](e.currentDay));var t=n(e.currentDay),s=!0;i.clone().startOf(e.view).isSame(t.clone().startOf(e.view))&&!i.isSame(t)&&e.view===o&&(s=!1),i=t,o=angular.copy(e.view),s&&e.$broadcast("calendar.refreshView")},50),l=e.$watch(function(){return n.locale()},c),u=[];u.push(l),u.push(e.$watch("currentDay",c)),u.push(e.$watch("view",c)),u.push(e.$watch("events",c,!0)),u.push(e.$watch("documents",c,!0));var d=e.$on("$destroy",function(){u.forEach(function(e){e()})});u.push(d)}]}})}),angular.module("checklist-model",[]).directive("checklistModel",["$parse","$compile",function(e,t){function n(e,t,n){if(angular.isArray(e))for(var a=e.length;a--;)if(n(e[a],t))return!0;return!1}function a(e,t,a){return e=angular.isArray(e)?e:[],n(e,t,a)||e.push(t),e}function s(e,t,n){if(angular.isArray(e))for(var a=e.length;a--;)if(n(e[a],t)){e.splice(a,1);break}return e}function r(r,i,o){function c(e,t){r.checked=n(e,m,f)}t(i)(r);var l=e(o.checklistModel),u=l.assign,d=e(o.checklistChange),m=e(o.checklistValue)(r.$parent),f=angular.equals;o.hasOwnProperty("checklistComparator")&&(f=e(o.checklistComparator)(r.$parent)),r.$watch("checked",function(e,t){if(e!==t){var n=l(r.$parent);!0===e?u(r.$parent,a(n,m,f)):u(r.$parent,s(n,m,f)),d&&d(r)}}),angular.isFunction(r.$parent.$watchCollection)?r.$parent.$watchCollection(o.checklistModel,c):r.$parent.$watch(o.checklistModel,c,!0)}return{restrict:"A",priority:1e3,terminal:!0,scope:!0,compile:function(e,t){if("INPUT"!==e[0].tagName||"checkbox"!==t.type)throw'checklist-model should be applied to `input[type="checkbox"]`.';if(!t.checklistValue)throw"You should provide `checklist-value`.";return e.removeAttr("checklist-model"),e.attr("ng-model","checked"),r}}}]),"undefined"!=typeof module&&"undefined"!=typeof exports&&module.exports===exports&&(module.exports="ui.router"),function(e,t,n){function a(e,t){return F(new(F(function(){},{prototype:e})),t)}function s(e){return N(arguments,function(t){t!==e&&N(t,function(t,n){e.hasOwnProperty(n)||(e[n]=t)})}),e}function r(e,t){var n=[];for(var a in e.path){if(e.path[a]!==t.path[a])break;n.push(e.path[a])}return n}function i(e){if(Object.keys)return Object.keys(e);var t=[];return N(e,function(e,n){t.push(n)}),t}function o(e,t){if(Array.prototype.indexOf)return e.indexOf(t,Number(arguments[2])||0);var n=e.length>>>0,a=Number(arguments[2])||0;for(a=a<0?Math.ceil(a):Math.floor(a),a<0&&(a+=n);a=0||(u.push(s[m]),l[s[m]]=e[s[m]]);return F({},l,t)}function l(e,t,n){if(!n){n=[];for(var a in e)n.push(a)}for(var s=0;s "));if(y[n]=a,R(e))p.push(n,[function(){return t.get(e)}],l);else{var s=t.annotate(e);N(s,function(e){e!==n&&c.hasOwnProperty(e)&&f(c[e],e)}),p.push(n,e,s)}h.pop(),y[n]=r}}function g(e){return L(e)&&e.then&&e.$$promises}if(!L(c))throw new Error("'invocables' must be an object");var v=i(c||{}),p=[],h=[],y={};return N(c,f),c=h=y=null,function(a,r,i){function o(){--_||(k||s(y,r.$$values),f.$$values=y,f.$$promises=f.$$promises||!0,delete f.$$inheritedValues,l.resolve(y))}function c(e){f.$$failure=e,l.reject(e)}if(g(a)&&i===n&&(i=r,r=a,a=null),a){if(!L(a))throw new Error("'locals' must be an object")}else a=u;if(r){if(!g(r))throw new Error("'parent' must be a promise returned by $resolve.resolve()")}else r=d;var l=e.defer(),f=l.promise,h=f.$$promises={},y=F({},a),_=1+p.length/3,k=!1;if(O(r.$$failure))return c(r.$$failure),f;r.$$inheritedValues&&s(y,m(r.$$inheritedValues,v)),F(h,r.$$promises),r.$$values?(k=s(y,m(r.$$values,v)),f.$$inheritedValues=m(r.$$values,v),o()):(r.$$inheritedValues&&(f.$$inheritedValues=m(r.$$inheritedValues,v)),r.then(o,c));for(var $=0,b=p.length;$=0));)y=r(h.id,h.type,h.cfg,"path"),d+=i(h.segment,y.type.pattern.source,y.squash,y.isOptional),f.push(h.segment),m=l.lastIndex;_=e.substring(m);var k=_.indexOf("?");if(k>=0){var $=this.sourceSearch=_.substring(k);if(_=_.substring(0,k),this.sourcePath=e.substring(0,m+k),$.length>0)for(m=0;c=u.exec($);)h=o(c,!0),y=r(h.id,h.type,h.cfg,"search"),m=l.lastIndex}else this.sourcePath=e,this.sourceSearch="";d+=i(_)+(!1===t.strict?"/?":"")+"$",f.push(_),this.regexp=new RegExp(d,t.caseInsensitive?"i":n),this.prefix=f[0],this.$$paramNames=p}function y(e){F(this,e)}function _(){function e(e){return null!=e?e.toString().replace(/\//g,"%2F"):e}function s(e){return null!=e?e.toString().replace(/%2F/g,"/"):e}function r(){return{strict:v,caseInsensitive:m}}function c(e){return I(e)||P(e)&&I(e[e.length-1])}function l(){for(;b.length;){var e=b.shift();if(e.pattern)throw new Error("You cannot override a type's .pattern at runtime.");t.extend(k[e.name],d.invoke(e.def))}}function u(e){F(this,e||{})}U=this;var d,m=!1,v=!0,p=!1,k={},$=!0,b=[],w={string:{encode:e,decode:s,is:function(e){return null==e||!O(e)||"string"==typeof e},pattern:/[^\/]*/},int:{encode:e,decode:function(e){return parseInt(e,10)},is:function(e){return O(e)&&this.decode(e.toString())===e},pattern:/\d+/},bool:{encode:function(e){return e?1:0},decode:function(e){return 0!==parseInt(e,10)},is:function(e){return!0===e||!1===e},pattern:/0|1/},date:{encode:function(e){return this.is(e)?[e.getFullYear(),("0"+(e.getMonth()+1)).slice(-2),("0"+e.getDate()).slice(-2)].join("-"):n},decode:function(e){if(this.is(e))return e;var t=this.capture.exec(e);return t?new Date(t[1],t[2]-1,t[3]):n},is:function(e){return e instanceof Date&&!isNaN(e.valueOf())},equals:function(e,t){return this.is(e)&&this.is(t)&&e.toISOString()===t.toISOString()},pattern:/[0-9]{4}-(?:0[1-9]|1[0-2])-(?:0[1-9]|[1-2][0-9]|3[0-1])/,capture:/([0-9]{4})-(0[1-9]|1[0-2])-(0[1-9]|[1-2][0-9]|3[0-1])/},json:{encode:t.toJson,decode:t.fromJson,is:t.isObject,equals:t.equals,pattern:/[^\/]*/},any:{encode:t.identity,decode:t.identity,equals:t.equals,pattern:/.*/}};_.$$getDefaultValue=function(e){if(!c(e.value))return e.value;if(!d)throw new Error("Injectable functions cannot be called at configuration time");return d.invoke(e.value)},this.caseInsensitive=function(e){return O(e)&&(m=e),m},this.strictMode=function(e){return O(e)&&(v=e),v},this.defaultSquashPolicy=function(e){if(!O(e))return p;if(!0!==e&&!1!==e&&!R(e))throw new Error("Invalid squash policy: "+e+". Valid policies: false, true, arbitrary-string");return p=e,e},this.compile=function(e,t){return new h(e,F(r(),t))},this.isMatcher=function(e){if(!L(e))return!1;var t=!0;return N(h.prototype,function(n,a){I(n)&&(t=t&&O(e[a])&&I(e[a]))}),t},this.type=function(e,t,n){if(!O(t))return k[e];if(k.hasOwnProperty(e))throw new Error("A type named '"+e+"' has already been defined.");return k[e]=new y(F({name:e},t)),n&&(b.push({name:e,def:n}),$||l()),this},N(w,function(e,t){k[t]=new y(F({name:t},e))}),k=a(k,{}),this.$get=["$injector",function(e){return d=e,$=!1,l(),N(w,function(e,t){k[t]||(k[t]=new y(e))}),this}],this.Param=function(e,t,a,s){function r(){if(!d)throw new Error("Injectable functions cannot be called at configuration time");var e=d.invoke(a.$$fn);if(null!==e&&e!==n&&!m.type.is(e))throw new Error("Default value ("+e+") for parameter '"+m.id+"' is not an instance of Type ("+m.type.name+")");return e}function l(e){function t(e){return function(t){return t.from===e}}return e=function(e){var n=g(f(m.replace,t(e)),function(e){return e.to});return n.length?n[0]:e}(e),O(e)?m.type.$normalize(e):r()}function u(){return"{Param:"+e+" "+t+" squash: '"+_+"' optional: "+h+"}"}var m=this;a=function(e){var t=L(e)?i(e):[];return-1===o(t,"value")&&-1===o(t,"type")&&-1===o(t,"squash")&&-1===o(t,"array")&&(e={value:e}),e.$$fn=c(e.value)?e.value:function(){return e.value},e}(a),t=function(t,n,a){if(t.type&&n)throw new Error("Param '"+e+"' has two type configurations.");return n||(t.type?t.type instanceof y?t.type:new y(t.type):"config"===a?k.any:k.string)}(a,t,s);var v=function(){var t={array:"search"===s&&"auto"},n=e.match(/\[\]$/)?{array:!0}:{};return F(t,n,a).array}();t=v?t.$asArray(v,"search"===s):t,"string"!==t.name||v||"path"!==s||a.value!==n||(a.value="");var h=a.value!==n,_=function(e,t){var n=e.squash;if(!t||!1===n)return!1;if(!O(n)||null==n)return p;if(!0===n||R(n))return n;throw new Error("Invalid squash policy: '"+n+"'. Valid policies: false, true, or arbitrary string")}(a,h),$=function(e,t,a,s){var r,i,c=[{from:"",to:a||t?n:""},{from:null,to:a||t?n:""}];return r=P(e.replace)?e.replace:[],R(s)&&r.push({from:s,to:n}),i=g(r,function(e){return e.from}),f(c,function(e){return-1===o(i,e.from)}).concat(r)}(a,v,h,_);F(this,{id:e,type:t, location:s,array:v,squash:_,replace:$,isOptional:h,value:l,dynamic:n,config:a,toString:u})},u.prototype={$$new:function(){return a(this,F(new u,{$$parent:this}))},$$keys:function(){for(var e=[],t=[],n=this,a=i(u.prototype);n;)t.push(n),n=n.$$parent;return t.reverse(),N(t,function(t){N(i(t),function(t){-1===o(e,t)&&-1===o(a,t)&&e.push(t)})}),e},$$values:function(e){var t={},n=this;return N(n.$$keys(),function(a){t[a]=n[a].value(e&&e[a])}),t},$$equals:function(e,t){var n=!0,a=this;return N(a.$$keys(),function(s){var r=e&&e[s],i=t&&t[s];a[s].type.equals(r,i)||(n=!1)}),n},$$validates:function(e){var a,s,r,i,o,c=this.$$keys();for(a=0;a=0)throw new Error("State must have a valid name");if(D.hasOwnProperty(n))throw new Error("State '"+n+"'' is already defined");var s=-1!==n.indexOf(".")?n.substring(0,n.lastIndexOf(".")):R(t.parent)?t.parent:L(t.parent)&&R(t.parent.name)?t.parent.name:"";if(s&&!D[s])return f(s,t.self);for(var r in E)I(E[r])&&(t[r]=E[r](t,E.$delegates[r]));return D[n]=t,!t[T]&&t.url&&e.when(t.url,["$match","$stateParams",function(e,n){C.$current.navigable==t&&l(e,n)||C.transitionTo(t,e,{inherit:!0,location:!1})}]),v(n),t}function h(e){return e.indexOf("*")>-1}function y(e){for(var t=e.split("."),n=C.$current.name.split("."),a=0,s=t.length;a=x;a--)i=g[a],i.self.onExit&&o.invoke(i.self.onExit,i.self,i.locals.globals),i.locals=null;for(a=x;a=0?s:s+"@"+(r?r.state.name:"")}function T(e,t){var n,a=e.match(/^\s*({[^}]*})\s*$/);if(a&&(e=t+"("+a[1]+")"),!(n=e.replace(/\n/g," ").match(/^([^(]+?)\s*(\((.*)\))?$/))||4!==n.length)throw new Error("Invalid state ref '"+e+"'");return{state:n[1],paramExpr:n[3]||null}}function E(e){var t=e.parent().inheritedData("$uiView");if(t&&t.state&&t.state.name)return t.state}function x(e,n){var a=["location","inherit","reload","absolute"];return{restrict:"A",require:["?^uiSrefActive","?^uiSrefActiveEq"],link:function(s,r,i,o){var c=T(i.uiSref,e.current.name),l=null,u=E(r)||e.$current,d="[object SVGAnimatedString]"===Object.prototype.toString.call(r.prop("href"))?"xlink:href":"href",m=null,f="A"===r.prop("tagName").toUpperCase(),g="FORM"===r[0].nodeName,v=g?"action":d,p=!0,h={relative:u,inherit:!0},y=s.$eval(i.uiSrefOpts)||{};t.forEach(a,function(e){e in y&&(h[e]=y[e])});var _=function(n){if(n&&(l=t.copy(n)),p){m=e.href(c.state,l,h);var a=o[1]||o[0];if(a&&a.$$addStateInfo(c.state,l),null===m)return p=!1,!1;i.$set(v,m)}};c.paramExpr&&(s.$watch(c.paramExpr,function(e,t){e!==l&&_(e)},!0),l=t.copy(s.$eval(c.paramExpr))),_(),g||r.bind("click",function(t){if(!((t.which||t.button)>1||t.ctrlKey||t.metaKey||t.shiftKey||r.attr("target"))){var a=n(function(){e.go(c.state,l,h)});t.preventDefault();var s=f&&!m?1:0;t.preventDefault=function(){s--<=0&&n.cancel(a)}}})}}}function A(e,t,n){return{restrict:"A",controller:["$scope","$element","$attrs",function(t,a,s){function r(){i()?a.addClass(c):a.removeClass(c)}function i(){for(var e=0;e=t&&(e<=n||null===n)||null===e&&null===n}return t.debug("Filter: filterByDateField"),function(e,t,a,s){if(!e)return null;var r=new Date,i=[],o=0,c=e.length,l=r.setHours(0,0,0,0);if(!a)throw new Error("Field name to filter a list is required");if(!c||!t)return e;switch(t){case"overdue":var u;for(o;ol&&d>=h.setHours(0,0,0,0)&&d=l&&new Date(e[o][a]).setHours(0,0,0,0)<=_&&i.push(e[o]);break;case"dueInNinetyDays":var k=r.setDate(r.getDate()+90);for(o;o=l&&new Date(e[o][a]).setHours(0,0,0,0)<=k&&i.push(e[o])}return i}}return e.__name="filterByDateField",e.$inject=["$filter","$log"],e}),define("tasks-assignments/filters/date-parse.filter",["common/moment"],function(e){"use strict";function t(t,n){return n.debug("Filter: dateParse"),function(t){return e(t).toDate()}}return t.__name="dateParse",t.$inject=["$filter","$log"],t}),define("tasks-assignments/filters/date-type.filter",["common/lodash"],function(e){"use strict";function t(t,n,a){return a.debug("Filter: filterBy.dateType"),function(t,n){var a=[];return t.length&&n.length?(e.forEach(t,function(t){var s=t.dateContactList;s?e.forEach(s,function(e){if(-1!==n.indexOf(e.type))return a.push(t),!1}):-1!==n.indexOf(t.type)&&a.push(t)}),a):t}}return t.__name="filterByDateType",t.$inject=["$filter","$rootScope","$log"],t}),define("tasks-assignments/filters/date.filter",["common/moment"],function(e){"use strict";function t(t,n){return n.debug("Filter: filterBy.date"),function(t,n){if(!t||!t.length||!n)return[];var a,s,r,i=[],o=0,c=t.length;for(a=e().startOf(n),s=e().endOf(n);oa&&ralterHtml('~/crmCaseType/edit.html', function (phpQueryObject $doc) { + _tasksAssignments_change_workflow_help_text($doc); + _tasksAssignments_remove_non_civihr_tabs_from_workflow($doc); + _tasksAssignments_allow_only_add_timeline_action($doc); + }); + + $changeSet->alterHtml('~/crmCaseType/timelineTable.html', function (phpQueryObject $doc) { + _tasksAssignments_change_add_activity_dropdown_placeholder($doc); + _tasksAssignments_change_column_text($doc); + _tasksAssignments_remove_columns_from_timeline($doc); + }); + + $angular->add($changeSet); +} + +function tasksAssignments_civicrm_angularModules(&$angularModules) { + $angularModules['crm-tasks-workflows'] = array( + 'ext' => 'civicrm', + 'js' => array( + 'tools/extensions/civihr_tasks/uk.co.compucorp.civicrm.tasksassignments/js/dist/crm-tasks-workflows.min.js') + ); +} + /** * Moves some of the items of the "Administer > Civi Case" sub menu under the "Administer > Tasks" sub menu * @@ -275,13 +311,19 @@ function tasksassignments_civicrm_navigationMenu(&$params) { */ function _tasksassignments_moveCiviCaseAdminSubMenuItemsUnderTaskAdminSubMenu(&$params) { $administerMenuItems = &_tasksassignments_getAdministerMenuItems($params); - $menuItemsToClone = _tasksassignments_filterMenuItemsOfAdministerSubMenu($administerMenuItems, 'CiviCase', ['Case Types', 'Case Statuses']); + $menuItemsToClone = _tasksassignments_filterMenuItemsOfAdministerSubMenu( + $administerMenuItems, + 'CiviCase', + ['Case Types'] + ); + + _tasksassignments_cloneMenuItemsInAdministerSubMenuAndChangeLabels( + $administerMenuItems, + $menuItemsToClone, + 'tasksassignments_administer', + ['Case Types' => 'Workflow Types'] + ); - _tasksassignments_cloneMenuItemsInAdministerSubMenuAndChangeLabels($administerMenuItems, $menuItemsToClone, 'tasksassignments_administer', [ - 'Case Types' => 'Workflows', - 'Case Statuses' => 'Workflows Status' - ]); - _tasksassignments_deleteAdministerSubMenu($administerMenuItems, 'CiviCase'); } @@ -323,7 +365,7 @@ function _tasksassignments_filterMenuItemsOfAdministerSubMenu($administerMenuIte * * @param array $administerMenuItems * @param array $menuItems - * @param array $subMenuName + * @param string $subMenuName * @param array $labelsMapping */ function _tasksassignments_cloneMenuItemsInAdministerSubMenuAndChangeLabels(&$administerMenuItems, $menuItems, $subMenuName, $labelsMapping) { @@ -331,7 +373,7 @@ function _tasksassignments_cloneMenuItemsInAdministerSubMenuAndChangeLabels(&$ad foreach ($menuItems as $item) { $itemID = $item['attributes']['navID']; - $item['attributes']['parentID'] = $subMenuTargetID; + $item['attributes']['parentID'] = $subMenuTargetID; if ($labelsMapping[$item['attributes']['name']]) { $item['attributes']['label'] = $labelsMapping[$item['attributes']['name']]; @@ -344,7 +386,7 @@ function _tasksassignments_cloneMenuItemsInAdministerSubMenuAndChangeLabels(&$ad /** * Deletes a sub menu of the given name from the Administer main menu * - * @param array $administerMenuItems + * @param array $administerMenuItems * @param string $subMenuName */ function _tasksassignments_deleteAdministerSubMenu(&$administerMenuItems, $subMenuName) { @@ -409,3 +451,98 @@ function tasksassignments_extensionsPageRedirect() { ); CRM_Utils_System::redirect($url); } + +/** + * Modifies the placeholder of Add Activity Dropdown + * + * @param phpQueryObject $doc + */ +function _tasksAssignments_change_add_activity_dropdown_placeholder(phpQueryObject $doc) { + $addActivityDropDown = $doc->find('[crm-options=activityTypeOptions]'); + $newPlaceHolder = 'Add task or document'; + + $addActivityDropDown->attr('placeholder', $newPlaceHolder); +} +/** + * Modifies the help text for the Workflow Create/Edit screen. + * + * @param phpQueryObject $doc + */ +function _tasksAssignments_change_workflow_help_text(phpQueryObject $doc) { + $helpBlock = $doc->find('.crmCaseType .help'); + + $text = '

' . ts('Configure your workflow timelines below. Each workflow type can have several + different task timelines. Each timeline allows you to set different tasks and documents which + become part of your task list on your task dashboard. As such different timelines can be setup + in the system if slightly different steps are required when the workflow is used for different + staff types or situations. For example you may wish to configure a different joining timeline + for head office staff as for regional staff.') . '

'; + $text .= '

' . ts('Workflows are normally used to manage joining and exiting processes but can + be used for other processes too, such as a person going on maternity leave or moving region or + location.') . '

'; + + $helpBlock->html($text); + // Places the help text outside of the case type form: + $helpBlock->insertBefore('.crmCaseType'); +} + +/** + * Removes tabs that are not relevant for CiviHR from the workflow configuration screen. + * + * @param phpQueryObject $doc + */ +function _tasksAssignments_remove_non_civihr_tabs_from_workflow (phpQueryObject $doc) { + $tabs = ['roles', 'statuses', 'actType']; + + foreach ($tabs as $tab) { + $doc->find('a[href=#acttab-' . $tab . ']')->remove(); + $doc->find('#acttab-' . $tab)->remove(); + } +} + +/** + * Removes the Workflow configuration's actions dropdown and replaces it with a + * button that only allows the "Add timeline" action. + * + * @param phpQueryObject $doc + */ +function _tasksAssignments_allow_only_add_timeline_action (phpQueryObject $doc) { + $actionDropdown = $doc->find('select[ng-model="newActivitySetWorkflow"]'); + $addTimelineBtn = ' + '; + + $actionDropdown->after($addTimelineBtn); + $actionDropdown->remove(); +} + +/** + * Remove columns from timeline + * + * @param phpQueryObject $doc + */ +function _tasksAssignments_remove_columns_from_timeline (phpQueryObject $doc) { + $columnsToBeRemovedFromTimeline = [ 'Status', 'Reference', 'Select' ]; + + foreach ($columnsToBeRemovedFromTimeline as $columnName) { + $columnHeader = $doc->find('table th:contains("' . $columnName . '"'); + $columnIndex = $doc->find('table th')->index($columnHeader) + 1; + $columnBody = $doc->find('table td:nth-child('. $columnIndex .')'); + + $columnHeader->remove(); + $columnBody->remove(); + } +} + +/** + * Change column text for timeline + * + * @param phpQueryObject $doc + */ +function _tasksAssignments_change_column_text (phpQueryObject $doc) { + $doc->find('th:contains("Activity")') + ->text('Task / Document Type'); +}