diff --git a/nodejs-functions/serverless.yml b/nodejs-functions/serverless.yml index 5f48f45..bd918ab 100644 --- a/nodejs-functions/serverless.yml +++ b/nodejs-functions/serverless.yml @@ -5,9 +5,7 @@ provider: name: azure region: West US 2 runtime: nodejs12 - # linux is the only operating system available for python os: linux - # prefix of generated resource name prefix: time-tracker environment: ENDPOINT: ${file(keys.yml):ENDPOINT} diff --git a/python-functions/.serverless/python-functions.zip b/python-functions/.serverless/python-functions.zip deleted file mode 100644 index b520cf1..0000000 Binary files a/python-functions/.serverless/python-functions.zip and /dev/null differ diff --git a/python-functions/Makefile b/python-functions/Makefile new file mode 100644 index 0000000..395aa74 --- /dev/null +++ b/python-functions/Makefile @@ -0,0 +1,20 @@ +SECRETS=keys.yml +help: Makefile + @sed -n 's/^## //p' $< + +## npm-install-functions -> Added dependencies in case that the functions need, add manually the command and Makefile +install-dependencies-nodejs: + cd src/handlers/automatic-clock-outs ; pwd ; $(MAKE) install + +deploy: + sls deploy + +sops-encrypt: + sops -e -i ${SECRETS} + +sops-decrypt: + sops -d -i ${SECRETS} + +install-serverless-plugins: + serverless plugin install --name serverless-azure-functions + serverless plugin install --name serverless-offline-python \ No newline at end of file diff --git a/python-functions/keys.yml b/python-functions/keys.yml new file mode 100644 index 0000000..263acc3 --- /dev/null +++ b/python-functions/keys.yml @@ -0,0 +1 @@ +COSMOS_DATABASE_URI: AccountEndpoint=https://time-tracker-db.documents.azure.com:443/;AccountKey=6lyRD8ma0VQjcMbeSMFOTDGwNDptcEGfngp3c9DStNAMCNh2MRbkNWmRinoNvuB6aH51EMEkgeP5WfW3VZiV9g==; \ No newline at end of file diff --git a/python-functions/package-lock.json b/python-functions/package-lock.json index 18b4fac..8d309f4 100644 --- a/python-functions/package-lock.json +++ b/python-functions/package-lock.json @@ -14,9 +14,9 @@ }, "dependencies": { "tslib": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.1.0.tgz", - "integrity": "sha512-hcVC3wYEziELGGmEEXue7D75zbwIIVUMWAVbHItGPx0ziyXxrOMQx4rQEVEV45Ut/1IotuEvwqPopzIOkDMf0A==", + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.2.0.tgz", + "integrity": "sha512-gS9GVHRU+RGn5KQM2rllAlR3dU6m7AcpJKdtH8gFvQiC4Otgk98XnmMU+nZenHt/+VhnBPWwgrJsyrdcw6i23w==", "dev": true } } @@ -55,14 +55,12 @@ } }, "@azure/ms-rest-js": { - "version": "2.2.3", - "resolved": "https://registry.npmjs.org/@azure/ms-rest-js/-/ms-rest-js-2.2.3.tgz", - "integrity": "sha512-sXOhOu/37Tr8428f32Jwuwga975Xw64pYg1UeUwOBMhkNgtn5vUuNRa3fhmem+I6f8EKoi6hOsYDFlaHeZ52jA==", + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/@azure/ms-rest-js/-/ms-rest-js-2.5.0.tgz", + "integrity": "sha512-mXezdECH1Vjr+7FkH5+LlL85/YEHOrXHYqd9qh8b6dgvvE7sVvUk3qrtRGk3WZr4TLrZvRLE7NbFU7RgHHg45Q==", "dev": true, "requires": { "@azure/core-auth": "^1.1.4", - "@types/node-fetch": "^2.3.7", - "@types/tunnel": "0.0.1", "abort-controller": "^3.0.0", "form-data": "^2.5.0", "node-fetch": "^2.6.0", @@ -120,9 +118,9 @@ } }, "@azure/core-auth": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/@azure/core-auth/-/core-auth-1.2.0.tgz", - "integrity": "sha512-KUl+Nwn/Sm6Lw5d3U90m1jZfNSL087SPcqHLxwn2T6PupNKmcgsEbDjHB25gDvHO4h7pBsTlrdJAY7dz+Qk8GA==", + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/@azure/core-auth/-/core-auth-1.3.0.tgz", + "integrity": "sha512-kSDSZBL6c0CYdhb+7KuutnKGf2geeT+bCJAgccB0DD7wmNJSsQPcF7TcuoZX83B7VK4tLz/u+8sOO/CnCsYp8A==", "dev": true, "requires": { "@azure/abort-controller": "^1.0.0", @@ -130,9 +128,9 @@ }, "dependencies": { "tslib": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.1.0.tgz", - "integrity": "sha512-hcVC3wYEziELGGmEEXue7D75zbwIIVUMWAVbHItGPx0ziyXxrOMQx4rQEVEV45Ut/1IotuEvwqPopzIOkDMf0A==", + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.2.0.tgz", + "integrity": "sha512-gS9GVHRU+RGn5KQM2rllAlR3dU6m7AcpJKdtH8gFvQiC4Otgk98XnmMU+nZenHt/+VhnBPWwgrJsyrdcw6i23w==", "dev": true } } @@ -204,14 +202,12 @@ }, "dependencies": { "@azure/ms-rest-js": { - "version": "2.2.3", - "resolved": "https://registry.npmjs.org/@azure/ms-rest-js/-/ms-rest-js-2.2.3.tgz", - "integrity": "sha512-sXOhOu/37Tr8428f32Jwuwga975Xw64pYg1UeUwOBMhkNgtn5vUuNRa3fhmem+I6f8EKoi6hOsYDFlaHeZ52jA==", + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/@azure/ms-rest-js/-/ms-rest-js-2.5.0.tgz", + "integrity": "sha512-mXezdECH1Vjr+7FkH5+LlL85/YEHOrXHYqd9qh8b6dgvvE7sVvUk3qrtRGk3WZr4TLrZvRLE7NbFU7RgHHg45Q==", "dev": true, "requires": { "@azure/core-auth": "^1.1.4", - "@types/node-fetch": "^2.3.7", - "@types/tunnel": "0.0.1", "abort-controller": "^3.0.0", "form-data": "^2.5.0", "node-fetch": "^2.6.0", @@ -236,52 +232,41 @@ } }, "@types/node": { - "version": "14.14.31", - "resolved": "https://registry.npmjs.org/@types/node/-/node-14.14.31.tgz", - "integrity": "sha512-vFHy/ezP5qI0rFgJ7aQnjDXwAMrG0KqqIH7tQG5PPv3BWBayOPIQNBjVc/P6hhdZfMx51REc6tfDNXHUio893g==", + "version": "8.10.66", + "resolved": "https://registry.npmjs.org/@types/node/-/node-8.10.66.tgz", + "integrity": "sha512-tktOkFUA4kXx2hhhrB8bIFb5TbwzS4uOhKEmwiD+NoiL0qtP2OQ9mFldbgD4dV1djrlBYP6eBuQZiWjuHUpqFw==", "dev": true }, - "@types/node-fetch": { - "version": "2.5.8", - "resolved": "https://registry.npmjs.org/@types/node-fetch/-/node-fetch-2.5.8.tgz", - "integrity": "sha512-fbjI6ja0N5ZA8TV53RUqzsKNkl9fv8Oj3T7zxW7FGv1GSH7gwJaNF8dzCjrqKaxKeUpTz4yT1DaJFq/omNpGfw==", + "abort-controller": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/abort-controller/-/abort-controller-3.0.0.tgz", + "integrity": "sha512-h8lQ8tacZYnR3vNQTgibj+tODHI5/+l06Au2Pcriv/Gmet0eaj4TwWH41sO9wnHDiQsEj19q0drzdWdeAHtweg==", "dev": true, "requires": { - "@types/node": "*", - "form-data": "^3.0.0" + "event-target-shim": "^5.0.0" + } + }, + "accept": { + "version": "2.1.4", + "resolved": "https://registry.npmjs.org/accept/-/accept-2.1.4.tgz", + "integrity": "sha1-iHr1TO7lx/RDBGGXHsQAxh0JrLs=", + "dev": true, + "requires": { + "boom": "5.x.x", + "hoek": "4.x.x" }, "dependencies": { - "form-data": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/form-data/-/form-data-3.0.1.tgz", - "integrity": "sha512-RHkBKtLWUVwd7SqRIvCZMEvAMoGUp0XU+seQiZejj0COz3RI3hWP4sCv3gZWWLjJTd7rGwcsF5eKZGii0r/hbg==", + "boom": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/boom/-/boom-5.2.0.tgz", + "integrity": "sha512-Z5BTk6ZRe4tXXQlkqftmsAUANpXmuwlsF5Oov8ThoMbQRzdGTA1ngYRW160GexgOgjsFOKJz0LYhoNi+2AMBUw==", "dev": true, "requires": { - "asynckit": "^0.4.0", - "combined-stream": "^1.0.8", - "mime-types": "^2.1.12" + "hoek": "4.x.x" } } } }, - "@types/tunnel": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/@types/tunnel/-/tunnel-0.0.1.tgz", - "integrity": "sha512-AOqu6bQu5MSWwYvehMXLukFHnupHrpZ8nvgae5Ggie9UwzDR1CCwoXgSSWNZJuyOlCdfdsWMA5F2LlmvyoTv8A==", - "dev": true, - "requires": { - "@types/node": "*" - } - }, - "abort-controller": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/abort-controller/-/abort-controller-3.0.0.tgz", - "integrity": "sha512-h8lQ8tacZYnR3vNQTgibj+tODHI5/+l06Au2Pcriv/Gmet0eaj4TwWH41sO9wnHDiQsEj19q0drzdWdeAHtweg==", - "dev": true, - "requires": { - "event-target-shim": "^5.0.0" - } - }, "acorn": { "version": "7.4.1", "resolved": "https://registry.npmjs.org/acorn/-/acorn-7.4.1.tgz", @@ -322,14 +307,6 @@ "uuid": "^3.1.0", "xmldom": ">= 0.1.x", "xpath.js": "~1.1.0" - }, - "dependencies": { - "@types/node": { - "version": "8.10.66", - "resolved": "https://registry.npmjs.org/@types/node/-/node-8.10.66.tgz", - "integrity": "sha512-tktOkFUA4kXx2hhhrB8bIFb5TbwzS4uOhKEmwiD+NoiL0qtP2OQ9mFldbgD4dV1djrlBYP6eBuQZiWjuHUpqFw==", - "dev": true - } } }, "ajv": { @@ -363,12 +340,32 @@ "repeat-string": "^1.5.2" } }, + "ammo": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/ammo/-/ammo-2.0.4.tgz", + "integrity": "sha1-v4CqshFpjqePY+9efxE91dnokX8=", + "dev": true, + "requires": { + "boom": "5.x.x", + "hoek": "4.x.x" + }, + "dependencies": { + "boom": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/boom/-/boom-5.2.0.tgz", + "integrity": "sha512-Z5BTk6ZRe4tXXQlkqftmsAUANpXmuwlsF5Oov8ThoMbQRzdGTA1ngYRW160GexgOgjsFOKJz0LYhoNi+2AMBUw==", + "dev": true, + "requires": { + "hoek": "4.x.x" + } + } + } + }, "ansi-regex": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=", - "dev": true, - "optional": true + "dev": true }, "ansi-styles": { "version": "3.2.1", @@ -381,9 +378,9 @@ } }, "anymatch": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.1.tgz", - "integrity": "sha512-mM8522psRCqzV+6LhomX5wgp25YVibjh8Wj23I5RPkPppSVSjyKD2A2mBJmWGa+KN7f2D6LNh9jkBCeyLktzjg==", + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.2.tgz", + "integrity": "sha512-P43ePfOAIupkguHUycrc4qJ9kz8ZiuOUijaETwX7THt0Y/GNK7v0aa8rY816xWjZ7rJdA5XdMcpVFTKMq+RvWg==", "dev": true, "optional": true, "requires": { @@ -622,9 +619,9 @@ } }, "azure-functions-core-tools": { - "version": "3.0.3331", - "resolved": "https://registry.npmjs.org/azure-functions-core-tools/-/azure-functions-core-tools-3.0.3331.tgz", - "integrity": "sha512-/LUx1MwEKAmdpzw3dDcVWchmjAfhvUf3vPNykc+/Hp5+yxY0ffW/hK0dCWGY/vhljlQXxUnJMnyAE2iCXghNOw==", + "version": "3.0.3477", + "resolved": "https://registry.npmjs.org/azure-functions-core-tools/-/azure-functions-core-tools-3.0.3477.tgz", + "integrity": "sha512-mbwRQejO+LFfLg/Gdi5tH9SR6122K/vZPIQN5pk650vlbqE1sEGYHE0nlAm3vFpGygqE+pydGTyUiQs0/4GSbw==", "dev": true, "requires": { "chalk": "3.0.0", @@ -1044,10 +1041,225 @@ } } }, + "b64": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/b64/-/b64-3.0.3.tgz", + "integrity": "sha512-Pbeh0i6OLubPJdIdCepn8ZQHwN2MWznZHbHABSTEfQ706ie+yuxNSaPdqX1xRatT6WanaS1EazMiSg0NUW2XxQ==", + "dev": true + }, + "babel-code-frame": { + "version": "6.26.0", + "resolved": "https://registry.npmjs.org/babel-code-frame/-/babel-code-frame-6.26.0.tgz", + "integrity": "sha1-Y/1D99weO7fONZR9uP42mj9Yx0s=", + "dev": true, + "requires": { + "chalk": "^1.1.3", + "esutils": "^2.0.2", + "js-tokens": "^3.0.2" + }, + "dependencies": { + "ansi-styles": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", + "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=", + "dev": true + }, + "chalk": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", + "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", + "dev": true, + "requires": { + "ansi-styles": "^2.2.1", + "escape-string-regexp": "^1.0.2", + "has-ansi": "^2.0.0", + "strip-ansi": "^3.0.0", + "supports-color": "^2.0.0" + } + }, + "supports-color": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", + "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=", + "dev": true + } + } + }, + "babel-core": { + "version": "6.26.3", + "resolved": "https://registry.npmjs.org/babel-core/-/babel-core-6.26.3.tgz", + "integrity": "sha512-6jyFLuDmeidKmUEb3NM+/yawG0M2bDZ9Z1qbZP59cyHLz8kYGKYwpJP0UwUKKUiTRNvxfLesJnTedqczP7cTDA==", + "dev": true, + "requires": { + "babel-code-frame": "^6.26.0", + "babel-generator": "^6.26.0", + "babel-helpers": "^6.24.1", + "babel-messages": "^6.23.0", + "babel-register": "^6.26.0", + "babel-runtime": "^6.26.0", + "babel-template": "^6.26.0", + "babel-traverse": "^6.26.0", + "babel-types": "^6.26.0", + "babylon": "^6.18.0", + "convert-source-map": "^1.5.1", + "debug": "^2.6.9", + "json5": "^0.5.1", + "lodash": "^4.17.4", + "minimatch": "^3.0.4", + "path-is-absolute": "^1.0.1", + "private": "^0.1.8", + "slash": "^1.0.0", + "source-map": "^0.5.7" + }, + "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" + } + }, + "source-map": { + "version": "0.5.7", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", + "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=", + "dev": true + } + } + }, + "babel-generator": { + "version": "6.26.1", + "resolved": "https://registry.npmjs.org/babel-generator/-/babel-generator-6.26.1.tgz", + "integrity": "sha512-HyfwY6ApZj7BYTcJURpM5tznulaBvyio7/0d4zFOeMPUmfxkCjHocCuoLa2SAGzBI8AREcH3eP3758F672DppA==", + "dev": true, + "requires": { + "babel-messages": "^6.23.0", + "babel-runtime": "^6.26.0", + "babel-types": "^6.26.0", + "detect-indent": "^4.0.0", + "jsesc": "^1.3.0", + "lodash": "^4.17.4", + "source-map": "^0.5.7", + "trim-right": "^1.0.1" + }, + "dependencies": { + "source-map": { + "version": "0.5.7", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", + "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=", + "dev": true + } + } + }, + "babel-helpers": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-helpers/-/babel-helpers-6.24.1.tgz", + "integrity": "sha1-NHHenK7DiOXIUOWX5Yom3fN2ArI=", + "dev": true, + "requires": { + "babel-runtime": "^6.22.0", + "babel-template": "^6.24.1" + } + }, + "babel-messages": { + "version": "6.23.0", + "resolved": "https://registry.npmjs.org/babel-messages/-/babel-messages-6.23.0.tgz", + "integrity": "sha1-8830cDhYA1sqKVHG7F7fbGLyYw4=", + "dev": true, + "requires": { + "babel-runtime": "^6.22.0" + } + }, + "babel-register": { + "version": "6.26.0", + "resolved": "https://registry.npmjs.org/babel-register/-/babel-register-6.26.0.tgz", + "integrity": "sha1-btAhFz4vy0htestFxgCahW9kcHE=", + "dev": true, + "requires": { + "babel-core": "^6.26.0", + "babel-runtime": "^6.26.0", + "core-js": "^2.5.0", + "home-or-tmp": "^2.0.0", + "lodash": "^4.17.4", + "mkdirp": "^0.5.1", + "source-map-support": "^0.4.15" + } + }, + "babel-runtime": { + "version": "6.26.0", + "resolved": "https://registry.npmjs.org/babel-runtime/-/babel-runtime-6.26.0.tgz", + "integrity": "sha1-llxwWGaOgrVde/4E/yM3vItWR/4=", + "dev": true, + "requires": { + "core-js": "^2.4.0", + "regenerator-runtime": "^0.11.0" + } + }, + "babel-template": { + "version": "6.26.0", + "resolved": "https://registry.npmjs.org/babel-template/-/babel-template-6.26.0.tgz", + "integrity": "sha1-3gPi0WOWsGn0bdn/+FIfsaDjXgI=", + "dev": true, + "requires": { + "babel-runtime": "^6.26.0", + "babel-traverse": "^6.26.0", + "babel-types": "^6.26.0", + "babylon": "^6.18.0", + "lodash": "^4.17.4" + } + }, + "babel-traverse": { + "version": "6.26.0", + "resolved": "https://registry.npmjs.org/babel-traverse/-/babel-traverse-6.26.0.tgz", + "integrity": "sha1-RqnL1+3MYsjlwGTi0tjQ9ANXZu4=", + "dev": true, + "requires": { + "babel-code-frame": "^6.26.0", + "babel-messages": "^6.23.0", + "babel-runtime": "^6.26.0", + "babel-types": "^6.26.0", + "babylon": "^6.18.0", + "debug": "^2.6.8", + "globals": "^9.18.0", + "invariant": "^2.2.2", + "lodash": "^4.17.4" + }, + "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" + } + } + } + }, + "babel-types": { + "version": "6.26.0", + "resolved": "https://registry.npmjs.org/babel-types/-/babel-types-6.26.0.tgz", + "integrity": "sha1-o7Bz+Uq0nrb6Vc1lInozQ4BjJJc=", + "dev": true, + "requires": { + "babel-runtime": "^6.26.0", + "esutils": "^2.0.2", + "lodash": "^4.17.4", + "to-fast-properties": "^1.0.3" + } + }, + "babylon": { + "version": "6.18.0", + "resolved": "https://registry.npmjs.org/babylon/-/babylon-6.18.0.tgz", + "integrity": "sha512-q/UEjfGJ2Cm3oKV71DJz9d25TPnq5rhBVL2Q4fA5wcC3jcrdn7+SssEybFIxwAvvP+YCsCYNKughoF33GxgycQ==", + "dev": true + }, "balanced-match": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.0.tgz", - "integrity": "sha1-ibTRmasr7kneFk6gK4nORi1xt2c=", + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", + "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==", "dev": true }, "base": { @@ -1172,6 +1384,15 @@ "dev": true, "optional": true }, + "boom": { + "version": "4.3.1", + "resolved": "https://registry.npmjs.org/boom/-/boom-4.3.1.tgz", + "integrity": "sha1-T4owBctKfjiJ90kDD9JbluAdLjE=", + "dev": true, + "requires": { + "hoek": "4.x.x" + } + }, "brace-expansion": { "version": "1.1.11", "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", @@ -1379,6 +1600,16 @@ "unset-value": "^1.0.0" } }, + "call": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/call/-/call-3.0.4.tgz", + "integrity": "sha1-44Dy8qSRMwqnkIU1X4vggId9VZ4=", + "dev": true, + "requires": { + "boom": "4.x.x", + "hoek": "4.x.x" + } + }, "call-bind": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.2.tgz", @@ -1402,6 +1633,49 @@ "integrity": "sha1-G2gcIf+EAzyCZUMJBolCDRhxUdw=", "dev": true }, + "catbox": { + "version": "7.1.5", + "resolved": "https://registry.npmjs.org/catbox/-/catbox-7.1.5.tgz", + "integrity": "sha512-4fui5lELzqZ+9cnaAP/BcqXTH6LvWLBRtFhJ0I4FfgfXiSaZcf6k9m9dqOyChiTxNYtvLk7ZMYSf7ahMq3bf5A==", + "dev": true, + "requires": { + "boom": "5.x.x", + "hoek": "4.x.x", + "joi": "10.x.x" + }, + "dependencies": { + "boom": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/boom/-/boom-5.2.0.tgz", + "integrity": "sha512-Z5BTk6ZRe4tXXQlkqftmsAUANpXmuwlsF5Oov8ThoMbQRzdGTA1ngYRW160GexgOgjsFOKJz0LYhoNi+2AMBUw==", + "dev": true, + "requires": { + "hoek": "4.x.x" + } + }, + "joi": { + "version": "10.6.0", + "resolved": "https://registry.npmjs.org/joi/-/joi-10.6.0.tgz", + "integrity": "sha512-hBF3LcqyAid+9X/pwg+eXjD2QBZI5eXnBFJYaAkH4SK3mp9QSRiiQnDYlmlz5pccMvnLcJRS4whhDOTCkmsAdQ==", + "dev": true, + "requires": { + "hoek": "4.x.x", + "isemail": "2.x.x", + "items": "2.x.x", + "topo": "2.x.x" + } + } + } + }, + "catbox-memory": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/catbox-memory/-/catbox-memory-2.0.4.tgz", + "integrity": "sha1-Qz4lWQLK9UIz0ShkKcj03xToItU=", + "dev": true, + "requires": { + "hoek": "4.x.x" + } + }, "center-align": { "version": "0.1.3", "resolved": "https://registry.npmjs.org/center-align/-/center-align-0.1.3.tgz", @@ -1589,6 +1863,43 @@ "dev": true, "optional": true }, + "content": { + "version": "3.0.7", + "resolved": "https://registry.npmjs.org/content/-/content-3.0.7.tgz", + "integrity": "sha512-LXtnSnvE+Z1Cjpa3P9gh9kb396qV4MqpfwKy777BOSF8n6nw2vAi03tHNl0/XRqZUyzVzY/+nMXOZVnEapWzdg==", + "dev": true, + "requires": { + "boom": "5.x.x" + }, + "dependencies": { + "boom": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/boom/-/boom-5.2.0.tgz", + "integrity": "sha512-Z5BTk6ZRe4tXXQlkqftmsAUANpXmuwlsF5Oov8ThoMbQRzdGTA1ngYRW160GexgOgjsFOKJz0LYhoNi+2AMBUw==", + "dev": true, + "requires": { + "hoek": "4.x.x" + } + } + } + }, + "convert-source-map": { + "version": "1.7.0", + "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.7.0.tgz", + "integrity": "sha512-4FJkXzKXEDB1snCFZlLP4gpC3JILicCpGbzG9f9G7tGqGCzETQ2hWPrcinA9oU4wtf2biUaEH5065UnMeR33oA==", + "dev": true, + "requires": { + "safe-buffer": "~5.1.1" + }, + "dependencies": { + "safe-buffer": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", + "dev": true + } + } + }, "copy-descriptor": { "version": "0.1.1", "resolved": "https://registry.npmjs.org/copy-descriptor/-/copy-descriptor-0.1.1.tgz", @@ -1596,6 +1907,12 @@ "dev": true, "optional": true }, + "core-js": { + "version": "2.6.12", + "resolved": "https://registry.npmjs.org/core-js/-/core-js-2.6.12.tgz", + "integrity": "sha512-Kb2wC0fvsWfQrgk8HU5lW6U/Lcs8+9aaYcy4ZFc6DDlo4nZ7n70dEgE5rtR0oG6ufKDUnrwfWL1mXR5ljDatrQ==", + "dev": true + }, "core-util-is": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz", @@ -1689,6 +2006,26 @@ "integrity": "sha1-iNf/fsDfuG9xPch7u0LQRNPmxBs=", "dev": true }, + "cryptiles": { + "version": "3.1.4", + "resolved": "https://registry.npmjs.org/cryptiles/-/cryptiles-3.1.4.tgz", + "integrity": "sha512-8I1sgZHfVwcSOY6mSGpVU3lw/GSIZvusg8dD2+OGehCJpOhQRLNcH0qb9upQnOH4XhgxxFJSg6E2kx95deb1Tw==", + "dev": true, + "requires": { + "boom": "5.x.x" + }, + "dependencies": { + "boom": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/boom/-/boom-5.2.0.tgz", + "integrity": "sha512-Z5BTk6ZRe4tXXQlkqftmsAUANpXmuwlsF5Oov8ThoMbQRzdGTA1ngYRW160GexgOgjsFOKJz0LYhoNi+2AMBUw==", + "dev": true, + "requires": { + "hoek": "4.x.x" + } + } + } + }, "crypto-browserify": { "version": "3.12.0", "resolved": "https://registry.npmjs.org/crypto-browserify/-/crypto-browserify-3.12.0.tgz", @@ -1855,6 +2192,15 @@ "minimalistic-assert": "^1.0.0" } }, + "detect-indent": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/detect-indent/-/detect-indent-4.0.0.tgz", + "integrity": "sha1-920GQ1LN9Docts5hnE7jqUdd4gg=", + "dev": true, + "requires": { + "repeating": "^2.0.0" + } + }, "diff": { "version": "3.5.0", "resolved": "https://registry.npmjs.org/diff/-/diff-3.5.0.tgz", @@ -2074,8 +2420,7 @@ "version": "1.0.5", "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=", - "dev": true, - "optional": true + "dev": true }, "escodegen": { "version": "1.14.3", @@ -2289,9 +2634,9 @@ }, "dependencies": { "type": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/type/-/type-2.3.0.tgz", - "integrity": "sha512-rgPIqOdfK/4J9FhiVrZ3cveAjRRo5rsQBAIhnylX874y1DX/kEKSVdLsnuHB6l1KTjHyU01VjiMBHgU2adejyg==", + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/type/-/type-2.5.0.tgz", + "integrity": "sha512-180WMDQaIMm3+7hGXWf12GtdniDEy7nYcyFMKJn/eZz/6tSLXrUN9V0wKSbMjej0I1WHWbpREDEKHtqPQa9NNw==", "dev": true } } @@ -2448,9 +2793,9 @@ } }, "follow-redirects": { - "version": "1.13.3", - "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.13.3.tgz", - "integrity": "sha512-DUgl6+HDzB0iEptNQEXLx/KhTmDb8tZUHSeLqpnjpknR70H0nC2t9N73BK6fN4hOvJ84pKlIQVQ4k5FFlBedKA==", + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.14.1.tgz", + "integrity": "sha512-HWqDgT7ZEkqRzBvc2s64vSZ/hfOceEol3ac/7tKwzuvEyWx3/4UegXh5oBOIotkGsObyk3xznnSRVADBgWSQVg==", "dev": true }, "for-in": { @@ -2567,9 +2912,9 @@ } }, "glob": { - "version": "7.1.6", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.6.tgz", - "integrity": "sha512-LwaxwyZ72Lk7vZINtNNrywX0ZuLyStrdDtabefZKAY5ZGJhVtgdznluResxNmPitE0SAO+O26sWTHeKSI2wMBA==", + "version": "7.1.7", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.7.tgz", + "integrity": "sha512-OvD9ENzPLbegENnYP5UUfJIirTg4+XwMWGaQfQTY0JenxNvvIKP3U3/tAQSPIu/lHxXYSZmpXlUHeqAIdKzBLQ==", "dev": true, "requires": { "fs.realpath": "^1.0.0", @@ -2581,15 +2926,21 @@ } }, "glob-parent": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.1.tgz", - "integrity": "sha512-FnI+VGOpnlGHWZxthPGR+QhR78fuiK0sNLkHQv+bL9fQi57lNNdquIbna/WrfROrolq8GK5Ek6BiMwqL/voRYQ==", + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", + "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", "dev": true, "optional": true, "requires": { "is-glob": "^4.0.1" } }, + "globals": { + "version": "9.18.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-9.18.0.tgz", + "integrity": "sha512-S0nG3CLEQiY/ILxqtztTWH/3iRRdyBLw6KMDxnKMchrtbj2OFmehVh0WUCfW3DUrIgx/qFrJPICrq4Z4sTR9UQ==", + "dev": true + }, "graceful-fs": { "version": "4.2.6", "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.6.tgz", @@ -2597,6 +2948,73 @@ "dev": true, "optional": true }, + "h2o2": { + "version": "5.4.0", + "resolved": "https://registry.npmjs.org/h2o2/-/h2o2-5.4.0.tgz", + "integrity": "sha1-1oV8oFNVIAyJCzSmZgbKugIp7Vg=", + "dev": true, + "requires": { + "boom": "3.X.X", + "hoek": "4.X.X", + "joi": "9.X.X", + "wreck": "9.X.X" + }, + "dependencies": { + "boom": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/boom/-/boom-3.2.2.tgz", + "integrity": "sha1-DwzF0ErcUAO4x9cfQsynJx/vDng=", + "dev": true, + "requires": { + "hoek": "4.x.x" + } + } + } + }, + "hapi": { + "version": "14.2.0", + "resolved": "https://registry.npmjs.org/hapi/-/hapi-14.2.0.tgz", + "integrity": "sha1-5P4vwYJZig+B6HtBtr4PvTHHVAk=", + "dev": true, + "requires": { + "accept": "2.x.x", + "ammo": "2.x.x", + "boom": "3.x.x", + "call": "3.x.x", + "catbox": "7.x.x", + "catbox-memory": "2.x.x", + "cryptiles": "3.x.x", + "heavy": "4.x.x", + "hoek": "4.x.x", + "iron": "4.x.x", + "items": "2.x.x", + "joi": "9.x.x", + "kilt": "2.x.x", + "mimos": "3.x.x", + "peekaboo": "2.x.x", + "shot": "3.x.x", + "statehood": "4.x.x", + "subtext": "4.x.x", + "topo": "2.x.x" + }, + "dependencies": { + "boom": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/boom/-/boom-3.2.2.tgz", + "integrity": "sha1-DwzF0ErcUAO4x9cfQsynJx/vDng=", + "dev": true, + "requires": { + "hoek": "4.x.x" + } + } + } + }, + "hapi-cors-headers": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/hapi-cors-headers/-/hapi-cors-headers-1.0.3.tgz", + "integrity": "sha512-U/y+kpVLUJ0y86fEk8yleou9C1T5wFopcWQjuxKdMXzCcymTjfSqGz59waqvngUs1SbeXav/y8Ga9C0G0L1MGg==", + "dev": true + }, "har-schema": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/har-schema/-/har-schema-2.0.0.tgz", @@ -2619,7 +3037,16 @@ "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==", "dev": true, "requires": { - "function-bind": "^1.1.1" + "function-bind": "^1.1.1" + } + }, + "has-ansi": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/has-ansi/-/has-ansi-2.0.0.tgz", + "integrity": "sha1-NPUEnOHs3ysGSa8+8k5F7TVBbZE=", + "dev": true, + "requires": { + "ansi-regex": "^2.0.0" } }, "has-flag": { @@ -2736,6 +3163,40 @@ "minimalistic-assert": "^1.0.1" } }, + "heavy": { + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/heavy/-/heavy-4.0.4.tgz", + "integrity": "sha1-NskTNsAMz+hSyqTRUwhjNc0vAOk=", + "dev": true, + "requires": { + "boom": "5.x.x", + "hoek": "4.x.x", + "joi": "10.x.x" + }, + "dependencies": { + "boom": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/boom/-/boom-5.2.0.tgz", + "integrity": "sha512-Z5BTk6ZRe4tXXQlkqftmsAUANpXmuwlsF5Oov8ThoMbQRzdGTA1ngYRW160GexgOgjsFOKJz0LYhoNi+2AMBUw==", + "dev": true, + "requires": { + "hoek": "4.x.x" + } + }, + "joi": { + "version": "10.6.0", + "resolved": "https://registry.npmjs.org/joi/-/joi-10.6.0.tgz", + "integrity": "sha512-hBF3LcqyAid+9X/pwg+eXjD2QBZI5eXnBFJYaAkH4SK3mp9QSRiiQnDYlmlz5pccMvnLcJRS4whhDOTCkmsAdQ==", + "dev": true, + "requires": { + "hoek": "4.x.x", + "isemail": "2.x.x", + "items": "2.x.x", + "topo": "2.x.x" + } + } + } + }, "hmac-drbg": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/hmac-drbg/-/hmac-drbg-1.0.1.tgz", @@ -2748,6 +3209,22 @@ "minimalistic-crypto-utils": "^1.0.1" } }, + "hoek": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/hoek/-/hoek-4.2.1.tgz", + "integrity": "sha512-QLg82fGkfnJ/4iy1xZ81/9SIJiq1NGFUMGs6ParyjBZr6jW2Ufj/snDqTHixNlHdPNwN2RLVD0Pi3igeK9+JfA==", + "dev": true + }, + "home-or-tmp": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/home-or-tmp/-/home-or-tmp-2.0.0.tgz", + "integrity": "sha1-42w/LSyufXRqhX440Y1fMqeILbg=", + "dev": true, + "requires": { + "os-homedir": "^1.0.0", + "os-tmpdir": "^1.0.1" + } + }, "homedir-polyfill": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/homedir-polyfill/-/homedir-polyfill-1.0.3.tgz", @@ -2759,9 +3236,9 @@ } }, "hosted-git-info": { - "version": "2.8.8", - "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.8.8.tgz", - "integrity": "sha512-f/wzC2QaWBs7t9IYqB4T3sR1xviIViXJRJTWBlx2Gf3g0Xi5vI7Yy4koXQ1c9OYDGHN9sBy1DQ2AB8fqZBWhUg==", + "version": "2.8.9", + "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.8.9.tgz", + "integrity": "sha512-mxIDAb9Lsm6DoOJ7xH+5+X4y1LU/4Hi50L9C5sIswK3JzULS4bwk1FvjdBgvYR4bzT4tuUQiC15FE2f5HbLvYw==", "dev": true, "optional": true }, @@ -2813,6 +3290,15 @@ "dev": true, "optional": true }, + "invariant": { + "version": "2.2.4", + "resolved": "https://registry.npmjs.org/invariant/-/invariant-2.2.4.tgz", + "integrity": "sha512-phJfQVBuaJM5raOpJjSfkiD6BpbCE4Ns//LaXl6wGYtUBY83nWS6Rf9tXm2e8VaK60JEjYldbPif/A2B1C2gNA==", + "dev": true, + "requires": { + "loose-envify": "^1.0.0" + } + }, "invert-kv": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/invert-kv/-/invert-kv-1.0.0.tgz", @@ -2826,6 +3312,28 @@ "integrity": "sha1-+ni/XS5pE8kRzp+BnuUUa7bYROk=", "dev": true }, + "iron": { + "version": "4.0.5", + "resolved": "https://registry.npmjs.org/iron/-/iron-4.0.5.tgz", + "integrity": "sha1-TwQszri5c480a1mqc0yDqJvDFCg=", + "dev": true, + "requires": { + "boom": "5.x.x", + "cryptiles": "3.x.x", + "hoek": "4.x.x" + }, + "dependencies": { + "boom": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/boom/-/boom-5.2.0.tgz", + "integrity": "sha512-Z5BTk6ZRe4tXXQlkqftmsAUANpXmuwlsF5Oov8ThoMbQRzdGTA1ngYRW160GexgOgjsFOKJz0LYhoNi+2AMBUw==", + "dev": true, + "requires": { + "hoek": "4.x.x" + } + } + } + }, "is-accessor-descriptor": { "version": "0.1.6", "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz", @@ -2879,9 +3387,9 @@ } }, "is-core-module": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.2.0.tgz", - "integrity": "sha512-XRAfAdyyY5F5cOXn7hYQDqh2Xmii+DEfIcQGxK/uNwMHhIkPWO0g8msXcbzLe+MpGoR951MlqM/2iIlU4vKDdQ==", + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.4.0.tgz", + "integrity": "sha512-6A2fkfq1rfeQZjxrZJGerpLCTHRNEBiSgnu0+obeJpEPZRUooHgsizvzv0ZjJwOz3iWIHdJtVWJ/tmPr3D21/A==", "dev": true, "optional": true, "requires": { @@ -2899,9 +3407,9 @@ } }, "is-date-object": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-date-object/-/is-date-object-1.0.2.tgz", - "integrity": "sha512-USlDT524woQ08aoZFzh3/Z6ch9Y/EWXEHQ/AaRN0SkKq4t2Jw2R2339tSXmwuVoY7LLlBCbOIlx2myP/L5zk0g==", + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/is-date-object/-/is-date-object-1.0.4.tgz", + "integrity": "sha512-/b4ZVsG7Z5XVtIxs/h9W8nvfLgSAyKYdtGWQLbqy6jA1icmgjf8WCoTKgeS4wy5tYaPePouzFMANbnj94c2Z+A==", "dev": true }, "is-descriptor": { @@ -2939,6 +3447,12 @@ "dev": true, "optional": true }, + "is-finite": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-finite/-/is-finite-1.1.0.tgz", + "integrity": "sha512-cdyMtqX/BOqqNBBiKlIVkytNHm49MtMlYyn1zxzvJKWmFMlGzm+ry5BBfYyeY9YmNKbRSo/o7OX9w9ale0wg3w==", + "dev": true + }, "is-fullwidth-code-point": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz", @@ -2977,13 +3491,13 @@ } }, "is-regex": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.1.2.tgz", - "integrity": "sha512-axvdhb5pdhEVThqJzYXwMlVuZwC+FF2DpcOhTS+y/8jVq4trxyPgfcwIxIKiyeuLlSQYKkmUaPQJ8ZE4yNKXDg==", + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.1.3.tgz", + "integrity": "sha512-qSVXFz28HM7y+IWX6vLCsexdlvzT1PJNFSBuaQLQ5o0IEw8UDYW6/2+eCMVyIsbM8CNLX2a/QWmSpyxYEHY7CQ==", "dev": true, "requires": { "call-bind": "^1.0.2", - "has-symbols": "^1.0.1" + "has-symbols": "^1.0.2" } }, "is-stream": { @@ -3019,6 +3533,12 @@ "dev": true, "optional": true }, + "isemail": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/isemail/-/isemail-2.2.1.tgz", + "integrity": "sha1-A1PT2aYpUQgMJiwqoKQrjqjp4qY=", + "dev": true + }, "isexe": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", @@ -3038,6 +3558,37 @@ "integrity": "sha1-R+Y/evVa+m+S4VAOaQ64uFKcCZo=", "dev": true }, + "items": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/items/-/items-2.1.2.tgz", + "integrity": "sha512-kezcEqgB97BGeZZYtX/MA8AG410ptURstvnz5RAgyFZ8wQFPMxHY8GpTq+/ZHKT3frSlIthUq7EvLt9xn3TvXg==", + "dev": true + }, + "joi": { + "version": "9.2.0", + "resolved": "https://registry.npmjs.org/joi/-/joi-9.2.0.tgz", + "integrity": "sha1-M4WseQGSEwy+Iw6ALsAskhW7/to=", + "dev": true, + "requires": { + "hoek": "4.x.x", + "isemail": "2.x.x", + "items": "2.x.x", + "moment": "2.x.x", + "topo": "2.x.x" + } + }, + "js-string-escape": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/js-string-escape/-/js-string-escape-1.0.1.tgz", + "integrity": "sha1-4mJbrbwNZ8dTPp7cEGjFh65BN+8=", + "dev": true + }, + "js-tokens": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-3.0.2.tgz", + "integrity": "sha1-mGbfOVECEw449/mWvOtlRDIJwls=", + "dev": true + }, "js-yaml": { "version": "3.14.1", "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.1.tgz", @@ -3054,6 +3605,12 @@ "integrity": "sha1-peZUwuWi3rXyAdls77yoDA7y9RM=", "dev": true }, + "jsesc": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-1.3.0.tgz", + "integrity": "sha1-RsP+yMGJKxKwgz25vHYiF226s0s=", + "dev": true + }, "json-loader": { "version": "0.5.7", "resolved": "https://registry.npmjs.org/json-loader/-/json-loader-0.5.7.tgz", @@ -3083,8 +3640,7 @@ "version": "0.5.1", "resolved": "https://registry.npmjs.org/json5/-/json5-0.5.1.tgz", "integrity": "sha1-Hq3nrMASA0rYTiOWdn6tn6VJWCE=", - "dev": true, - "optional": true + "dev": true }, "jsonfile": { "version": "4.0.0", @@ -3097,14 +3653,14 @@ } }, "jsonpath": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/jsonpath/-/jsonpath-1.1.0.tgz", - "integrity": "sha512-CZHwa1sZOf42qkIyK7evwToFXeTB4iplbl6Z9CVwU0wmBQPffL6gtYJXCoeciJoZENMuzaidPjhp2iOLRei4wQ==", + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/jsonpath/-/jsonpath-1.1.1.tgz", + "integrity": "sha512-l6Cg7jRpixfbgoWgkrl77dgEj8RPvND0wMH6TwQmi9Qs4TFfS9u5cUFnbeKTwj5ga5Y3BTGGNI28k117LJ009w==", "dev": true, "requires": { "esprima": "1.2.2", "static-eval": "2.0.2", - "underscore": "1.7.0" + "underscore": "1.12.1" }, "dependencies": { "esprima": { @@ -3114,9 +3670,47 @@ "dev": true }, "underscore": { - "version": "1.7.0", - "resolved": "https://registry.npmjs.org/underscore/-/underscore-1.7.0.tgz", - "integrity": "sha1-a7rwh3UA02vjTsqlhODbn+8DUgk=", + "version": "1.12.1", + "resolved": "https://registry.npmjs.org/underscore/-/underscore-1.12.1.tgz", + "integrity": "sha512-hEQt0+ZLDVUMhebKxL4x1BTtDY7bavVofhZ9KZ4aI26X9SRaE+Y3m83XUL1UP2jn8ynjndwCCpEHdUG+9pP1Tw==", + "dev": true + } + } + }, + "jsonpath-plus": { + "version": "0.16.0", + "resolved": "https://registry.npmjs.org/jsonpath-plus/-/jsonpath-plus-0.16.0.tgz", + "integrity": "sha1-/kQbI/A+xpeaVgNROYjNPtt9tdw=", + "dev": true + }, + "jsonwebtoken": { + "version": "8.5.1", + "resolved": "https://registry.npmjs.org/jsonwebtoken/-/jsonwebtoken-8.5.1.tgz", + "integrity": "sha512-XjwVfRS6jTMsqYs0EsuJ4LGxXV14zQybNd4L2r0UvbVnSF9Af8x7p5MzbJ90Ioz/9TI41/hTCvznF/loiSzn8w==", + "dev": true, + "requires": { + "jws": "^3.2.2", + "lodash.includes": "^4.3.0", + "lodash.isboolean": "^3.0.3", + "lodash.isinteger": "^4.0.4", + "lodash.isnumber": "^3.0.3", + "lodash.isplainobject": "^4.0.6", + "lodash.isstring": "^4.0.1", + "lodash.once": "^4.0.0", + "ms": "^2.1.1", + "semver": "^5.6.0" + }, + "dependencies": { + "ms": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", + "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", + "dev": true + }, + "semver": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", + "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", "dev": true } } @@ -3154,6 +3748,15 @@ "safe-buffer": "^5.0.1" } }, + "kilt": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/kilt/-/kilt-2.0.2.tgz", + "integrity": "sha1-BNcYPCmKEjLv3ffdyllZqPYwHiA=", + "dev": true, + "requires": { + "hoek": "4.x.x" + } + }, "kind-of": { "version": "3.2.2", "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", @@ -3271,6 +3874,48 @@ "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==", "dev": true }, + "lodash.includes": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/lodash.includes/-/lodash.includes-4.3.0.tgz", + "integrity": "sha1-YLuYqHy5I8aMoeUTJUgzFISfVT8=", + "dev": true + }, + "lodash.isboolean": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/lodash.isboolean/-/lodash.isboolean-3.0.3.tgz", + "integrity": "sha1-bC4XHbKiV82WgC/UOwGyDV9YcPY=", + "dev": true + }, + "lodash.isinteger": { + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/lodash.isinteger/-/lodash.isinteger-4.0.4.tgz", + "integrity": "sha1-YZwK89A/iwTDH1iChAt3sRzWg0M=", + "dev": true + }, + "lodash.isnumber": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/lodash.isnumber/-/lodash.isnumber-3.0.3.tgz", + "integrity": "sha1-POdoEMWSjQM1IwGsKHMX8RwLH/w=", + "dev": true + }, + "lodash.isplainobject": { + "version": "4.0.6", + "resolved": "https://registry.npmjs.org/lodash.isplainobject/-/lodash.isplainobject-4.0.6.tgz", + "integrity": "sha1-fFJqUtibRcRcxpC4gWO+BJf1UMs=", + "dev": true + }, + "lodash.isstring": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/lodash.isstring/-/lodash.isstring-4.0.1.tgz", + "integrity": "sha1-1SfftUVuynzJu5XV2ur4i6VKVFE=", + "dev": true + }, + "lodash.once": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/lodash.once/-/lodash.once-4.1.1.tgz", + "integrity": "sha1-DdOXEhPHxW34gJd9UEyI+0cal6w=", + "dev": true + }, "longest": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/longest/-/longest-1.0.1.tgz", @@ -3278,6 +3923,15 @@ "dev": true, "optional": true }, + "loose-envify": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/loose-envify/-/loose-envify-1.4.0.tgz", + "integrity": "sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==", + "dev": true, + "requires": { + "js-tokens": "^3.0.0 || ^4.0.0" + } + }, "lru-cache": { "version": "4.1.5", "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-4.1.5.tgz", @@ -3513,18 +4167,18 @@ } }, "mime-db": { - "version": "1.46.0", - "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.46.0.tgz", - "integrity": "sha512-svXaP8UQRZ5K7or+ZmfNhg2xX3yKDMUzqadsSqi4NCH/KomcH75MAMYAGVlvXn4+b/xOPhS3I2uHKRUzvjY7BQ==", + "version": "1.47.0", + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.47.0.tgz", + "integrity": "sha512-QBmA/G2y+IfeS4oktet3qRZ+P5kPhCKRXxXnQEudYqUaEioAU1/Lq2us3D/t1Jfo4hE9REQPrbB7K5sOczJVIw==", "dev": true }, "mime-types": { - "version": "2.1.29", - "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.29.tgz", - "integrity": "sha512-Y/jMt/S5sR9OaqteJtslsFZKWOIIqMACsJSiHghlCAyhf7jfVYjKBmLiX8OgpWeW+fjJ2b+Az69aPFPkUOY6xQ==", + "version": "2.1.30", + "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.30.tgz", + "integrity": "sha512-crmjA4bLtR8m9qLpHvgxSChT+XoSlZi8J4n/aIdn3z92e/U47Z0V/yl+Wh9W046GgFVAmoNR/fmdbZYcSSIUeg==", "dev": true, "requires": { - "mime-db": "1.46.0" + "mime-db": "1.47.0" } }, "mimic-fn": { @@ -3534,6 +4188,16 @@ "dev": true, "optional": true }, + "mimos": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/mimos/-/mimos-3.0.3.tgz", + "integrity": "sha1-uRCQcq03jCty9qAQHEPd+ys2ZB8=", + "dev": true, + "requires": { + "hoek": "4.x.x", + "mime-db": "1.x.x" + } + }, "minimalistic-assert": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/minimalistic-assert/-/minimalistic-assert-1.0.1.tgz", @@ -3561,8 +4225,7 @@ "version": "1.2.5", "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.5.tgz", "integrity": "sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw==", - "dev": true, - "optional": true + "dev": true }, "mixin-deep": { "version": "1.3.2", @@ -3592,11 +4255,16 @@ "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.5.tgz", "integrity": "sha512-NKmAlESf6jMGym1++R0Ra7wvhV+wFW63FaSOFPwRahvea0gMUcGUhVeAg/0BC0wiv9ih5NYPB1Wn1UEI1/L+xQ==", "dev": true, - "optional": true, "requires": { "minimist": "^1.2.5" } }, + "moment": { + "version": "2.29.1", + "resolved": "https://registry.npmjs.org/moment/-/moment-2.29.1.tgz", + "integrity": "sha512-kHmoybcPV8Sqy59DwNDY3Jefr64lK/by/da0ViFcuA4DH0vQg5Q6Ze5VimxkfQNSC+Mls/Kx53s7TjP1RhFEDQ==", + "dev": true + }, "ms": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", @@ -3645,6 +4313,16 @@ "integrity": "sha1-yobR/ogoFpsBICCOPchCS524NCw=", "dev": true }, + "nigel": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/nigel/-/nigel-2.0.2.tgz", + "integrity": "sha1-k6GGb7DFLYc5CqdeKxYfS1x15bE=", + "dev": true, + "requires": { + "hoek": "4.x.x", + "vise": "2.x.x" + } + }, "node-fetch": { "version": "2.6.1", "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.6.1.tgz", @@ -3874,6 +4552,12 @@ "dev": true, "optional": true }, + "os-homedir": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/os-homedir/-/os-homedir-1.0.2.tgz", + "integrity": "sha1-/7xJiDNuDoM94MFox+8VISGqf7M=", + "dev": true + }, "os-locale": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/os-locale/-/os-locale-2.1.0.tgz", @@ -3886,6 +4570,12 @@ "mem": "^1.1.0" } }, + "os-tmpdir": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/os-tmpdir/-/os-tmpdir-1.0.2.tgz", + "integrity": "sha1-u+Z0BseaqFxc/sdm/lc0VV36EnQ=", + "dev": true + }, "p-finally": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/p-finally/-/p-finally-1.0.0.tgz", @@ -4016,9 +4706,9 @@ } }, "pbkdf2": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/pbkdf2/-/pbkdf2-3.1.1.tgz", - "integrity": "sha512-4Ejy1OPxi9f2tt1rRV7Go7zmfDQ+ZectEQz3VGUQhgq62HtIRPDyG/JtnwIxs6x3uNMwo2V7q1fMvKjb+Tnpqg==", + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/pbkdf2/-/pbkdf2-3.1.2.tgz", + "integrity": "sha512-iuh7L6jA7JEGu2WxDwtQP1ddOpaJNC4KlDEFfdQajSGgGPNi4OyDc2R7QnbY2bR9QjBVGwgvTdNJZoE7RaxUMA==", "dev": true, "optional": true, "requires": { @@ -4029,16 +4719,46 @@ "sha.js": "^2.4.8" } }, + "peekaboo": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/peekaboo/-/peekaboo-2.0.2.tgz", + "integrity": "sha1-/ELhOe/WmMb/KHCmsgwEfNmqKf8=", + "dev": true + }, "performance-now": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/performance-now/-/performance-now-2.1.0.tgz", "integrity": "sha1-Ywn04OX6kT7BxpMHrjZLSzd8nns=", "dev": true }, + "pez": { + "version": "2.1.5", + "resolved": "https://registry.npmjs.org/pez/-/pez-2.1.5.tgz", + "integrity": "sha1-XsLMYlAMw+tCNtSkFM9aF7XrUAc=", + "dev": true, + "requires": { + "b64": "3.x.x", + "boom": "5.x.x", + "content": "3.x.x", + "hoek": "4.x.x", + "nigel": "2.x.x" + }, + "dependencies": { + "boom": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/boom/-/boom-5.2.0.tgz", + "integrity": "sha512-Z5BTk6ZRe4tXXQlkqftmsAUANpXmuwlsF5Oov8ThoMbQRzdGTA1ngYRW160GexgOgjsFOKJz0LYhoNi+2AMBUw==", + "dev": true, + "requires": { + "hoek": "4.x.x" + } + } + } + }, "picomatch": { - "version": "2.2.2", - "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.2.2.tgz", - "integrity": "sha512-q0M/9eZHzmr0AulXyPwNfZjtwZ/RBZlbN3K3CErVrk50T2ASYI7Bye0EvekFY3IP1Nt2DHu0re+V2ZHIpMkuWg==", + "version": "2.2.3", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.2.3.tgz", + "integrity": "sha512-KpELjfwcCDUb9PeigTs2mBJzXUPzAuP2oPcA989He8Rte0+YUAjw1JVedDhuTKPkHjSYzMN3npC9luThGYEKdg==", "dev": true, "optional": true }, @@ -4062,6 +4782,12 @@ "integrity": "sha1-IZMqVJ9eUv/ZqCf1cOBL5iqX2lQ=", "dev": true }, + "private": { + "version": "0.1.8", + "resolved": "https://registry.npmjs.org/private/-/private-0.1.8.tgz", + "integrity": "sha512-VvivMrbvd2nKkiG38qjULzlc+4Vx4wm/whI9pQD35YrARNnhxeiRktSOhSukRLFNlzg6Br/cJPet5J/u19r/mg==", + "dev": true + }, "process": { "version": "0.11.10", "resolved": "https://registry.npmjs.org/process/-/process-0.11.10.tgz", @@ -4224,6 +4950,12 @@ "picomatch": "^2.2.1" } }, + "regenerator-runtime": { + "version": "0.11.1", + "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.11.1.tgz", + "integrity": "sha512-MguG95oij0fC3QV3URf4V2SDYGJhJnJGqvIIgdECeODCT98wSWDAJ94SSuVpYQUoTcGUIL6L4yNB7j1DFFHSBg==", + "dev": true + }, "regex-not": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/regex-not/-/regex-not-1.0.2.tgz", @@ -4253,9 +4985,9 @@ "optional": true }, "repeat-element": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/repeat-element/-/repeat-element-1.1.3.tgz", - "integrity": "sha512-ahGq0ZnV5m5XtZLMb+vP76kcAM5nkLqk0lpqAuojSKGgQtn4eRi4ZZGm2olo2zKFH+sMsWaqOCW1dqAnOru72g==", + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/repeat-element/-/repeat-element-1.1.4.tgz", + "integrity": "sha512-LFiNfRcSu7KK3evMyYOuCzv3L10TW7yC1G2/+StMjK8Y6Vqd2MG7r/Qjw4ghtuCOjFvlnms/iMmLqpvW/ES/WQ==", "dev": true, "optional": true }, @@ -4266,6 +4998,15 @@ "dev": true, "optional": true }, + "repeating": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/repeating/-/repeating-2.0.1.tgz", + "integrity": "sha1-UhTFOpJtNVJwdSf7q0FdvAjQbdo=", + "dev": true, + "requires": { + "is-finite": "^1.0.0" + } + }, "request": { "version": "2.88.2", "resolved": "https://registry.npmjs.org/request/-/request-2.88.2.tgz", @@ -4443,6 +5184,26 @@ "zip-folder": "^1.0.0" } }, + "serverless-offline-python": { + "version": "3.22.2", + "resolved": "https://registry.npmjs.org/serverless-offline-python/-/serverless-offline-python-3.22.2.tgz", + "integrity": "sha512-W0TUryJhHJfNNTwPb/UTPxLRzjgQaW8JJafmdNSn4HATYAvUkj8JQNwt5UcwhK8gswoAPzB8N14ghDO0j4h69g==", + "dev": true, + "requires": { + "babel-register": "^6.18.0", + "boom": "^4.2.0", + "h2o2": "^5.4.0", + "hapi": "14.2.0", + "hapi-cors-headers": "^1.0.3", + "js-string-escape": "^1.0.1", + "jsonpath-plus": "^0.16.0", + "jsonwebtoken": "^8.2.1", + "lodash": "^4.17.4", + "trim-newlines": "^2.0.0", + "uuid": "^3.2.1", + "velocityjs": "^0.9.3" + } + }, "serverless-webpack": { "version": "4.4.0", "resolved": "https://registry.npmjs.org/serverless-webpack/-/serverless-webpack-4.4.0.tgz", @@ -4534,6 +5295,30 @@ "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", "dev": true }, + "shot": { + "version": "3.4.2", + "resolved": "https://registry.npmjs.org/shot/-/shot-3.4.2.tgz", + "integrity": "sha1-Hlw/bysmZJrcQvfrNQIUpaApHWc=", + "dev": true, + "requires": { + "hoek": "4.x.x", + "joi": "10.x.x" + }, + "dependencies": { + "joi": { + "version": "10.6.0", + "resolved": "https://registry.npmjs.org/joi/-/joi-10.6.0.tgz", + "integrity": "sha512-hBF3LcqyAid+9X/pwg+eXjD2QBZI5eXnBFJYaAkH4SK3mp9QSRiiQnDYlmlz5pccMvnLcJRS4whhDOTCkmsAdQ==", + "dev": true, + "requires": { + "hoek": "4.x.x", + "isemail": "2.x.x", + "items": "2.x.x", + "topo": "2.x.x" + } + } + } + }, "sigmund": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/sigmund/-/sigmund-1.0.1.tgz", @@ -4547,6 +5332,12 @@ "dev": true, "optional": true }, + "slash": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/slash/-/slash-1.0.0.tgz", + "integrity": "sha1-xB8vbDn8FtHNF61LXYlhFK5HDVU=", + "dev": true + }, "snapdragon": { "version": "0.8.2", "resolved": "https://registry.npmjs.org/snapdragon/-/snapdragon-0.8.2.tgz", @@ -4709,7 +5500,6 @@ "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.4.18.tgz", "integrity": "sha512-try0/JqxPLF9nOjvSta7tVondkP5dwgyLDjVoyMDlmjugT2lRZ1OfsrYTkCd2hkDnJTKRbO/Rl3orm8vlsUzbA==", "dev": true, - "optional": true, "requires": { "source-map": "^0.5.6" }, @@ -4718,8 +5508,7 @@ "version": "0.5.7", "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=", - "dev": true, - "optional": true + "dev": true } } }, @@ -4760,9 +5549,9 @@ } }, "spdx-license-ids": { - "version": "3.0.7", - "resolved": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-3.0.7.tgz", - "integrity": "sha512-U+MTEOO0AiDzxwFvoa4JVnMV6mZlJKk2sBLt90s7G0Gd0Mlknc7kxEn3nuDPNZRta7O2uy8oLcZLVT+4sqNZHQ==", + "version": "3.0.8", + "resolved": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-3.0.8.tgz", + "integrity": "sha512-NDgA96EnaLSvtbM7trJj+t1LUR3pirkDCcz9nOUlPb5DMBGsH7oES6C3hs3j7R9oHEa1EMvReS/BUAIT5Tcr0g==", "dev": true, "optional": true }, @@ -4799,6 +5588,31 @@ "tweetnacl": "~0.14.0" } }, + "statehood": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/statehood/-/statehood-4.1.0.tgz", + "integrity": "sha1-iih30T2YUKq2zod6VLd43w9DrNs=", + "dev": true, + "requires": { + "boom": "3.x.x", + "cryptiles": "3.x.x", + "hoek": "4.x.x", + "iron": "4.x.x", + "items": "2.x.x", + "joi": "9.x.x" + }, + "dependencies": { + "boom": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/boom/-/boom-3.2.2.tgz", + "integrity": "sha1-DwzF0ErcUAO4x9cfQsynJx/vDng=", + "dev": true, + "requires": { + "hoek": "4.x.x" + } + } + } + }, "static-eval": { "version": "2.0.2", "resolved": "https://registry.npmjs.org/static-eval/-/static-eval-2.0.2.tgz", @@ -4917,7 +5731,6 @@ "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", "dev": true, - "optional": true, "requires": { "ansi-regex": "^2.0.0" } @@ -4943,6 +5756,40 @@ "dev": true, "optional": true }, + "subtext": { + "version": "4.4.1", + "resolved": "https://registry.npmjs.org/subtext/-/subtext-4.4.1.tgz", + "integrity": "sha1-L87JRd5CkoPD0YsVH/D6HxuHrsk=", + "dev": true, + "requires": { + "boom": "5.x.x", + "content": "3.x.x", + "hoek": "4.x.x", + "pez": "2.x.x", + "wreck": "12.x.x" + }, + "dependencies": { + "boom": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/boom/-/boom-5.2.0.tgz", + "integrity": "sha512-Z5BTk6ZRe4tXXQlkqftmsAUANpXmuwlsF5Oov8ThoMbQRzdGTA1ngYRW160GexgOgjsFOKJz0LYhoNi+2AMBUw==", + "dev": true, + "requires": { + "hoek": "4.x.x" + } + }, + "wreck": { + "version": "12.5.1", + "resolved": "https://registry.npmjs.org/wreck/-/wreck-12.5.1.tgz", + "integrity": "sha512-l5DUGrc+yDyIflpty1x9XuMj1ehVjC/dTbF3/BasOO77xk0EdEa4M/DuOY8W88MQDAD0fEDqyjc8bkIMHd2E9A==", + "dev": true, + "requires": { + "boom": "5.x.x", + "hoek": "4.x.x" + } + } + } + }, "supports-color": { "version": "5.5.0", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", @@ -5000,6 +5847,12 @@ "dev": true, "optional": true }, + "to-fast-properties": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-1.0.3.tgz", + "integrity": "sha1-uDVx+k2MJbguIxsG46MFXeTKGkc=", + "dev": true + }, "to-object-path": { "version": "0.3.0", "resolved": "https://registry.npmjs.org/to-object-path/-/to-object-path-0.3.0.tgz", @@ -5033,6 +5886,15 @@ "is-number": "^7.0.0" } }, + "topo": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/topo/-/topo-2.0.2.tgz", + "integrity": "sha1-zVYVdSU5BXwNwEkaYhw7xvvh0YI=", + "dev": true, + "requires": { + "hoek": "4.x.x" + } + }, "tough-cookie": { "version": "2.5.0", "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-2.5.0.tgz", @@ -5043,6 +5905,18 @@ "punycode": "^2.1.1" } }, + "trim-newlines": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/trim-newlines/-/trim-newlines-2.0.0.tgz", + "integrity": "sha1-tAPQuRvlDDMd/EuC7s6yLD3hbSA=", + "dev": true + }, + "trim-right": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/trim-right/-/trim-right-1.0.1.tgz", + "integrity": "sha1-yy4SAwZ+DI3h9hQJS5/kVwTqYAM=", + "dev": true + }, "ts-node": { "version": "3.3.0", "resolved": "https://registry.npmjs.org/ts-node/-/ts-node-3.3.0.tgz", @@ -5185,9 +6059,9 @@ } }, "underscore": { - "version": "1.12.0", - "resolved": "https://registry.npmjs.org/underscore/-/underscore-1.12.0.tgz", - "integrity": "sha512-21rQzss/XPMjolTiIezSu3JAjgagXKROtNrYFEOWK109qY1Uv2tVjPTZ1ci2HgvQDA16gHYSthQIJfB+XId/rQ==", + "version": "1.13.1", + "resolved": "https://registry.npmjs.org/underscore/-/underscore-1.13.1.tgz", + "integrity": "sha512-hzSoAVtJF+3ZtiFX0VgfFPHEDRm7Y/QPjGyNo4TVdnDTdft3tr8hEkD25a1jC+TjTuE7tkHGKkhwCgs9dgBB2g==", "dev": true }, "union-value": { @@ -5364,6 +6238,12 @@ "spdx-expression-parse": "^3.0.0" } }, + "velocityjs": { + "version": "0.9.6", + "resolved": "https://registry.npmjs.org/velocityjs/-/velocityjs-0.9.6.tgz", + "integrity": "sha1-bsgumaonSS0tYjYMFhr8T4LbieI=", + "dev": true + }, "verror": { "version": "1.10.0", "resolved": "https://registry.npmjs.org/verror/-/verror-1.10.0.tgz", @@ -5375,6 +6255,15 @@ "extsprintf": "^1.2.0" } }, + "vise": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/vise/-/vise-2.0.2.tgz", + "integrity": "sha1-awjo+0y3bjpQzW3Q7DczjoEaDTk=", + "dev": true, + "requires": { + "hoek": "4.x.x" + } + }, "vm-browserify": { "version": "1.1.2", "resolved": "https://registry.npmjs.org/vm-browserify/-/vm-browserify-1.1.2.tgz", @@ -5732,6 +6621,27 @@ "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=", "dev": true }, + "wreck": { + "version": "9.0.0", + "resolved": "https://registry.npmjs.org/wreck/-/wreck-9.0.0.tgz", + "integrity": "sha1-HeY9SbsHuU/nGIZLi+YxduYzMew=", + "dev": true, + "requires": { + "boom": "3.x.x", + "hoek": "4.x.x" + }, + "dependencies": { + "boom": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/boom/-/boom-3.2.2.tgz", + "integrity": "sha1-DwzF0ErcUAO4x9cfQsynJx/vDng=", + "dev": true, + "requires": { + "hoek": "4.x.x" + } + } + } + }, "xml2js": { "version": "0.4.23", "resolved": "https://registry.npmjs.org/xml2js/-/xml2js-0.4.23.tgz", @@ -5749,9 +6659,9 @@ "dev": true }, "xmldom": { - "version": "0.4.0", - "resolved": "https://registry.npmjs.org/xmldom/-/xmldom-0.4.0.tgz", - "integrity": "sha512-2E93k08T30Ugs+34HBSTQLVtpi6mCddaY8uO+pMNk1pqSjV5vElzn4mmh6KLxN3hki8rNcHSYzILoh3TEWORvA==", + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/xmldom/-/xmldom-0.6.0.tgz", + "integrity": "sha512-iAcin401y58LckRZ0TkI4k0VSM1Qg0KGSc3i8rU+xrxe19A/BN1zHyVSJY7uoutVlaTSzYyk/v5AmkewAP7jtg==", "dev": true }, "xpath.js": { diff --git a/python-functions/package.json b/python-functions/package.json index 679aab7..513580c 100644 --- a/python-functions/package.json +++ b/python-functions/package.json @@ -9,6 +9,7 @@ "author": "", "license": "ISC", "devDependencies": { - "serverless-azure-functions": "^2.1.0" + "serverless-azure-functions": "^2.1.0", + "serverless-offline-python": "^3.22.2" } } diff --git a/python-functions/serverless.yml b/python-functions/serverless.yml new file mode 100644 index 0000000..9959d12 --- /dev/null +++ b/python-functions/serverless.yml @@ -0,0 +1,153 @@ +service: python-functions-test1 +frameworkVersion: '2' + +provider: + name: azure + region: West US 2 + runtime: python3.8 # python3.7 or python3.8 also available + os: linux # linux is the only operating system available for python + prefix: time-tracker + environment: # these will be created as application settings + COSMOS_DATABASE_URI: ${file(keys.yml):COSMOS_DATABASE_URI} + +plugins: + - serverless-azure-functions + - serverless-offline-python +package: + # include: + # - include-me.py + # - include-me-dir/** + exclude: + - env/** + - .env/** + - local.settings.json + - .vscode/** + - __pycache__/** + - node_modules/** + - .python_packages/** + - .funcignore + - package.json + - package-lock.json + - .gitignore + - .git/** + # - exclude-me.py + # - exclude-me-dir/** + +functions: + handle_activity_events_trigger: + handler: src/handlers/handle_activity_events_trigger/__init__.py + events: + - cosmosDB: true + x-azure-settings: + name: documents # name of input parameter in function signature + direction: in + leaseCollectionName: leases + connectionStringSetting: COSMOS_DATABASE_URI + databaseName: time-tracker-db + collectionName: activity + createLeaseCollectionIfNotExists: true + leaseCollectionPrefix: activity_ + - cosmosDB: true + x-azure-settings: + connectionStringSetting: COSMOS_DATABASE_URI + direction: out + name: events # name of input parameter in function signature + databaseName: time-tracker-db + collectionName: event + createIfNotExists: true # A boolean value to indicate whether the collection is created + createLeaseCollectionIfNotExists: true + + handle_customer_trigger: + handler: src/handlers/handle_customer_trigger/__init__.py + events: + - cosmosDB: true + x-azure-settings: + name: documents # name of input parameter in function signature + direction: in + connectionStringSetting: COSMOS_DATABASE_URI + databaseName: time-tracker-db + collectionName: customer + createLeaseCollectionIfNotExists: true + leaseCollectionPrefix: customer_ + - cosmosDB: true + x-azure-settings: + direction: out + name: events # name of input parameter in function signature + databaseName: time-tracker-db + collectionName: event + leaseCollectionName: leases + createLeaseCollectionIfNotExists: true + connectionStringSetting: COSMOS_DATABASE_URI + createIfNotExists: true # A boolean value to indicate whether the collection is created + + handle_project_events_trigger: + handler: src/handlers/handle_project_events_trigger/__init__.py + events: + - cosmosDB: true + x-azure-settings: + name: documents # name of input parameter in function signature + direction: in + leaseCollectionName: leases + connectionStringSetting: COSMOS_DATABASE_URI + databaseName: time-tracker-db + collectionName: project + createLeaseCollectionIfNotExists: true + leaseCollectionPrefix: project_ + - cosmosDB: true + x-azure-settings: + direction: out + name: events # name of input parameter in function signature + databaseName: time-tracker-db + collectionName: event + leaseCollectionName: leases + createLeaseCollectionIfNotExists: true + connectionStringSetting: COSMOS_DATABASE_URI + createIfNotExists: true # A boolean value to indicate whether the collection is created + + handle_project_type_events_trigger: + handler: src/handlers/handle_project_type_events_trigger/__init__.py + events: + - cosmosDB: true + x-azure-settings: + name: documents # name of input parameter in function signature + direction: in + leaseCollectionName: leases + connectionStringSetting: COSMOS_DATABASE_URI + databaseName: time-tracker-db + collectionName: project_type + createLeaseCollectionIfNotExists: true + leaseCollectionPrefix: project_type_ + - cosmosDB: true + x-azure-settings: + direction: out + name: events # name of input parameter in function signature + databaseName: time-tracker-db + collectionName: event + leaseCollectionName: leases + createLeaseCollectionIfNotExists: true + connectionStringSetting: COSMOS_DATABASE_URI + createIfNotExists: true # A boolean value to indicate whether the collection is created + + handle_time_entry_events_trigger: + handler: src/handlers/handle_time_entry_events_trigger/__init__.py + events: + - cosmosDB: true + x-azure-settings: + name: documents # name of input parameter in function signature + direction: in + leaseCollectionName: leases + connectionStringSetting: COSMOS_DATABASE_URI + databaseName: time-tracker-db + collectionName: time_entry + createLeaseCollectionIfNotExists: true + leaseCollectionPrefix: time_entry_ + - cosmosDB: true + x-azure-settings: + direction: out + name: events # name of input parameter in function signature + databaseName: time-tracker-db + collectionName: event + leaseCollectionName: leases + createLeaseCollectionIfNotExists: true + connectionStringSetting: COSMOS_DATABASE_URI + createIfNotExists: true # A boolean value to indicate whether the collection is created \ No newline at end of file diff --git a/python-functions/src/handlers/handle_activity_events_trigger/__init__.py b/python-functions/src/handlers/handle_activity_events_trigger/__init__.py index cac5e80..d1c6560 100644 --- a/python-functions/src/handlers/handle_activity_events_trigger/__init__.py +++ b/python-functions/src/handlers/handle_activity_events_trigger/__init__.py @@ -1,3 +1,3 @@ -from ..shared_code import handle_events_trigger +import handle_events_trigger main = handle_events_trigger.main \ No newline at end of file diff --git a/python-functions/src/handlers/handle_activity_events_trigger/handle_events_trigger.py b/python-functions/src/handlers/handle_activity_events_trigger/handle_events_trigger.py new file mode 100644 index 0000000..63501bf --- /dev/null +++ b/python-functions/src/handlers/handle_activity_events_trigger/handle_events_trigger.py @@ -0,0 +1,34 @@ +import logging +import uuid +from datetime import datetime + +import azure.functions as func + + +def main(documents: func.DocumentList, events: func.Out[func.Document]): + if documents: + new_events = func.DocumentList() + + for doc in documents: + logging.info(doc.to_json()) + + event_context = doc.get("_last_event_ctx") + if event_context is not None: + new_events.append(func.Document.from_dict({ + "id": str(uuid.uuid4()), + "date": datetime.utcnow().isoformat(), + "user_id": event_context.get("user_id"), + "action": event_context.get("action"), + "description": event_context.get("description"), + "item_id": doc.get("id"), + "container_id": event_context.get("container_id"), + "session_id": event_context.get("session_id"), + "tenant_id": event_context.get("tenant_id"), + })) + else: + logging.warning("- Not saved!") + + if len(new_events): + events.set(new_events) + else: + logging.warning("No valid events were found!") \ No newline at end of file diff --git a/python-functions/src/handlers/handle_customer_trigger/__init__.py b/python-functions/src/handlers/handle_customer_trigger/__init__.py index 1f1ec30..d62d6bb 100644 --- a/python-functions/src/handlers/handle_customer_trigger/__init__.py +++ b/python-functions/src/handlers/handle_customer_trigger/__init__.py @@ -1,3 +1,3 @@ -from ..shared_code.handle_events_trigger import main as handler +from handle_events_trigger import main as handler main = handler \ No newline at end of file diff --git a/python-functions/src/handlers/handle_customer_trigger/handle_events_trigger.py b/python-functions/src/handlers/handle_customer_trigger/handle_events_trigger.py new file mode 100644 index 0000000..63501bf --- /dev/null +++ b/python-functions/src/handlers/handle_customer_trigger/handle_events_trigger.py @@ -0,0 +1,34 @@ +import logging +import uuid +from datetime import datetime + +import azure.functions as func + + +def main(documents: func.DocumentList, events: func.Out[func.Document]): + if documents: + new_events = func.DocumentList() + + for doc in documents: + logging.info(doc.to_json()) + + event_context = doc.get("_last_event_ctx") + if event_context is not None: + new_events.append(func.Document.from_dict({ + "id": str(uuid.uuid4()), + "date": datetime.utcnow().isoformat(), + "user_id": event_context.get("user_id"), + "action": event_context.get("action"), + "description": event_context.get("description"), + "item_id": doc.get("id"), + "container_id": event_context.get("container_id"), + "session_id": event_context.get("session_id"), + "tenant_id": event_context.get("tenant_id"), + })) + else: + logging.warning("- Not saved!") + + if len(new_events): + events.set(new_events) + else: + logging.warning("No valid events were found!") \ No newline at end of file diff --git a/python-functions/src/handlers/handle_project_events_trigger/__init__.py b/python-functions/src/handlers/handle_project_events_trigger/__init__.py index fc260d2..55ad97e 100644 --- a/python-functions/src/handlers/handle_project_events_trigger/__init__.py +++ b/python-functions/src/handlers/handle_project_events_trigger/__init__.py @@ -1,3 +1,3 @@ -from ..shared_code.handle_events_trigger import main as handler +from handle_events_trigger import main as handler main = handler diff --git a/python-functions/src/handlers/handle_project_events_trigger/handle_events_trigger.py b/python-functions/src/handlers/handle_project_events_trigger/handle_events_trigger.py new file mode 100644 index 0000000..63501bf --- /dev/null +++ b/python-functions/src/handlers/handle_project_events_trigger/handle_events_trigger.py @@ -0,0 +1,34 @@ +import logging +import uuid +from datetime import datetime + +import azure.functions as func + + +def main(documents: func.DocumentList, events: func.Out[func.Document]): + if documents: + new_events = func.DocumentList() + + for doc in documents: + logging.info(doc.to_json()) + + event_context = doc.get("_last_event_ctx") + if event_context is not None: + new_events.append(func.Document.from_dict({ + "id": str(uuid.uuid4()), + "date": datetime.utcnow().isoformat(), + "user_id": event_context.get("user_id"), + "action": event_context.get("action"), + "description": event_context.get("description"), + "item_id": doc.get("id"), + "container_id": event_context.get("container_id"), + "session_id": event_context.get("session_id"), + "tenant_id": event_context.get("tenant_id"), + })) + else: + logging.warning("- Not saved!") + + if len(new_events): + events.set(new_events) + else: + logging.warning("No valid events were found!") \ No newline at end of file diff --git a/python-functions/src/handlers/handle_project_type_events_trigger/__init__.py b/python-functions/src/handlers/handle_project_type_events_trigger/__init__.py index 1f1ec30..d62d6bb 100644 --- a/python-functions/src/handlers/handle_project_type_events_trigger/__init__.py +++ b/python-functions/src/handlers/handle_project_type_events_trigger/__init__.py @@ -1,3 +1,3 @@ -from ..shared_code.handle_events_trigger import main as handler +from handle_events_trigger import main as handler main = handler \ No newline at end of file diff --git a/python-functions/src/handlers/handle_project_type_events_trigger/handle_events_trigger.py b/python-functions/src/handlers/handle_project_type_events_trigger/handle_events_trigger.py new file mode 100644 index 0000000..63501bf --- /dev/null +++ b/python-functions/src/handlers/handle_project_type_events_trigger/handle_events_trigger.py @@ -0,0 +1,34 @@ +import logging +import uuid +from datetime import datetime + +import azure.functions as func + + +def main(documents: func.DocumentList, events: func.Out[func.Document]): + if documents: + new_events = func.DocumentList() + + for doc in documents: + logging.info(doc.to_json()) + + event_context = doc.get("_last_event_ctx") + if event_context is not None: + new_events.append(func.Document.from_dict({ + "id": str(uuid.uuid4()), + "date": datetime.utcnow().isoformat(), + "user_id": event_context.get("user_id"), + "action": event_context.get("action"), + "description": event_context.get("description"), + "item_id": doc.get("id"), + "container_id": event_context.get("container_id"), + "session_id": event_context.get("session_id"), + "tenant_id": event_context.get("tenant_id"), + })) + else: + logging.warning("- Not saved!") + + if len(new_events): + events.set(new_events) + else: + logging.warning("No valid events were found!") \ No newline at end of file diff --git a/python-functions/src/handlers/handle_time_entry_events_trigger/__init__.py b/python-functions/src/handlers/handle_time_entry_events_trigger/__init__.py index 757eb9e..55ad97e 100644 --- a/python-functions/src/handlers/handle_time_entry_events_trigger/__init__.py +++ b/python-functions/src/handlers/handle_time_entry_events_trigger/__init__.py @@ -1,3 +1,3 @@ -from __app__.shared_code.handle_events_trigger import main as handler +from handle_events_trigger import main as handler main = handler diff --git a/python-functions/src/handlers/handle_time_entry_events_trigger/handle_events_trigger.py b/python-functions/src/handlers/handle_time_entry_events_trigger/handle_events_trigger.py new file mode 100644 index 0000000..63501bf --- /dev/null +++ b/python-functions/src/handlers/handle_time_entry_events_trigger/handle_events_trigger.py @@ -0,0 +1,34 @@ +import logging +import uuid +from datetime import datetime + +import azure.functions as func + + +def main(documents: func.DocumentList, events: func.Out[func.Document]): + if documents: + new_events = func.DocumentList() + + for doc in documents: + logging.info(doc.to_json()) + + event_context = doc.get("_last_event_ctx") + if event_context is not None: + new_events.append(func.Document.from_dict({ + "id": str(uuid.uuid4()), + "date": datetime.utcnow().isoformat(), + "user_id": event_context.get("user_id"), + "action": event_context.get("action"), + "description": event_context.get("description"), + "item_id": doc.get("id"), + "container_id": event_context.get("container_id"), + "session_id": event_context.get("session_id"), + "tenant_id": event_context.get("tenant_id"), + })) + else: + logging.warning("- Not saved!") + + if len(new_events): + events.set(new_events) + else: + logging.warning("No valid events were found!") \ No newline at end of file