From c9580cd40dc02a3de31dc00670dc1cd9be546050 Mon Sep 17 00:00:00 2001 From: KrishnaSolo Date: Sun, 7 Feb 2021 13:47:41 -0500 Subject: [PATCH 1/5] added prettier to clean up code --- takeNotes-src/deleteUser/.prettierignore | 106 +++ takeNotes-src/deleteUser/.prettierrc.json | 1 + takeNotes-src/deleteUser/app.js | 81 +- takeNotes-src/deleteUser/package-lock.json | 862 +++++++++++++++++++++ takeNotes-src/deleteUser/package.json | 7 +- takeNotes-src/getUser/.prettierignore | 106 +++ takeNotes-src/getUser/package.json | 3 +- takeNotes-src/postUser/.prettierignore | 106 +++ takeNotes-src/postUser/app.js | 168 ++-- takeNotes-src/postUser/package.json | 3 +- takeNotes-src/postUser/test.js | 12 +- takeNotes-src/putUser/.prettierignore | 106 +++ takeNotes-src/putUser/app.js | 81 +- takeNotes-src/putUser/package.json | 3 +- 14 files changed, 1493 insertions(+), 152 deletions(-) create mode 100644 takeNotes-src/deleteUser/.prettierignore create mode 100644 takeNotes-src/deleteUser/.prettierrc.json create mode 100644 takeNotes-src/getUser/.prettierignore create mode 100644 takeNotes-src/postUser/.prettierignore create mode 100644 takeNotes-src/putUser/.prettierignore diff --git a/takeNotes-src/deleteUser/.prettierignore b/takeNotes-src/deleteUser/.prettierignore new file mode 100644 index 0000000..195a343 --- /dev/null +++ b/takeNotes-src/deleteUser/.prettierignore @@ -0,0 +1,106 @@ +*.DS_Store +# Logs +logs +*.log +npm-debug.log* +yarn-debug.log* +yarn-error.log* +lerna-debug.log* +*.json + +# Diagnostic reports (https://nodejs.org/api/report.html) +report.[0-9]*.[0-9]*.[0-9]*.[0-9]*.json + +# Runtime data +pids +*.pid +*.seed +*.pid.lock + +# Directory for instrumented libs generated by jscoverage/JSCover +lib-cov + +# Coverage directory used by tools like istanbul +coverage +*.lcov + +# nyc test coverage +.nyc_output + +# Grunt intermediate storage (https://gruntjs.com/creating-plugins#storing-task-files) +.grunt + +# Bower dependency directory (https://bower.io/) +bower_components + +# node-waf configuration +.lock-wscript + +# Compiled binary addons (https://nodejs.org/api/addons.html) +build/Release + +# Dependency directories +node_modules/ +jspm_packages/ + +# TypeScript v1 declaration files +typings/ + +# TypeScript cache +*.tsbuildinfo + +# Optional npm cache directory +.npm + +# Optional eslint cache +.eslintcache + +# Microbundle cache +.rpt2_cache/ +.rts2_cache_cjs/ +.rts2_cache_es/ +.rts2_cache_umd/ + +# Optional REPL history +.node_repl_history + +# Output of 'npm pack' +*.tgz + +# Yarn Integrity file +.yarn-integrity + +# dotenv environment variables file +.env +.env.test + +# parcel-bundler cache (https://parceljs.org/) +.cache + +# Next.js build output +.next + +# Nuxt.js build / generate output +.nuxt +dist + +# Gatsby files +.cache/ +# Comment in the public line in if your project uses Gatsby and *not* Next.js +# https://nextjs.org/blog/next-9-1#public-directory-support +# public + +# vuepress build output +.vuepress/dist + +# Serverless directories +.serverless/ + +# FuseBox cache +.fusebox/ + +# DynamoDB Local files +.dynamodb/ + +# TernJS port file +.tern-port \ No newline at end of file diff --git a/takeNotes-src/deleteUser/.prettierrc.json b/takeNotes-src/deleteUser/.prettierrc.json new file mode 100644 index 0000000..0967ef4 --- /dev/null +++ b/takeNotes-src/deleteUser/.prettierrc.json @@ -0,0 +1 @@ +{} diff --git a/takeNotes-src/deleteUser/app.js b/takeNotes-src/deleteUser/app.js index 1073634..e1a8497 100644 --- a/takeNotes-src/deleteUser/app.js +++ b/takeNotes-src/deleteUser/app.js @@ -1,6 +1,10 @@ // default imports -const AWS = require('aws-sdk'); +const AWS = require("aws-sdk"); const DDB = new AWS.DynamoDB({ apiVersion: "2012-10-08" }); +const { + CognitoIdentityProviderClient, + DeleteUserCommand, +} = require("@aws-sdk/client-cognito-identity-provider"); // environment variables const { TABLE_NAME, ENDPOINT_OVERRIDE, REGION } = process.env; @@ -8,43 +12,68 @@ const options = { region: REGION }; AWS.config.update({ region: REGION }); if (ENDPOINT_OVERRIDE !== "") { - options.endpoint = ENDPOINT_OVERRIDE; + options.endpoint = ENDPOINT_OVERRIDE; } const docClient = new AWS.DynamoDB.DocumentClient(options); +const cognitoClient = new CognitoIdentityProviderClient({ + region: "us-east-1", +}); + // response helper const response = (statusCode, body, additionalHeaders) => ({ - statusCode, - body: JSON.stringify(body), - headers: { 'Content-Type': 'application/json', 'Access-Control-Allow-Origin': '*', ...additionalHeaders }, + statusCode, + body: JSON.stringify(body), + headers: { + "Content-Type": "application/json", + "Access-Control-Allow-Origin": "*", + ...additionalHeaders, + }, }); function isValidRequest(context, event) { - return (event !== null) && - (event.pathParameters !== null) && - (event.pathParameters.id !== null); + return ( + event !== null && + event.pathParameters !== null && + event.pathParameters.id !== null + ); } function deleteRecordById(recordId) { - let params = { - TableName: TABLE_NAME, - Key: { - id: recordId - } - }; - return docClient.delete(params); + let params = { + TableName: TABLE_NAME, + Key: { + id: recordId, + }, + }; + return docClient.delete(params); +} + +function setUpParamas(body) { + let body = JSON.parse(body); + let params = { AccessToken: body.token }; + console.log("body: " + body + " params: " + params); + return params; +} + +function deleteCognitoUser(body) { + const command = new DeleteUserCommand(setUpParamas(body)); + console.log(command); + return cognitoClient.send(command); } // Lambda Handler exports.deleteUser = async (event, context, callback) => { - if (!isValidRequest(context, event)) { - return response(400, { message: "Error: Invalid request" }); - } - - try { - let data = await deleteRecordById(event.pathParameters.id).promise(); - return response(200, data); - } catch (err) { - return response(400, { message: err.message }); - } -} \ No newline at end of file + if (!isValidRequest(context, event)) { + return response(400, { message: "Error: Invalid request" }); + } + + try { + console.log(event); + let data = await deleteRecordById(event.pathParameters.id).promise(); + data = await deleteCognitoUser(event.body); + return response(200, data); + } catch (err) { + return response(400, { message: err.message }); + } +}; diff --git a/takeNotes-src/deleteUser/package-lock.json b/takeNotes-src/deleteUser/package-lock.json index 3151d88..fdefe75 100644 --- a/takeNotes-src/deleteUser/package-lock.json +++ b/takeNotes-src/deleteUser/package-lock.json @@ -4,6 +4,839 @@ "lockfileVersion": 1, "requires": true, "dependencies": { + "@aws-crypto/ie11-detection": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/@aws-crypto/ie11-detection/-/ie11-detection-1.0.0.tgz", + "integrity": "sha512-kCKVhCF1oDxFYgQrxXmIrS5oaWulkvRcPz+QBDMsUr2crbF4VGgGT6+uQhSwJFdUAQ2A//Vq+uT83eJrkzFgXA==", + "requires": { + "tslib": "^1.11.1" + }, + "dependencies": { + "tslib": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", + "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==" + } + } + }, + "@aws-crypto/sha256-browser": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@aws-crypto/sha256-browser/-/sha256-browser-1.1.0.tgz", + "integrity": "sha512-VIpuLRDonMAHgomrsm/zKbeXTnxpr4aHDQmS4pF+NcpvBp64l675yjGA9hyUYs/QJwBjUl8WqMjh9tIRgi85Sg==", + "requires": { + "@aws-crypto/ie11-detection": "^1.0.0", + "@aws-crypto/sha256-js": "^1.1.0", + "@aws-crypto/supports-web-crypto": "^1.0.0", + "@aws-sdk/types": "^3.1.0", + "@aws-sdk/util-locate-window": "^3.0.0", + "@aws-sdk/util-utf8-browser": "^3.0.0", + "tslib": "^1.11.1" + }, + "dependencies": { + "tslib": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", + "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==" + } + } + }, + "@aws-crypto/sha256-js": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@aws-crypto/sha256-js/-/sha256-js-1.1.0.tgz", + "integrity": "sha512-VIhuqbPgXDVr8sZe2yhgQcDRRmzf4CI8fmC1A3bHiRfE6wlz1d8KpeemqbuoEHotz/Dch9yOxlshyQDNjNFeHA==", + "requires": { + "@aws-sdk/types": "^3.1.0", + "@aws-sdk/util-utf8-browser": "^3.0.0", + "tslib": "^1.11.1" + }, + "dependencies": { + "tslib": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", + "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==" + } + } + }, + "@aws-crypto/supports-web-crypto": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/@aws-crypto/supports-web-crypto/-/supports-web-crypto-1.0.0.tgz", + "integrity": "sha512-IHLfv+WmVH89EW4n6a5eE8/hUlz6qkWGMn/v4r5ZgzcXdTC5nolii2z3k46y01hWRiC2PPhOdeSLzMUCUMco7g==", + "requires": { + "tslib": "^1.11.1" + }, + "dependencies": { + "tslib": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", + "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==" + } + } + }, + "@aws-sdk/abort-controller": { + "version": "3.4.1", + "resolved": "https://registry.npmjs.org/@aws-sdk/abort-controller/-/abort-controller-3.4.1.tgz", + "integrity": "sha512-QM5xwtj6YqW6UI5vW1VbUPBkpfa6wyTjLhmDW/CxfRS+XKGyDooVCsAC6OG8tsBvk9gXN5/tXXYtFqoRU8xdkA==", + "requires": { + "@aws-sdk/types": "3.4.1", + "tslib": "^1.8.0" + }, + "dependencies": { + "tslib": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", + "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==" + } + } + }, + "@aws-sdk/client-cognito-identity-provider": { + "version": "3.4.1", + "resolved": "https://registry.npmjs.org/@aws-sdk/client-cognito-identity-provider/-/client-cognito-identity-provider-3.4.1.tgz", + "integrity": "sha512-s4xqQL+8SFM1BcL+5Pwx3QxChHyKo5mX8YTCNoJwX5QEWH2CJDuvW1w/8yT9+fep9KbeMrXER8zrzYKbD1wS+g==", + "requires": { + "@aws-crypto/sha256-browser": "^1.0.0", + "@aws-crypto/sha256-js": "^1.0.0", + "@aws-sdk/config-resolver": "3.4.1", + "@aws-sdk/credential-provider-node": "3.4.1", + "@aws-sdk/fetch-http-handler": "3.4.1", + "@aws-sdk/hash-node": "3.4.1", + "@aws-sdk/invalid-dependency": "3.4.1", + "@aws-sdk/middleware-content-length": "3.4.1", + "@aws-sdk/middleware-host-header": "3.4.1", + "@aws-sdk/middleware-logger": "3.4.1", + "@aws-sdk/middleware-retry": "3.4.1", + "@aws-sdk/middleware-serde": "3.4.1", + "@aws-sdk/middleware-signing": "3.4.1", + "@aws-sdk/middleware-stack": "3.4.1", + "@aws-sdk/middleware-user-agent": "3.4.1", + "@aws-sdk/node-config-provider": "3.4.1", + "@aws-sdk/node-http-handler": "3.4.1", + "@aws-sdk/protocol-http": "3.4.1", + "@aws-sdk/smithy-client": "3.4.1", + "@aws-sdk/types": "3.4.1", + "@aws-sdk/url-parser": "3.4.1", + "@aws-sdk/url-parser-native": "3.4.1", + "@aws-sdk/util-base64-browser": "3.4.1", + "@aws-sdk/util-base64-node": "3.4.1", + "@aws-sdk/util-body-length-browser": "3.4.1", + "@aws-sdk/util-body-length-node": "3.4.1", + "@aws-sdk/util-user-agent-browser": "3.4.1", + "@aws-sdk/util-user-agent-node": "3.4.1", + "@aws-sdk/util-utf8-browser": "3.4.1", + "@aws-sdk/util-utf8-node": "3.4.1", + "tslib": "^2.0.0" + } + }, + "@aws-sdk/config-resolver": { + "version": "3.4.1", + "resolved": "https://registry.npmjs.org/@aws-sdk/config-resolver/-/config-resolver-3.4.1.tgz", + "integrity": "sha512-pnXcli0B3KqNVA3kuNfA9gEmJW9i7GE713wMeAtyaZeK89Uk7v3A9FzNkAEMgGTVJfEAGUYzfuxR8tQRWsYdEQ==", + "requires": { + "@aws-sdk/signature-v4": "3.4.1", + "@aws-sdk/types": "3.4.1", + "tslib": "^1.8.0" + }, + "dependencies": { + "tslib": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", + "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==" + } + } + }, + "@aws-sdk/credential-provider-env": { + "version": "3.4.1", + "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-env/-/credential-provider-env-3.4.1.tgz", + "integrity": "sha512-MwQRbsgq+skGinT/zP0fCxFrgOLXca64Z7H04gpDwLY1gCaqpWLR30r8zYkoNUZM/S72s3bec5DXxJd18BFpGA==", + "requires": { + "@aws-sdk/property-provider": "3.4.1", + "@aws-sdk/types": "3.4.1", + "tslib": "^1.8.0" + }, + "dependencies": { + "tslib": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", + "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==" + } + } + }, + "@aws-sdk/credential-provider-imds": { + "version": "3.4.1", + "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-imds/-/credential-provider-imds-3.4.1.tgz", + "integrity": "sha512-UfwixtJCjMXodKoQW9NygdIPWrpginZQdjAyaDaRaLZ48ahcj3U0J+mrqs8qTilubO4cl+Oj0DORdfnyR2iIcA==", + "requires": { + "@aws-sdk/property-provider": "3.4.1", + "@aws-sdk/types": "3.4.1", + "tslib": "^1.8.0" + }, + "dependencies": { + "tslib": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", + "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==" + } + } + }, + "@aws-sdk/credential-provider-ini": { + "version": "3.4.1", + "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-ini/-/credential-provider-ini-3.4.1.tgz", + "integrity": "sha512-q/2cGi+F4/NnAqX6T9O2RPQLxgKTC05Fs2HT+xtg5BHNKmrl6YCkm5Xi3VBdoZ+gcyaTqyXEvnyotZvg7pXWnQ==", + "requires": { + "@aws-sdk/property-provider": "3.4.1", + "@aws-sdk/shared-ini-file-loader": "3.4.1", + "@aws-sdk/types": "3.4.1", + "tslib": "^1.8.0" + }, + "dependencies": { + "tslib": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", + "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==" + } + } + }, + "@aws-sdk/credential-provider-node": { + "version": "3.4.1", + "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-node/-/credential-provider-node-3.4.1.tgz", + "integrity": "sha512-8qRIpyuKxAjH4LNcAt4hpMPCsaiIMFzlJHyq+xXo303KYWZ79lpkKL1jumKlhnoJreCdGy1X/hJAlgiZinPYag==", + "requires": { + "@aws-sdk/credential-provider-env": "3.4.1", + "@aws-sdk/credential-provider-imds": "3.4.1", + "@aws-sdk/credential-provider-ini": "3.4.1", + "@aws-sdk/credential-provider-process": "3.4.1", + "@aws-sdk/property-provider": "3.4.1", + "@aws-sdk/types": "3.4.1", + "tslib": "^1.8.0" + }, + "dependencies": { + "tslib": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", + "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==" + } + } + }, + "@aws-sdk/credential-provider-process": { + "version": "3.4.1", + "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-process/-/credential-provider-process-3.4.1.tgz", + "integrity": "sha512-BfRjSUSkxSTcbyUV4+fNIjVnq+ht2tc9E7j8+q6q8f5Ny4RgsIIjA+wMPZQUsm3TL/hyJl9sPkzEyk1y58iwqA==", + "requires": { + "@aws-sdk/credential-provider-ini": "3.4.1", + "@aws-sdk/property-provider": "3.4.1", + "@aws-sdk/shared-ini-file-loader": "3.4.1", + "@aws-sdk/types": "3.4.1", + "tslib": "^1.8.0" + }, + "dependencies": { + "tslib": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", + "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==" + } + } + }, + "@aws-sdk/fetch-http-handler": { + "version": "3.4.1", + "resolved": "https://registry.npmjs.org/@aws-sdk/fetch-http-handler/-/fetch-http-handler-3.4.1.tgz", + "integrity": "sha512-7fG+B3rb2VUE9RGJRytYbThQ5azNkLq+9v5QOWZnmerpNcNyPCdv5bqqEMXycsgRXowOTSQ5LdieN+NtshhXng==", + "requires": { + "@aws-sdk/protocol-http": "3.4.1", + "@aws-sdk/querystring-builder": "3.4.1", + "@aws-sdk/types": "3.4.1", + "@aws-sdk/util-base64-browser": "3.4.1", + "tslib": "^1.8.0" + }, + "dependencies": { + "tslib": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", + "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==" + } + } + }, + "@aws-sdk/hash-node": { + "version": "3.4.1", + "resolved": "https://registry.npmjs.org/@aws-sdk/hash-node/-/hash-node-3.4.1.tgz", + "integrity": "sha512-JSOBXnjxPeRGoej5ShFxLRkbUZ4WCd/t5Z5hVYmVndbg2sFJATPoHJbC75mNDZ8f3zbTF25dRMAQAsnM4RFpQw==", + "requires": { + "@aws-sdk/types": "3.4.1", + "@aws-sdk/util-buffer-from": "3.4.1", + "tslib": "^1.8.0" + }, + "dependencies": { + "tslib": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", + "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==" + } + } + }, + "@aws-sdk/invalid-dependency": { + "version": "3.4.1", + "resolved": "https://registry.npmjs.org/@aws-sdk/invalid-dependency/-/invalid-dependency-3.4.1.tgz", + "integrity": "sha512-lS680g5BruZ+J9dq0uEE5UwzJ9kC76YqvRMyAGY0O85Vq9Wytr0z3eeAF6cIzAmKuDpeFj62nn4qV+vaiB0sNw==", + "requires": { + "@aws-sdk/types": "3.4.1", + "tslib": "^1.8.0" + }, + "dependencies": { + "tslib": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", + "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==" + } + } + }, + "@aws-sdk/is-array-buffer": { + "version": "3.4.1", + "resolved": "https://registry.npmjs.org/@aws-sdk/is-array-buffer/-/is-array-buffer-3.4.1.tgz", + "integrity": "sha512-txJ+fixpotinL9kaRBoMQwoCwkfW9d0gq0DW+T3OsEMbY11YoBU7de8syZ3hfLDaLxSp+5kUvQyplmW9oRWK+g==", + "requires": { + "tslib": "^1.8.0" + }, + "dependencies": { + "tslib": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", + "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==" + } + } + }, + "@aws-sdk/middleware-content-length": { + "version": "3.4.1", + "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-content-length/-/middleware-content-length-3.4.1.tgz", + "integrity": "sha512-6BX4frJ7aBPJe+KmRzsu740zUIWnBAWbOHT+q8a57HAo6A62gM5A6taXogP0yRi7ZRAuqi1sXXhhhj1X8KseWQ==", + "requires": { + "@aws-sdk/protocol-http": "3.4.1", + "@aws-sdk/types": "3.4.1", + "tslib": "^1.8.0" + }, + "dependencies": { + "tslib": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", + "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==" + } + } + }, + "@aws-sdk/middleware-host-header": { + "version": "3.4.1", + "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-host-header/-/middleware-host-header-3.4.1.tgz", + "integrity": "sha512-rYjU6IT4oVkhQ8lUtPIqOeQMfGpxXEgmQFiXbfKiz7CW7a4228fi8aCCjbYlZfv711XcULtBxczBmN+M1X5cKQ==", + "requires": { + "@aws-sdk/protocol-http": "3.4.1", + "@aws-sdk/types": "3.4.1", + "tslib": "^1.8.0" + }, + "dependencies": { + "tslib": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", + "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==" + } + } + }, + "@aws-sdk/middleware-logger": { + "version": "3.4.1", + "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-logger/-/middleware-logger-3.4.1.tgz", + "integrity": "sha512-fv3dqbOHoscAOrn8CxbCIWpB43VrK+Z2RZJZByZA1pyXPCuC1uN8lM9r84HK/qq9CcEFrMPaOX6aqUQXNjzL3A==", + "requires": { + "@aws-sdk/types": "3.4.1", + "tslib": "^1.8.0" + }, + "dependencies": { + "tslib": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", + "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==" + } + } + }, + "@aws-sdk/middleware-retry": { + "version": "3.4.1", + "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-retry/-/middleware-retry-3.4.1.tgz", + "integrity": "sha512-hapcIp6qscJp4DrbfZw6C6SHsxAqyGdpMCZQxXzLTrlo+9jQIpSV1RFmqAzo3YRQMc/eT5xDFD00cCbJk6kc4g==", + "requires": { + "@aws-sdk/protocol-http": "3.4.1", + "@aws-sdk/service-error-classification": "3.4.1", + "@aws-sdk/types": "3.4.1", + "react-native-get-random-values": "^1.4.0", + "tslib": "^1.8.0", + "uuid": "^3.0.0" + }, + "dependencies": { + "tslib": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", + "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==" + }, + "uuid": { + "version": "3.4.0", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.4.0.tgz", + "integrity": "sha512-HjSDRw6gZE5JMggctHBcjVak08+KEVhSIiDzFnT9S9aegmp85S/bReBVTb4QTFaRNptJ9kuYaNhnbNEOkbKb/A==" + } + } + }, + "@aws-sdk/middleware-serde": { + "version": "3.4.1", + "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-serde/-/middleware-serde-3.4.1.tgz", + "integrity": "sha512-xyn6TrWwkuFrkuYY77dNKotBVeM3UZHYL6qXM5bcv9fsi0HmrSrairQEWDVwxySTwP4ocEugtzZjxcB6lT823w==", + "requires": { + "@aws-sdk/types": "3.4.1", + "tslib": "^1.8.0" + }, + "dependencies": { + "tslib": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", + "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==" + } + } + }, + "@aws-sdk/middleware-signing": { + "version": "3.4.1", + "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-signing/-/middleware-signing-3.4.1.tgz", + "integrity": "sha512-0bOOjLno2eRNC3FByADwUFE7+3h+Kbjb4jQIjhGFi/gdMgbynd6CSRdYk6TKjQGZI5Y+OCVDSOLbNJfd0x4wJw==", + "requires": { + "@aws-sdk/protocol-http": "3.4.1", + "@aws-sdk/signature-v4": "3.4.1", + "@aws-sdk/types": "3.4.1", + "tslib": "^1.8.0" + }, + "dependencies": { + "tslib": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", + "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==" + } + } + }, + "@aws-sdk/middleware-stack": { + "version": "3.4.1", + "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-stack/-/middleware-stack-3.4.1.tgz", + "integrity": "sha512-uPOrLNV18ozIdDVwfQwUeb3AKknX4uKdUSZnom8toF7u56fKRmW/JY0I2MslT21+VNimM7e/9+8z1M6Up+Jf+w==", + "requires": { + "tslib": "^1.8.0" + }, + "dependencies": { + "tslib": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", + "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==" + } + } + }, + "@aws-sdk/middleware-user-agent": { + "version": "3.4.1", + "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-user-agent/-/middleware-user-agent-3.4.1.tgz", + "integrity": "sha512-Txn7azL+YJ7K+HCBhF1NCiyeYWVE0FtUp5zrx/jUPnnjVWy7wEMViLSgZQHkWoroMjtGNFAS/T/1+Znwkukk6g==", + "requires": { + "@aws-sdk/protocol-http": "3.4.1", + "@aws-sdk/types": "3.4.1", + "tslib": "^1.8.0" + }, + "dependencies": { + "tslib": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", + "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==" + } + } + }, + "@aws-sdk/node-config-provider": { + "version": "3.4.1", + "resolved": "https://registry.npmjs.org/@aws-sdk/node-config-provider/-/node-config-provider-3.4.1.tgz", + "integrity": "sha512-QV6JPZ8iG/t+2n/UhkopBOIsKnEeNR32MdnwdpjYU1EBS1W7adKXjX0CtneZ+0SOEKYmctVzcgAH8U+zjFBS5A==", + "requires": { + "@aws-sdk/property-provider": "3.4.1", + "@aws-sdk/shared-ini-file-loader": "3.4.1", + "@aws-sdk/types": "3.4.1", + "tslib": "^1.8.0" + }, + "dependencies": { + "tslib": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", + "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==" + } + } + }, + "@aws-sdk/node-http-handler": { + "version": "3.4.1", + "resolved": "https://registry.npmjs.org/@aws-sdk/node-http-handler/-/node-http-handler-3.4.1.tgz", + "integrity": "sha512-InF6wbOG1Xn4/hewmx0GMdBrIfMbBeoD0caRtzQdXYOcuQJkqAUuoSf12oV4YmqIZGWZmhLhmrPr5OU4pyQlsw==", + "requires": { + "@aws-sdk/abort-controller": "3.4.1", + "@aws-sdk/protocol-http": "3.4.1", + "@aws-sdk/querystring-builder": "3.4.1", + "@aws-sdk/types": "3.4.1", + "tslib": "^1.8.0" + }, + "dependencies": { + "tslib": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", + "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==" + } + } + }, + "@aws-sdk/property-provider": { + "version": "3.4.1", + "resolved": "https://registry.npmjs.org/@aws-sdk/property-provider/-/property-provider-3.4.1.tgz", + "integrity": "sha512-MAh+7ZmFKXWOrlhtvOnMOU9Xe/fHnLG5b7UduV/yduXQ2X+CqKJlBKX2ZuUNP7/7r46E89pasNzr80G0JWcv/A==", + "requires": { + "@aws-sdk/types": "3.4.1", + "tslib": "^1.8.0" + }, + "dependencies": { + "tslib": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", + "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==" + } + } + }, + "@aws-sdk/protocol-http": { + "version": "3.4.1", + "resolved": "https://registry.npmjs.org/@aws-sdk/protocol-http/-/protocol-http-3.4.1.tgz", + "integrity": "sha512-8/eHa6a9rLWmakQKis06mBlf+pXd5xOGgcUliMc56kuVl5qQVHJ/wkM8jkVoMnEOG3IwPJOCExVxvm+bsdethA==", + "requires": { + "@aws-sdk/types": "3.4.1", + "tslib": "^1.8.0" + }, + "dependencies": { + "tslib": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", + "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==" + } + } + }, + "@aws-sdk/querystring-builder": { + "version": "3.4.1", + "resolved": "https://registry.npmjs.org/@aws-sdk/querystring-builder/-/querystring-builder-3.4.1.tgz", + "integrity": "sha512-/xTutRKK9Kjx320E1cvp4Mieh941jd9181T7N3M3A2kK7Pf0hBpdrIsqvrVQd2+fgDx2m/Q3+HLAV9N95DXZbA==", + "requires": { + "@aws-sdk/types": "3.4.1", + "@aws-sdk/util-uri-escape": "3.4.1", + "tslib": "^1.8.0" + }, + "dependencies": { + "tslib": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", + "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==" + } + } + }, + "@aws-sdk/querystring-parser": { + "version": "3.4.1", + "resolved": "https://registry.npmjs.org/@aws-sdk/querystring-parser/-/querystring-parser-3.4.1.tgz", + "integrity": "sha512-7ivu5IeZB17iYpZow8tEQB1Zhs/dm/JFwqScWfawQcBDAPx23khX1DjM0/oBdGXOkaOZ1/vsj+jvDxRJZmtM1A==", + "requires": { + "@aws-sdk/types": "3.4.1", + "tslib": "^1.8.0" + }, + "dependencies": { + "tslib": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", + "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==" + } + } + }, + "@aws-sdk/service-error-classification": { + "version": "3.4.1", + "resolved": "https://registry.npmjs.org/@aws-sdk/service-error-classification/-/service-error-classification-3.4.1.tgz", + "integrity": "sha512-PODbUKioR1wRaPtw/BFZS6+SlHl4+Ua7KOxtUyH17frOwbNUqOgNpeBMxNffpJni/yAyV7FP6oHPODUlHZoJ7Q==" + }, + "@aws-sdk/shared-ini-file-loader": { + "version": "3.4.1", + "resolved": "https://registry.npmjs.org/@aws-sdk/shared-ini-file-loader/-/shared-ini-file-loader-3.4.1.tgz", + "integrity": "sha512-8FDYkJH0pQjfUWIugQz7fhWYmb5f5oo34jch6Wcsg4MrX2v0Ffw2/rpov/f+3l1U5g9d0T+rlFWxg1ZB6JM6hQ==", + "requires": { + "tslib": "^1.8.0" + }, + "dependencies": { + "tslib": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", + "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==" + } + } + }, + "@aws-sdk/signature-v4": { + "version": "3.4.1", + "resolved": "https://registry.npmjs.org/@aws-sdk/signature-v4/-/signature-v4-3.4.1.tgz", + "integrity": "sha512-TqK5xan4kCr88/iVKbsVzNsNd/LZevh/S/ZJ1X5M7oJqhvUR36q1L4byaceqm6AKruIlKAPVU7zVTTu2V5pX0g==", + "requires": { + "@aws-sdk/is-array-buffer": "3.4.1", + "@aws-sdk/types": "3.4.1", + "@aws-sdk/util-hex-encoding": "3.4.1", + "@aws-sdk/util-uri-escape": "3.4.1", + "tslib": "^1.8.0" + }, + "dependencies": { + "tslib": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", + "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==" + } + } + }, + "@aws-sdk/smithy-client": { + "version": "3.4.1", + "resolved": "https://registry.npmjs.org/@aws-sdk/smithy-client/-/smithy-client-3.4.1.tgz", + "integrity": "sha512-Qt1/zKS1mLz5Yd3XUm+iZcvhHLXaeZSIALfK/FC1nn4v2uDJSlXjzd1sszViUqz9lcf6BNNyBLB9k2z5lnhCiA==", + "requires": { + "@aws-sdk/middleware-stack": "3.4.1", + "@aws-sdk/types": "3.4.1", + "tslib": "^1.8.0" + }, + "dependencies": { + "tslib": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", + "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==" + } + } + }, + "@aws-sdk/types": { + "version": "3.4.1", + "resolved": "https://registry.npmjs.org/@aws-sdk/types/-/types-3.4.1.tgz", + "integrity": "sha512-HqDPRdMzseVD4I/8Bb8TBAzg2X0U7oDiPfvYcvZt8fpVO2SwBOiLMh9tiEnRin48uRBbQMAw8D8wmCpyU78Dvg==" + }, + "@aws-sdk/url-parser": { + "version": "3.4.1", + "resolved": "https://registry.npmjs.org/@aws-sdk/url-parser/-/url-parser-3.4.1.tgz", + "integrity": "sha512-ibvdL3b1XZ5nrjoJCBjELv1XqK0MmbWQ7XzsXgy75qrfKr0LoROejdkDd9WbD7RX0JA3Ji/9a1D8CbXkwWOcQA==", + "requires": { + "@aws-sdk/querystring-parser": "3.4.1", + "@aws-sdk/types": "3.4.1", + "tslib": "^1.8.0" + }, + "dependencies": { + "tslib": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", + "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==" + } + } + }, + "@aws-sdk/url-parser-native": { + "version": "3.4.1", + "resolved": "https://registry.npmjs.org/@aws-sdk/url-parser-native/-/url-parser-native-3.4.1.tgz", + "integrity": "sha512-DFPw1FiqZz5Qf1iW1h5tpV2kLV88Z0Zrsm7lvDsb4ROKU2biABkqcHzHAgueFSGMJaIrzv7nOHaNuVFuZSZDHQ==", + "requires": { + "@aws-sdk/querystring-parser": "3.4.1", + "@aws-sdk/types": "3.4.1", + "tslib": "^1.8.0", + "url": "^0.11.0" + }, + "dependencies": { + "tslib": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", + "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==" + }, + "url": { + "version": "0.11.0", + "resolved": "https://registry.npmjs.org/url/-/url-0.11.0.tgz", + "integrity": "sha1-ODjpfPxgUh63PFJajlW/3Z4uKPE=", + "requires": { + "punycode": "1.3.2", + "querystring": "0.2.0" + } + } + } + }, + "@aws-sdk/util-base64-browser": { + "version": "3.4.1", + "resolved": "https://registry.npmjs.org/@aws-sdk/util-base64-browser/-/util-base64-browser-3.4.1.tgz", + "integrity": "sha512-2VbOHFpW35XKlkVeVXWUfSEIHsvB4RNJUpHNXIy7CjTjZUd8FVCBIvaLdFMXhj1f7BPUVgPyvGtYvXC3bU0FUA==", + "requires": { + "tslib": "^1.8.0" + }, + "dependencies": { + "tslib": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", + "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==" + } + } + }, + "@aws-sdk/util-base64-node": { + "version": "3.4.1", + "resolved": "https://registry.npmjs.org/@aws-sdk/util-base64-node/-/util-base64-node-3.4.1.tgz", + "integrity": "sha512-9RBEK3VJq0B2Zlbiuw7N22fFJag+vG/cqanKvHpOLukzVHIL4dDH8hDA1Wh9cyKeYoqTQ9JP25zoOMb+Yy9MkQ==", + "requires": { + "@aws-sdk/util-buffer-from": "3.4.1", + "tslib": "^1.8.0" + }, + "dependencies": { + "tslib": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", + "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==" + } + } + }, + "@aws-sdk/util-body-length-browser": { + "version": "3.4.1", + "resolved": "https://registry.npmjs.org/@aws-sdk/util-body-length-browser/-/util-body-length-browser-3.4.1.tgz", + "integrity": "sha512-lLNC4qBAaU6DU6HV0t93CdDZZyzm9nWNASAe9S3nBr4BPb0emXEPX/bToblWWCSIE2be1WDKnxkCtEctkqjozw==", + "requires": { + "tslib": "^1.8.0" + }, + "dependencies": { + "tslib": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", + "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==" + } + } + }, + "@aws-sdk/util-body-length-node": { + "version": "3.4.1", + "resolved": "https://registry.npmjs.org/@aws-sdk/util-body-length-node/-/util-body-length-node-3.4.1.tgz", + "integrity": "sha512-K7cQCvdJc4m5FXF/87hIgyJRjjydnsYX8kG8MDY9cSJPXgDwmT2DCFlsD67OwixUxwTwj2IJ0MIuworUTGydKQ==", + "requires": { + "tslib": "^1.8.0" + }, + "dependencies": { + "tslib": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", + "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==" + } + } + }, + "@aws-sdk/util-buffer-from": { + "version": "3.4.1", + "resolved": "https://registry.npmjs.org/@aws-sdk/util-buffer-from/-/util-buffer-from-3.4.1.tgz", + "integrity": "sha512-RQz0xlR2LdfxnEyptTeAVBPPyNeqVz8Ib3pNR5mAjmARHT5w3FNSoRb/LRoRmzzV408qyKWdAUND7uugposj7A==", + "requires": { + "@aws-sdk/is-array-buffer": "3.4.1", + "tslib": "^1.8.0" + }, + "dependencies": { + "tslib": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", + "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==" + } + } + }, + "@aws-sdk/util-hex-encoding": { + "version": "3.4.1", + "resolved": "https://registry.npmjs.org/@aws-sdk/util-hex-encoding/-/util-hex-encoding-3.4.1.tgz", + "integrity": "sha512-t1yfE7nrVkaAVvt7/Nv+e3w90PSkplglFCCfKjgDwJ+DTIFMRhRCq5tI1iFcfJqCPpy8LUDYo40crZAPZLJyRA==", + "requires": { + "tslib": "^1.8.0" + }, + "dependencies": { + "tslib": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", + "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==" + } + } + }, + "@aws-sdk/util-locate-window": { + "version": "3.4.1", + "resolved": "https://registry.npmjs.org/@aws-sdk/util-locate-window/-/util-locate-window-3.4.1.tgz", + "integrity": "sha512-wjN2FWqlPDek9WIvwLeRCjjbf3P2751j2DL0EOUHmm231gpCCGfiV1Ykb1ZY9iKlYkFumybs8C+5QOQXTrQUlg==", + "requires": { + "tslib": "^1.8.0" + }, + "dependencies": { + "tslib": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", + "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==" + } + } + }, + "@aws-sdk/util-uri-escape": { + "version": "3.4.1", + "resolved": "https://registry.npmjs.org/@aws-sdk/util-uri-escape/-/util-uri-escape-3.4.1.tgz", + "integrity": "sha512-9KeC62PTYLx9Cat7Uc1g+9fL1h4XQdp2y6aln7d5VXVDFaeJqe4x4cmJNTrlOloH5kdVhFQ5f/EUUDYZ24gKjQ==", + "requires": { + "tslib": "^1.8.0" + }, + "dependencies": { + "tslib": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", + "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==" + } + } + }, + "@aws-sdk/util-user-agent-browser": { + "version": "3.4.1", + "resolved": "https://registry.npmjs.org/@aws-sdk/util-user-agent-browser/-/util-user-agent-browser-3.4.1.tgz", + "integrity": "sha512-8bycOF4zSRX1ddAk092mJoBXnh/iPTvwr9BcEjjSbDwrC9jDANW2xh5C889qUUpZy8jTORrbYYVoKiAjCDCOgg==", + "requires": { + "@aws-sdk/types": "3.4.1", + "bowser": "^2.11.0", + "tslib": "^1.8.0" + }, + "dependencies": { + "tslib": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", + "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==" + } + } + }, + "@aws-sdk/util-user-agent-node": { + "version": "3.4.1", + "resolved": "https://registry.npmjs.org/@aws-sdk/util-user-agent-node/-/util-user-agent-node-3.4.1.tgz", + "integrity": "sha512-YaJX1ZnsxNYOJbQmR3bNC/Z0xaAUD3qsqa62ML9aWJ37+Rw3EpQnuI1HBS67lbpt4vaTlANhtSJtV/ikNsUoqw==", + "requires": { + "@aws-sdk/node-config-provider": "3.4.1", + "@aws-sdk/types": "3.4.1", + "tslib": "^1.8.0" + }, + "dependencies": { + "tslib": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", + "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==" + } + } + }, + "@aws-sdk/util-utf8-browser": { + "version": "3.4.1", + "resolved": "https://registry.npmjs.org/@aws-sdk/util-utf8-browser/-/util-utf8-browser-3.4.1.tgz", + "integrity": "sha512-dZ13D/y0cqFAe6LlWa17BXseRzRh96i8Jdx23I8zNSTcXctIetqINMwtO9KeJMl20vQTj8iORb4J496FgVRuUA==", + "requires": { + "tslib": "^1.8.0" + }, + "dependencies": { + "tslib": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", + "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==" + } + } + }, + "@aws-sdk/util-utf8-node": { + "version": "3.4.1", + "resolved": "https://registry.npmjs.org/@aws-sdk/util-utf8-node/-/util-utf8-node-3.4.1.tgz", + "integrity": "sha512-89nrmzjQJJl0dHX7UfhwwTI7jNW8/PFOXKhSBNDaUjw5GAZHtsa8PNFSZ4Wmsyln7QT/c5ivggtrc6Xb3CZFdA==", + "requires": { + "@aws-sdk/util-buffer-from": "3.4.1", + "tslib": "^1.8.0" + }, + "dependencies": { + "tslib": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", + "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==" + } + } + }, "aws-sdk": { "version": "2.834.0", "resolved": "https://registry.npmjs.org/aws-sdk/-/aws-sdk-2.834.0.tgz", @@ -32,6 +865,11 @@ "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz", "integrity": "sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==" }, + "bowser": { + "version": "2.11.0", + "resolved": "https://registry.npmjs.org/bowser/-/bowser-2.11.0.tgz", + "integrity": "sha512-AlcaJBi/pqqJBIQ8U9Mcpc9i8Aqxn88Skv5d+xBX006BY5u8N3mGLHa5Lgppa7L/HfwgwLgZ6NYs+Ag6uUmJRA==" + }, "buffer": { "version": "4.9.2", "resolved": "https://registry.npmjs.org/buffer/-/buffer-4.9.2.tgz", @@ -47,6 +885,11 @@ "resolved": "https://registry.npmjs.org/events/-/events-1.1.1.tgz", "integrity": "sha1-nr23Y1rQmccNzEwqH1AEKI6L2SQ=" }, + "fast-base64-decode": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/fast-base64-decode/-/fast-base64-decode-1.0.0.tgz", + "integrity": "sha512-qwaScUgUGBYeDNRnbc/KyllVU88Jk1pRHPStuF/lO7B0/RTRLj7U0lkdTAutlBblY08rwZDff6tNU9cjv6j//Q==" + }, "ieee754": { "version": "1.1.13", "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.1.13.tgz", @@ -62,6 +905,12 @@ "resolved": "https://registry.npmjs.org/jmespath/-/jmespath-0.15.0.tgz", "integrity": "sha1-o/Iiqarp+Wb10nx5ZRDigJF2Qhc=" }, + "prettier": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/prettier/-/prettier-2.2.1.tgz", + "integrity": "sha512-PqyhM2yCjg/oKkFPtTGUojv7gnZAoG80ttl45O6x2Ug/rMJw4wcc9k6aaf2hibP7BGVCCM33gZoGjyvt9mm16Q==", + "dev": true + }, "punycode": { "version": "1.3.2", "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.3.2.tgz", @@ -72,11 +921,24 @@ "resolved": "https://registry.npmjs.org/querystring/-/querystring-0.2.0.tgz", "integrity": "sha1-sgmEkgO7Jd+CDadW50cAWHhSFiA=" }, + "react-native-get-random-values": { + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/react-native-get-random-values/-/react-native-get-random-values-1.5.1.tgz", + "integrity": "sha512-L76sTcz3jdFmc7Gn41SHOxCioYY3m4rtuWEUI6X8IeWVmkflHXrSyAObOW4eNTM5qytH+45pgMCVKJzfB/Ik4A==", + "requires": { + "fast-base64-decode": "^1.0.0" + } + }, "sax": { "version": "1.2.1", "resolved": "https://registry.npmjs.org/sax/-/sax-1.2.1.tgz", "integrity": "sha1-e45lYZCyKOgaZq6nSEgNgozS03o=" }, + "tslib": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.1.0.tgz", + "integrity": "sha512-hcVC3wYEziELGGmEEXue7D75zbwIIVUMWAVbHItGPx0ziyXxrOMQx4rQEVEV45Ut/1IotuEvwqPopzIOkDMf0A==" + }, "url": { "version": "0.10.3", "resolved": "https://registry.npmjs.org/url/-/url-0.10.3.tgz", diff --git a/takeNotes-src/deleteUser/package.json b/takeNotes-src/deleteUser/package.json index 299f09f..c7baa36 100644 --- a/takeNotes-src/deleteUser/package.json +++ b/takeNotes-src/deleteUser/package.json @@ -4,12 +4,17 @@ "description": "POST handler for TakeNotes users API", "main": "src/app.js", "scripts": { - "test": "echo \"Error: no test specified\" && exit 1" + "test": "echo \"Error: no test specified\" && exit 1", + "style": "npx prettier --write ." }, "author": "", "license": "ISC", "dependencies": { + "@aws-sdk/client-cognito-identity-provider": "^3.4.1", "aws-sdk": "^2.834.0", "uuid": "^8.3.2" + }, + "devDependencies": { + "prettier": "2.2.1" } } diff --git a/takeNotes-src/getUser/.prettierignore b/takeNotes-src/getUser/.prettierignore new file mode 100644 index 0000000..195a343 --- /dev/null +++ b/takeNotes-src/getUser/.prettierignore @@ -0,0 +1,106 @@ +*.DS_Store +# Logs +logs +*.log +npm-debug.log* +yarn-debug.log* +yarn-error.log* +lerna-debug.log* +*.json + +# Diagnostic reports (https://nodejs.org/api/report.html) +report.[0-9]*.[0-9]*.[0-9]*.[0-9]*.json + +# Runtime data +pids +*.pid +*.seed +*.pid.lock + +# Directory for instrumented libs generated by jscoverage/JSCover +lib-cov + +# Coverage directory used by tools like istanbul +coverage +*.lcov + +# nyc test coverage +.nyc_output + +# Grunt intermediate storage (https://gruntjs.com/creating-plugins#storing-task-files) +.grunt + +# Bower dependency directory (https://bower.io/) +bower_components + +# node-waf configuration +.lock-wscript + +# Compiled binary addons (https://nodejs.org/api/addons.html) +build/Release + +# Dependency directories +node_modules/ +jspm_packages/ + +# TypeScript v1 declaration files +typings/ + +# TypeScript cache +*.tsbuildinfo + +# Optional npm cache directory +.npm + +# Optional eslint cache +.eslintcache + +# Microbundle cache +.rpt2_cache/ +.rts2_cache_cjs/ +.rts2_cache_es/ +.rts2_cache_umd/ + +# Optional REPL history +.node_repl_history + +# Output of 'npm pack' +*.tgz + +# Yarn Integrity file +.yarn-integrity + +# dotenv environment variables file +.env +.env.test + +# parcel-bundler cache (https://parceljs.org/) +.cache + +# Next.js build output +.next + +# Nuxt.js build / generate output +.nuxt +dist + +# Gatsby files +.cache/ +# Comment in the public line in if your project uses Gatsby and *not* Next.js +# https://nextjs.org/blog/next-9-1#public-directory-support +# public + +# vuepress build output +.vuepress/dist + +# Serverless directories +.serverless/ + +# FuseBox cache +.fusebox/ + +# DynamoDB Local files +.dynamodb/ + +# TernJS port file +.tern-port \ No newline at end of file diff --git a/takeNotes-src/getUser/package.json b/takeNotes-src/getUser/package.json index e1ead1a..561c73a 100644 --- a/takeNotes-src/getUser/package.json +++ b/takeNotes-src/getUser/package.json @@ -4,7 +4,8 @@ "description": "GET handler for TakeNotes users API", "main": "src/app.js", "scripts": { - "test": "echo \"Error: no test specified\" && exit 1" + "test": "echo \"Error: no test specified\" && exit 1", + "style": "npx prettier --write ." }, "author": "", "license": "ISC", diff --git a/takeNotes-src/postUser/.prettierignore b/takeNotes-src/postUser/.prettierignore new file mode 100644 index 0000000..195a343 --- /dev/null +++ b/takeNotes-src/postUser/.prettierignore @@ -0,0 +1,106 @@ +*.DS_Store +# Logs +logs +*.log +npm-debug.log* +yarn-debug.log* +yarn-error.log* +lerna-debug.log* +*.json + +# Diagnostic reports (https://nodejs.org/api/report.html) +report.[0-9]*.[0-9]*.[0-9]*.[0-9]*.json + +# Runtime data +pids +*.pid +*.seed +*.pid.lock + +# Directory for instrumented libs generated by jscoverage/JSCover +lib-cov + +# Coverage directory used by tools like istanbul +coverage +*.lcov + +# nyc test coverage +.nyc_output + +# Grunt intermediate storage (https://gruntjs.com/creating-plugins#storing-task-files) +.grunt + +# Bower dependency directory (https://bower.io/) +bower_components + +# node-waf configuration +.lock-wscript + +# Compiled binary addons (https://nodejs.org/api/addons.html) +build/Release + +# Dependency directories +node_modules/ +jspm_packages/ + +# TypeScript v1 declaration files +typings/ + +# TypeScript cache +*.tsbuildinfo + +# Optional npm cache directory +.npm + +# Optional eslint cache +.eslintcache + +# Microbundle cache +.rpt2_cache/ +.rts2_cache_cjs/ +.rts2_cache_es/ +.rts2_cache_umd/ + +# Optional REPL history +.node_repl_history + +# Output of 'npm pack' +*.tgz + +# Yarn Integrity file +.yarn-integrity + +# dotenv environment variables file +.env +.env.test + +# parcel-bundler cache (https://parceljs.org/) +.cache + +# Next.js build output +.next + +# Nuxt.js build / generate output +.nuxt +dist + +# Gatsby files +.cache/ +# Comment in the public line in if your project uses Gatsby and *not* Next.js +# https://nextjs.org/blog/next-9-1#public-directory-support +# public + +# vuepress build output +.vuepress/dist + +# Serverless directories +.serverless/ + +# FuseBox cache +.fusebox/ + +# DynamoDB Local files +.dynamodb/ + +# TernJS port file +.tern-port \ No newline at end of file diff --git a/takeNotes-src/postUser/app.js b/takeNotes-src/postUser/app.js index e2aa083..25d2fbb 100644 --- a/takeNotes-src/postUser/app.js +++ b/takeNotes-src/postUser/app.js @@ -1,5 +1,5 @@ // default imports -const AWS = require('aws-sdk'); +const AWS = require("aws-sdk"); const DDB = new AWS.DynamoDB({ apiVersion: "2012-10-08" }); // environment variables @@ -11,112 +11,122 @@ AWS.config.update({ region: REGION }); const WEEK_MILLISECONDS = 604800000; if (ENDPOINT_OVERRIDE !== "") { - options.endpoint = ENDPOINT_OVERRIDE; + options.endpoint = ENDPOINT_OVERRIDE; } const docClient = new AWS.DynamoDB.DocumentClient(options); // response helper const response = (statusCode, body, additionalHeaders) => ({ - statusCode, - body: JSON.stringify(body), - headers: { 'Content-Type': 'application/json', 'Access-Control-Allow-Origin': '*', ...additionalHeaders }, + statusCode, + body: JSON.stringify(body), + headers: { + "Content-Type": "application/json", + "Access-Control-Allow-Origin": "*", + ...additionalHeaders, + }, }); function isValidRequest(context, event) { - if (event.request !== null && - event.request.userAttributes !== null && - event.request.userAttributes['custom:startDate'] !== null && - event.request.userAttributes['custom:endDate'] !== null && - event.request.userAttributes.email !== null && - event.request.userAttributes.sub !== null) { - return true; - } - - return false; + if ( + event.request !== null && + event.request.userAttributes !== null && + event.request.userAttributes["custom:startDate"] !== null && + event.request.userAttributes["custom:endDate"] !== null && + event.request.userAttributes.email !== null && + event.request.userAttributes.sub !== null + ) { + return true; + } + + return false; } -let getDateFromISO = (date) => (new Date(date)); +let getDateFromISO = (date) => new Date(date); let getNumWeeks = (start, end) => { - let [startDateObj, endDateObj] = [getDateFromISO(start), getDateFromISO(end)]; - if (startDateObj.getTime() >= endDateObj.getTime()) throw Error("End date is <= start date."); - return Math.round((endDateObj-startDateObj)/WEEK_MILLISECONDS); + let [startDateObj, endDateObj] = [getDateFromISO(start), getDateFromISO(end)]; + if (startDateObj.getTime() >= endDateObj.getTime()) + throw Error("End date is <= start date."); + return Math.round((endDateObj - startDateObj) / WEEK_MILLISECONDS); }; let getWeeks = (start, end) => { - let numWeeks = getNumWeeks(start, end); - let dateString = (new Date()).toISOString(); - let weeks = new Array(numWeeks); - for (var i = 0; i < numWeeks; i++) { - weeks[i] = { - created: dateString, - updated: dateString, - entries: [] - }; - } - return weeks; + let numWeeks = getNumWeeks(start, end); + let dateString = new Date().toISOString(); + let weeks = new Array(numWeeks); + for (var i = 0; i < numWeeks; i++) { + weeks[i] = { + created: dateString, + updated: dateString, + entries: [], + }; + } + return weeks; }; /** * This function takes the POST input and intializes a document matching our schema. * @param {object} body The POST input body, a parsed JSON object. - * @return {object} + * @return {object} */ let generateDoc = (attributes) => { - let [start, end] = [attributes['custom:startDate'], attributes['custom:endDate']]; - let weeks = getWeeks(start, end); - return { - email: attributes.email, - start: start, - end: end, - journal: { - weeks: weeks - }, - notes: [] - } -} + let [start, end] = [ + attributes["custom:startDate"], + attributes["custom:endDate"], + ]; + let weeks = getWeeks(start, end); + return { + email: attributes.email, + start: start, + end: end, + journal: { + weeks: weeks, + }, + notes: [], + }; +}; function addRecord(event) { - let attributes = event.request.userAttributes; - let docBody = generateDoc(attributes); - - let d = (new Date()).toISOString(); - let metaFields = { - "id": attributes.sub, - "created": d, - "updated": d - }; + let attributes = event.request.userAttributes; + let docBody = generateDoc(attributes); - let itemBody = { ...metaFields, docBody }; + let d = new Date().toISOString(); + let metaFields = { + id: attributes.sub, + created: d, + updated: d, + }; - const params = { - TableName: TABLE_NAME, - Item: itemBody, - ReturnValues: 'ALL_OLD' - }; - console.log("params"); - console.log(params); + let itemBody = { ...metaFields, docBody }; - // Return the new object - return [docClient.put(params), params]; + const params = { + TableName: TABLE_NAME, + Item: itemBody, + ReturnValues: "ALL_OLD", + }; + console.log("params"); + console.log(params); + + // Return the new object + return [docClient.put(params), params]; } // Lambda Handler exports.postUser = async (event, context, callback) => { - console.log("event"); - console.log(event); - console.log("callback"); - console.log(callback); - if (!isValidRequest(context, event)) { - return callback(Error("Request is invalid!"), event); - } - - try { - let dbResp = addRecord(event); - let [dbPromise, dbInput] = [await dbResp[0].promise(), dbResp[1]]; - - return callback(null, event); - } catch (err) { - return callback(err, event); - } -} + console.log("event"); + console.log(event); + console.log("callback"); + console.log(callback); + if (!isValidRequest(context, event)) { + return callback(Error("Request is invalid!"), event); + } + + try { + let dbResp = addRecord(event); + let [dbPromise, dbInput] = [await dbResp[0].promise(), dbResp[1]]; + + return callback(null, event); + } catch (err) { + return callback(err, event); + } +}; diff --git a/takeNotes-src/postUser/package.json b/takeNotes-src/postUser/package.json index 299f09f..9202874 100644 --- a/takeNotes-src/postUser/package.json +++ b/takeNotes-src/postUser/package.json @@ -4,7 +4,8 @@ "description": "POST handler for TakeNotes users API", "main": "src/app.js", "scripts": { - "test": "echo \"Error: no test specified\" && exit 1" + "test": "echo \"Error: no test specified\" && exit 1", + "style": "npx prettier --write ." }, "author": "", "license": "ISC", diff --git a/takeNotes-src/postUser/test.js b/takeNotes-src/postUser/test.js index 2f3ddb2..ec47eea 100644 --- a/takeNotes-src/postUser/test.js +++ b/takeNotes-src/postUser/test.js @@ -1,11 +1,11 @@ const app = require("./app.js"); const inputObj = JSON.stringify({ - email: "johsn@smith.com", - start: "2021-05-31", - end: "2021-08-20" + email: "johsn@smith.com", + start: "2021-05-31", + end: "2021-08-20", }); -(app.postUser({body: inputObj}, {}, null)).then(x => { - console.log(x); -}); \ No newline at end of file +app.postUser({ body: inputObj }, {}, null).then((x) => { + console.log(x); +}); diff --git a/takeNotes-src/putUser/.prettierignore b/takeNotes-src/putUser/.prettierignore new file mode 100644 index 0000000..195a343 --- /dev/null +++ b/takeNotes-src/putUser/.prettierignore @@ -0,0 +1,106 @@ +*.DS_Store +# Logs +logs +*.log +npm-debug.log* +yarn-debug.log* +yarn-error.log* +lerna-debug.log* +*.json + +# Diagnostic reports (https://nodejs.org/api/report.html) +report.[0-9]*.[0-9]*.[0-9]*.[0-9]*.json + +# Runtime data +pids +*.pid +*.seed +*.pid.lock + +# Directory for instrumented libs generated by jscoverage/JSCover +lib-cov + +# Coverage directory used by tools like istanbul +coverage +*.lcov + +# nyc test coverage +.nyc_output + +# Grunt intermediate storage (https://gruntjs.com/creating-plugins#storing-task-files) +.grunt + +# Bower dependency directory (https://bower.io/) +bower_components + +# node-waf configuration +.lock-wscript + +# Compiled binary addons (https://nodejs.org/api/addons.html) +build/Release + +# Dependency directories +node_modules/ +jspm_packages/ + +# TypeScript v1 declaration files +typings/ + +# TypeScript cache +*.tsbuildinfo + +# Optional npm cache directory +.npm + +# Optional eslint cache +.eslintcache + +# Microbundle cache +.rpt2_cache/ +.rts2_cache_cjs/ +.rts2_cache_es/ +.rts2_cache_umd/ + +# Optional REPL history +.node_repl_history + +# Output of 'npm pack' +*.tgz + +# Yarn Integrity file +.yarn-integrity + +# dotenv environment variables file +.env +.env.test + +# parcel-bundler cache (https://parceljs.org/) +.cache + +# Next.js build output +.next + +# Nuxt.js build / generate output +.nuxt +dist + +# Gatsby files +.cache/ +# Comment in the public line in if your project uses Gatsby and *not* Next.js +# https://nextjs.org/blog/next-9-1#public-directory-support +# public + +# vuepress build output +.vuepress/dist + +# Serverless directories +.serverless/ + +# FuseBox cache +.fusebox/ + +# DynamoDB Local files +.dynamodb/ + +# TernJS port file +.tern-port \ No newline at end of file diff --git a/takeNotes-src/putUser/app.js b/takeNotes-src/putUser/app.js index fa4ea79..50900c4 100644 --- a/takeNotes-src/putUser/app.js +++ b/takeNotes-src/putUser/app.js @@ -1,5 +1,5 @@ // default imports -const AWS = require('aws-sdk'); +const AWS = require("aws-sdk"); const DDB = new AWS.DynamoDB({ apiVersion: "2012-10-08" }); // environment variables @@ -8,59 +8,66 @@ const options = { region: REGION }; AWS.config.update({ region: REGION }); if (ENDPOINT_OVERRIDE !== "") { - options.endpoint = ENDPOINT_OVERRIDE; + options.endpoint = ENDPOINT_OVERRIDE; } const docClient = new AWS.DynamoDB.DocumentClient(options); // response helper const response = (statusCode, body, additionalHeaders) => ({ - statusCode, - body: JSON.stringify(body), - headers: { 'Content-Type': 'application/json', 'Access-Control-Allow-Origin': '*', ...additionalHeaders }, + statusCode, + body: JSON.stringify(body), + headers: { + "Content-Type": "application/json", + "Access-Control-Allow-Origin": "*", + ...additionalHeaders, + }, }); function isValidRequest(context, event) { - let isIdValid = (event !== null) && - (event.pathParameters !== null) && - (event.pathParameters.id !== null); + let isIdValid = + event !== null && + event.pathParameters !== null && + event.pathParameters.id !== null; - let body = event.body; - let isBodyValid = (body !== null) && - (body.docBody !== null); + let body = event.body; + let isBodyValid = body !== null && body.docBody !== null; - return isIdValid && isBodyValid; + return isIdValid && isBodyValid; } function updateRecord(recordId, eventBody) { - let d = new Date(); - eventBody.docBody.id = recordId; // Preserve ID - const params = { - TableName: TABLE_NAME, - Key: { - "id": recordId - }, - UpdateExpression: "set updated = :u, docBody = :d", - ExpressionAttributeValues: { - ':u': d.toISOString(), - ':d': eventBody.docBody - }, - ReturnValues: "ALL_NEW" - }; + let d = new Date(); + eventBody.docBody.id = recordId; // Preserve ID + const params = { + TableName: TABLE_NAME, + Key: { + id: recordId, + }, + UpdateExpression: "set updated = :u, docBody = :d", + ExpressionAttributeValues: { + ":u": d.toISOString(), + ":d": eventBody.docBody, + }, + ReturnValues: "ALL_NEW", + }; - return docClient.update(params); + return docClient.update(params); } // Lambda Handler exports.putUser = async (event, context, callback) => { - if (!isValidRequest(context, event)) { - return response(400, { message: "Error: Invalid request" }); - } + if (!isValidRequest(context, event)) { + return response(400, { message: "Error: Invalid request" }); + } - try { - let data = await updateRecord(event.pathParameters.id, JSON.parse(event.body)).promise(); - return response(200, data); - } catch (err) { - return response(400, { message: err.message }); - } -} + try { + let data = await updateRecord( + event.pathParameters.id, + JSON.parse(event.body) + ).promise(); + return response(200, data); + } catch (err) { + return response(400, { message: err.message }); + } +}; diff --git a/takeNotes-src/putUser/package.json b/takeNotes-src/putUser/package.json index 299f09f..9202874 100644 --- a/takeNotes-src/putUser/package.json +++ b/takeNotes-src/putUser/package.json @@ -4,7 +4,8 @@ "description": "POST handler for TakeNotes users API", "main": "src/app.js", "scripts": { - "test": "echo \"Error: no test specified\" && exit 1" + "test": "echo \"Error: no test specified\" && exit 1", + "style": "npx prettier --write ." }, "author": "", "license": "ISC", From 294e8095839aa2ae09dc65d9e4ba0902ad957451 Mon Sep 17 00:00:00 2001 From: KrishnaSolo Date: Sun, 7 Feb 2021 13:48:35 -0500 Subject: [PATCH 2/5] Updated template to have region env variable --- template.yaml | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/template.yaml b/template.yaml index dce10f4..57fce0b 100644 --- a/template.yaml +++ b/template.yaml @@ -89,6 +89,7 @@ Resources: AWS_NODEJS_CONNECTION_REUSE_ENABLED: "1" USE_DYNAMODB_LOCAL: "0" DYNAMODB_LOCAL_URI: "" + REGION: !Ref AWS::Region Events: GetUser: Type: Api @@ -113,6 +114,7 @@ Resources: TABLE_NAME: !Ref TakeNotesTable AWS_NODEJS_CONNECTION_REUSE_ENABLED: "1" ENDPOINT_OVERRIDE: "" + REGION: !Ref AWS::Region Events: PostUser: Type: Api @@ -137,6 +139,7 @@ Resources: TABLE_NAME: !Ref TakeNotesTable AWS_NODEJS_CONNECTION_REUSE_ENABLED: "1" ENDPOINT_OVERRIDE: "" + REGION: !Ref AWS::Region Events: PutUser: Type: Api @@ -161,6 +164,7 @@ Resources: TABLE_NAME: !Ref TakeNotesTable AWS_NODEJS_CONNECTION_REUSE_ENABLED: "1" ENDPOINT_OVERRIDE: "" + REGION: !Ref AWS::Region Events: DeleteUser: Type: Api @@ -185,6 +189,7 @@ Resources: TABLE_NAME: !Ref TakeNotesTable AWS_NODEJS_CONNECTION_REUSE_ENABLED: "1" ENDPOINT_OVERRIDE: "" + REGION: !Ref AWS::Region Events: TestReq: Type: Api @@ -284,6 +289,9 @@ Outputs: CognitoClientID: Description: The Cognito UserPool Client ID Value: !Ref UserPoolClient + Region: + Description: The region env variable + Value: !Ref AWS::Region CognitoDomainName: Description: The Cognito Hosted UI Domain Name Value: !Join From 2f1096de86eaded77350f0209291b4e390bd0b17 Mon Sep 17 00:00:00 2001 From: KrishnaSolo Date: Sun, 7 Feb 2021 13:49:04 -0500 Subject: [PATCH 3/5] Updated delete handler to delete cognito account linked to user --- takeNotes-src/getUser/app.js | 64 +++++++++++++++++++----------------- 1 file changed, 34 insertions(+), 30 deletions(-) diff --git a/takeNotes-src/getUser/app.js b/takeNotes-src/getUser/app.js index 69a6b0e..35518ce 100644 --- a/takeNotes-src/getUser/app.js +++ b/takeNotes-src/getUser/app.js @@ -1,5 +1,5 @@ // default imports -const AWS = require('aws-sdk'); +const AWS = require("aws-sdk"); const DDB = new AWS.DynamoDB({ apiVersion: "2012-10-08" }); // environment variables @@ -8,49 +8,53 @@ const options = { region: REGION }; AWS.config.update({ region: REGION }); if (ENDPOINT_OVERRIDE !== "") { - options.endpoint = ENDPOINT_OVERRIDE; + options.endpoint = ENDPOINT_OVERRIDE; } const docClient = new AWS.DynamoDB.DocumentClient(options); // response helper const response = (statusCode, body) => ({ - statusCode, - body: JSON.stringify(body), - headers: { 'Content-Type': 'application/json', 'Access-Control-Allow-Origin': '*' }, + statusCode, + body: JSON.stringify(body), + headers: { + "Content-Type": "application/json", + "Access-Control-Allow-Origin": "*", + }, }); function isValidRequest(context, event) { - return (event !== null) && - (event.pathParameters !== null) && - (event.pathParameters.id !== null); + return ( + event !== null && + event.pathParameters !== null && + event.pathParameters.id !== null + ); } function getRecordById(recordId) { - let params = { - TableName: TABLE_NAME, - Key: { - "id": recordId - } - }; - - return docClient.get(params); + let params = { + TableName: TABLE_NAME, + Key: { + id: recordId, + }, + }; + + return docClient.get(params); } // Lambda Handler exports.getUser = async (event, context, callback) => { - if (!isValidRequest(context, event)) { - return response(400, { message: "Error: Invalid request" }); - } - - try { - let data = await getRecordById(event.pathParameters.id).promise(); - if (data === null || data === undefined) { - return response(404, { message: "Record not found" }); - } - return response(200, data); - } catch (err) { - return response(400, { message: err.message }); - } + if (!isValidRequest(context, event)) { + return response(400, { message: "Error: Invalid request" }); + } + + try { + let data = await getRecordById(event.pathParameters.id).promise(); + if (data === null || data === undefined) { + return response(404, { message: "Record not found" }); } - + return response(200, data); + } catch (err) { + return response(400, { message: err.message }); + } +}; From e3179b95f2b877593b5309d855ea4afc7ec4fb26 Mon Sep 17 00:00:00 2001 From: KrishnaSolo Date: Sun, 7 Feb 2021 14:37:21 -0500 Subject: [PATCH 4/5] fixed body error in setUpParam function --- takeNotes-src/deleteUser/app.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/takeNotes-src/deleteUser/app.js b/takeNotes-src/deleteUser/app.js index e1a8497..494d7f5 100644 --- a/takeNotes-src/deleteUser/app.js +++ b/takeNotes-src/deleteUser/app.js @@ -50,7 +50,7 @@ function deleteRecordById(recordId) { } function setUpParamas(body) { - let body = JSON.parse(body); + body = JSON.parse(body); let params = { AccessToken: body.token }; console.log("body: " + body + " params: " + params); return params; From f4903db499ae3f3c89d71b6f6c4e7ce826bf14de Mon Sep 17 00:00:00 2001 From: KrishnaSolo Date: Sun, 7 Feb 2021 14:48:50 -0500 Subject: [PATCH 5/5] Fix param function name --- takeNotes-src/deleteUser/app.js | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/takeNotes-src/deleteUser/app.js b/takeNotes-src/deleteUser/app.js index 494d7f5..0a7042f 100644 --- a/takeNotes-src/deleteUser/app.js +++ b/takeNotes-src/deleteUser/app.js @@ -49,7 +49,7 @@ function deleteRecordById(recordId) { return docClient.delete(params); } -function setUpParamas(body) { +function setUpParams(body) { body = JSON.parse(body); let params = { AccessToken: body.token }; console.log("body: " + body + " params: " + params); @@ -57,7 +57,7 @@ function setUpParamas(body) { } function deleteCognitoUser(body) { - const command = new DeleteUserCommand(setUpParamas(body)); + const command = new DeleteUserCommand(setUpParams(body)); console.log(command); return cognitoClient.send(command); }