From 3ceb8e95d1800590774992fa6cf3512a7543d78c Mon Sep 17 00:00:00 2001 From: Ankit Tiwari Date: Tue, 12 Dec 2023 18:29:04 +0530 Subject: [PATCH 1/3] feat: Update with-aws-lambda example --- examples/with-aws-lambda/backend/auth.js | 21 ------ examples/with-aws-lambda/backend/config.js | 21 ------ examples/with-aws-lambda/backend/config.mjs | 70 +++++++++++++++++++ examples/with-aws-lambda/backend/index.mjs | 34 +++++++++ examples/with-aws-lambda/backend/package.json | 4 +- .../backend/{user.js => user.mjs} | 7 +- examples/with-aws-lambda/frontend/src/App.tsx | 21 ++++-- 7 files changed, 125 insertions(+), 53 deletions(-) delete mode 100644 examples/with-aws-lambda/backend/auth.js delete mode 100644 examples/with-aws-lambda/backend/config.js create mode 100644 examples/with-aws-lambda/backend/config.mjs create mode 100644 examples/with-aws-lambda/backend/index.mjs rename examples/with-aws-lambda/backend/{user.js => user.mjs} (85%) diff --git a/examples/with-aws-lambda/backend/auth.js b/examples/with-aws-lambda/backend/auth.js deleted file mode 100644 index 6aab5480f..000000000 --- a/examples/with-aws-lambda/backend/auth.js +++ /dev/null @@ -1,21 +0,0 @@ -"use strict"; -let supertokens = require("supertokens-node"); -let { middleware } = require("supertokens-node/framework/awsLambda"); -let middy = require("@middy/core"); -let cors = require("@middy/http-cors"); -let { getBackendConfig } = require("./config"); - -supertokens.init(getBackendConfig()); - -module.exports.handler = middy(middleware()) - .use( - cors({ - origin: getBackendConfig().appInfo.websiteDomain, - credentials: true, - headers: ["Content-Type", ...supertokens.getAllCORSHeaders()].join(", "), - methods: "OPTIONS,POST,GET,PUT,DELETE", - }) - ) - .onError((request) => { - throw request.error; - }); diff --git a/examples/with-aws-lambda/backend/config.js b/examples/with-aws-lambda/backend/config.js deleted file mode 100644 index d7769225f..000000000 --- a/examples/with-aws-lambda/backend/config.js +++ /dev/null @@ -1,21 +0,0 @@ -let Session = require("supertokens-node/recipe/session"); -let EmailPassword = require("supertokens-node/recipe/emailpassword"); -let Dashboard = require("supertokens-node/recipe/dashboard"); - -module.exports.getBackendConfig = () => { - return { - framework: "awsLambda", - supertokens: { - connectionURI: "https://try.supertokens.com", - }, - appInfo: { - appName: "SuperTokens Demo", - apiDomain: "https://0ktsu4mmb6.execute-api.us-east-1.amazonaws.com", - websiteDomain: "http://localhost:8888", - apiBasePath: "/auth", - apiGatewayPath: "/dev", // use this if you are using AWS API Gateway. The value should be equal to the stage value. i.e. if your stage in API Gateway is prod, this value should be /prod - }, - recipeList: [EmailPassword.init(), Session.init(), Dashboard.init()], - isInServerlessEnv: true, - }; -}; diff --git a/examples/with-aws-lambda/backend/config.mjs b/examples/with-aws-lambda/backend/config.mjs new file mode 100644 index 000000000..52e5cda51 --- /dev/null +++ b/examples/with-aws-lambda/backend/config.mjs @@ -0,0 +1,70 @@ +import ThirdPartyEmailPassword from "supertokens-node/recipe/thirdpartyemailpassword"; +import Session from "supertokens-node/recipe/session"; + +export function getBackendConfig() { + return { + framework: "awsLambda", + supertokens: { + connectionURI: "", + apiKey: "", + }, + appInfo: { + // learn more about this on https://supertokens.com/docs/thirdpartyemailpassword/appinfo + appName: "^{form_appName}", + apiDomain: "^{form_apiDomain}", + websiteDomain: "^{form_websiteDomain}", + apiBasePath: "^{form_apiBasePath}", + websiteBasePath: "^{form_websiteBasePath}", + apiGatewayPath: "/dev", + }, + recipeList: [ + ThirdPartyEmailPassword.init({ + // We have provided you with development keys which you can use for testing. + // IMPORTANT: Please replace them with your own OAuth keys for production use. + providers: [ + { + config: { + thirdPartyId: "google", + clients: [ + { + clientId: + "1060725074195-kmeum4crr01uirfl2op9kd5acmi9jutn.apps.googleusercontent.com", + clientSecret: "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", + }, + ], + }, + }, + { + config: { + thirdPartyId: "github", + clients: [ + { + clientId: "467101b197249757c71f", + clientSecret: "e97051221f4b6426e8fe8d51486396703012f5bd", + }, + ], + }, + }, + { + config: { + thirdPartyId: "apple", + clients: [ + { + clientId: "4398792-io.supertokens.example.service", + additionalConfig: { + keyId: "7M48Y4RYDL", + privateKey: + "-----BEGIN PRIVATE KEY-----\nMIGTAgEAMBMGByqGSM49AgEGCCqGSM49AwEHBHkwdwIBAQQgu8gXs+XYkqXD6Ala9Sf/iJXzhbwcoG5dMh1OonpdJUmgCgYIKoZIzj0DAQehRANCAASfrvlFbFCYqn3I2zeknYXLwtH30JuOKestDbSfZYxZNMqhF/OzdZFTV0zc5u5s3eN+oCWbnvl0hM+9IW0UlkdA\n-----END PRIVATE KEY-----", + teamId: "YWQCXGJRJL", + }, + }, + ], + }, + }, + ], + }), + Session.init(), + ], + isInServerlessEnv: true, + }; +} diff --git a/examples/with-aws-lambda/backend/index.mjs b/examples/with-aws-lambda/backend/index.mjs new file mode 100644 index 000000000..86806fb4c --- /dev/null +++ b/examples/with-aws-lambda/backend/index.mjs @@ -0,0 +1,34 @@ +import supertokens from "supertokens-node"; +import { middleware } from "supertokens-node/framework/awsLambda"; +import { getBackendConfig } from "./config.mjs"; +import middy from "@middy/core"; +import cors from "@middy/http-cors"; +import { handler as userHandler } from "./user.mjs"; + +supertokens.init(getBackendConfig()); + +export const handler = middy( + middleware((event) => { + if (event.path === "/user") { + return userHandler(event); + } + + return { + body: JSON.stringify({ + msg: "Hello!", + }), + statusCode: 200, + }; + }) +) + .use( + cors({ + origin: getBackendConfig().appInfo.websiteDomain, + credentials: true, + headers: ["Content-Type", ...supertokens.getAllCORSHeaders()].join(", "), + methods: "OPTIONS,POST,GET,PUT,DELETE", + }) + ) + .onError((request) => { + throw request.error; + }); diff --git a/examples/with-aws-lambda/backend/package.json b/examples/with-aws-lambda/backend/package.json index c2b378d92..46d5fc013 100644 --- a/examples/with-aws-lambda/backend/package.json +++ b/examples/with-aws-lambda/backend/package.json @@ -9,8 +9,8 @@ "author": "", "license": "ISC", "dependencies": { - "@middy/core": "^2.5.1", - "@middy/http-cors": "^2.5.1", + "@middy/core": "^5.1.0", + "@middy/http-cors": "^5.1.0", "supertokens-node": "latest" } } diff --git a/examples/with-aws-lambda/backend/user.js b/examples/with-aws-lambda/backend/user.mjs similarity index 85% rename from examples/with-aws-lambda/backend/user.js rename to examples/with-aws-lambda/backend/user.mjs index 48e66c4ab..d423038ec 100644 --- a/examples/with-aws-lambda/backend/user.js +++ b/examples/with-aws-lambda/backend/user.mjs @@ -1,13 +1,12 @@ -"use strict"; let supertokens = require("supertokens-node"); let { verifySession } = require("supertokens-node/recipe/session/framework/awsLambda"); let middy = require("@middy/core"); let cors = require("@middy/http-cors"); -let { getBackendConfig } = require("./config"); +let { getBackendConfig } = require("./config.mjs"); supertokens.init(getBackendConfig()); -const handler = async (event, _) => { +const userHandler = async (event, _) => { return { statusCode: 200, headers: { @@ -21,7 +20,7 @@ const handler = async (event, _) => { }; }; -module.exports.handler = middy(verifySession(handler)) +export const handler = middy(verifySession(userHandler)) .use( cors({ origin: getBackendConfig().appInfo.websiteDomain, diff --git a/examples/with-aws-lambda/frontend/src/App.tsx b/examples/with-aws-lambda/frontend/src/App.tsx index 74df216aa..67463f65a 100644 --- a/examples/with-aws-lambda/frontend/src/App.tsx +++ b/examples/with-aws-lambda/frontend/src/App.tsx @@ -1,8 +1,8 @@ import "./App.css"; import SuperTokens, { SuperTokensWrapper } from "supertokens-auth-react"; import { getSuperTokensRoutesForReactRouterDom } from "supertokens-auth-react/ui"; -import EmailPassword from "supertokens-auth-react/recipe/emailpassword"; -import { EmailPasswordPreBuiltUI } from "supertokens-auth-react/recipe/emailpassword/prebuiltui"; +import ThirdPartyEmailPassword from "supertokens-auth-react/recipe/thirdpartyemailpassword"; +import { ThirdPartyEmailPasswordPreBuiltUI } from "supertokens-auth-react/recipe/thirdpartyemailpassword/prebuiltui"; import Session, { SessionAuth } from "supertokens-auth-react/recipe/session"; import Home from "./Home"; import { Routes, BrowserRouter as Router, Route } from "react-router-dom"; @@ -17,7 +17,7 @@ export function getDomain() { return host; } export function getAPIDomain() { - return "https://0ktsu4mmb6.execute-api.us-east-1.amazonaws.com"; + return ""; } SuperTokens.init({ @@ -28,7 +28,18 @@ SuperTokens.init({ apiBasePath: "/auth", apiGatewayPath: "/dev", }, - recipeList: [EmailPassword.init(), Session.init()], + recipeList: [ + ThirdPartyEmailPassword.init({ + signInAndUpFeature: { + providers: [ + ThirdPartyEmailPassword.Google.init(), + ThirdPartyEmailPassword.Github.init(), + ThirdPartyEmailPassword.Apple.init(), + ], + }, + }), + Session.init(), + ], }); function App() { @@ -39,7 +50,7 @@ function App() {
{getSuperTokensRoutesForReactRouterDom(require("react-router-dom"), [ - EmailPasswordPreBuiltUI, + ThirdPartyEmailPasswordPreBuiltUI, ])} Date: Wed, 13 Dec 2023 13:14:21 +0530 Subject: [PATCH 2/3] Remove with-aws-lambda example --- examples/with-aws-lambda/.gitignore | 20 ----- examples/with-aws-lambda/backend/config.mjs | 70 ----------------- examples/with-aws-lambda/backend/index.mjs | 34 -------- examples/with-aws-lambda/backend/package.json | 16 ---- examples/with-aws-lambda/backend/user.mjs | 34 -------- examples/with-aws-lambda/frontend/.env | 1 - .../with-aws-lambda/frontend/package.json | 42 ---------- .../frontend/public/_redirects | 1 - .../frontend/public/background.svg | 1 - .../frontend/public/favicon.ico | Bin 3870 -> 0 bytes .../frontend/public/index.html | 40 ---------- .../frontend/public/logo192.png | Bin 5347 -> 0 bytes .../frontend/public/logo512.png | Bin 9664 -> 0 bytes .../frontend/public/manifest.json | 25 ------ .../frontend/public/robots.txt | 3 - examples/with-aws-lambda/frontend/src/App.css | 33 -------- .../with-aws-lambda/frontend/src/App.test.tsx | 9 --- examples/with-aws-lambda/frontend/src/App.tsx | 74 ------------------ .../frontend/src/Footer/index.tsx | 19 ----- .../frontend/src/Home/CallAPIView.tsx | 16 ---- .../frontend/src/Home/Logout.tsx | 30 ------- .../frontend/src/Home/SuccessView.tsx | 50 ------------ .../frontend/src/Home/index.tsx | 27 ------- .../with-aws-lambda/frontend/src/index.css | 11 --- .../with-aws-lambda/frontend/src/index.tsx | 16 ---- .../with-aws-lambda/frontend/src/logo.svg | 1 - .../frontend/src/react-app-env.d.ts | 1 - .../frontend/src/reportWebVitals.ts | 15 ---- .../frontend/src/setupTests.ts | 5 -- .../with-aws-lambda/frontend/tsconfig.json | 20 ----- 30 files changed, 614 deletions(-) delete mode 100644 examples/with-aws-lambda/.gitignore delete mode 100644 examples/with-aws-lambda/backend/config.mjs delete mode 100644 examples/with-aws-lambda/backend/index.mjs delete mode 100644 examples/with-aws-lambda/backend/package.json delete mode 100644 examples/with-aws-lambda/backend/user.mjs delete mode 100644 examples/with-aws-lambda/frontend/.env delete mode 100644 examples/with-aws-lambda/frontend/package.json delete mode 100644 examples/with-aws-lambda/frontend/public/_redirects delete mode 100644 examples/with-aws-lambda/frontend/public/background.svg delete mode 100644 examples/with-aws-lambda/frontend/public/favicon.ico delete mode 100644 examples/with-aws-lambda/frontend/public/index.html delete mode 100644 examples/with-aws-lambda/frontend/public/logo192.png delete mode 100644 examples/with-aws-lambda/frontend/public/logo512.png delete mode 100644 examples/with-aws-lambda/frontend/public/manifest.json delete mode 100644 examples/with-aws-lambda/frontend/public/robots.txt delete mode 100644 examples/with-aws-lambda/frontend/src/App.css delete mode 100644 examples/with-aws-lambda/frontend/src/App.test.tsx delete mode 100644 examples/with-aws-lambda/frontend/src/App.tsx delete mode 100644 examples/with-aws-lambda/frontend/src/Footer/index.tsx delete mode 100644 examples/with-aws-lambda/frontend/src/Home/CallAPIView.tsx delete mode 100644 examples/with-aws-lambda/frontend/src/Home/Logout.tsx delete mode 100644 examples/with-aws-lambda/frontend/src/Home/SuccessView.tsx delete mode 100644 examples/with-aws-lambda/frontend/src/Home/index.tsx delete mode 100644 examples/with-aws-lambda/frontend/src/index.css delete mode 100644 examples/with-aws-lambda/frontend/src/index.tsx delete mode 100644 examples/with-aws-lambda/frontend/src/logo.svg delete mode 100644 examples/with-aws-lambda/frontend/src/react-app-env.d.ts delete mode 100644 examples/with-aws-lambda/frontend/src/reportWebVitals.ts delete mode 100644 examples/with-aws-lambda/frontend/src/setupTests.ts delete mode 100644 examples/with-aws-lambda/frontend/tsconfig.json diff --git a/examples/with-aws-lambda/.gitignore b/examples/with-aws-lambda/.gitignore deleted file mode 100644 index 93872bd5b..000000000 --- a/examples/with-aws-lambda/.gitignore +++ /dev/null @@ -1,20 +0,0 @@ -node_modules -.pnp -.pnp.js - -# testing -coverage - -# production -build - -# misc -.DS_Store -.env.local -.env.development.local -.env.test.local -.env.production.local -.eslintcache -npm-debug.log* -yarn-debug.log* -yarn-error.log* diff --git a/examples/with-aws-lambda/backend/config.mjs b/examples/with-aws-lambda/backend/config.mjs deleted file mode 100644 index 52e5cda51..000000000 --- a/examples/with-aws-lambda/backend/config.mjs +++ /dev/null @@ -1,70 +0,0 @@ -import ThirdPartyEmailPassword from "supertokens-node/recipe/thirdpartyemailpassword"; -import Session from "supertokens-node/recipe/session"; - -export function getBackendConfig() { - return { - framework: "awsLambda", - supertokens: { - connectionURI: "", - apiKey: "", - }, - appInfo: { - // learn more about this on https://supertokens.com/docs/thirdpartyemailpassword/appinfo - appName: "^{form_appName}", - apiDomain: "^{form_apiDomain}", - websiteDomain: "^{form_websiteDomain}", - apiBasePath: "^{form_apiBasePath}", - websiteBasePath: "^{form_websiteBasePath}", - apiGatewayPath: "/dev", - }, - recipeList: [ - ThirdPartyEmailPassword.init({ - // We have provided you with development keys which you can use for testing. - // IMPORTANT: Please replace them with your own OAuth keys for production use. - providers: [ - { - config: { - thirdPartyId: "google", - clients: [ - { - clientId: - "1060725074195-kmeum4crr01uirfl2op9kd5acmi9jutn.apps.googleusercontent.com", - clientSecret: "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", - }, - ], - }, - }, - { - config: { - thirdPartyId: "github", - clients: [ - { - clientId: "467101b197249757c71f", - clientSecret: "e97051221f4b6426e8fe8d51486396703012f5bd", - }, - ], - }, - }, - { - config: { - thirdPartyId: "apple", - clients: [ - { - clientId: "4398792-io.supertokens.example.service", - additionalConfig: { - keyId: "7M48Y4RYDL", - privateKey: - "-----BEGIN PRIVATE KEY-----\nMIGTAgEAMBMGByqGSM49AgEGCCqGSM49AwEHBHkwdwIBAQQgu8gXs+XYkqXD6Ala9Sf/iJXzhbwcoG5dMh1OonpdJUmgCgYIKoZIzj0DAQehRANCAASfrvlFbFCYqn3I2zeknYXLwtH30JuOKestDbSfZYxZNMqhF/OzdZFTV0zc5u5s3eN+oCWbnvl0hM+9IW0UlkdA\n-----END PRIVATE KEY-----", - teamId: "YWQCXGJRJL", - }, - }, - ], - }, - }, - ], - }), - Session.init(), - ], - isInServerlessEnv: true, - }; -} diff --git a/examples/with-aws-lambda/backend/index.mjs b/examples/with-aws-lambda/backend/index.mjs deleted file mode 100644 index 86806fb4c..000000000 --- a/examples/with-aws-lambda/backend/index.mjs +++ /dev/null @@ -1,34 +0,0 @@ -import supertokens from "supertokens-node"; -import { middleware } from "supertokens-node/framework/awsLambda"; -import { getBackendConfig } from "./config.mjs"; -import middy from "@middy/core"; -import cors from "@middy/http-cors"; -import { handler as userHandler } from "./user.mjs"; - -supertokens.init(getBackendConfig()); - -export const handler = middy( - middleware((event) => { - if (event.path === "/user") { - return userHandler(event); - } - - return { - body: JSON.stringify({ - msg: "Hello!", - }), - statusCode: 200, - }; - }) -) - .use( - cors({ - origin: getBackendConfig().appInfo.websiteDomain, - credentials: true, - headers: ["Content-Type", ...supertokens.getAllCORSHeaders()].join(", "), - methods: "OPTIONS,POST,GET,PUT,DELETE", - }) - ) - .onError((request) => { - throw request.error; - }); diff --git a/examples/with-aws-lambda/backend/package.json b/examples/with-aws-lambda/backend/package.json deleted file mode 100644 index 46d5fc013..000000000 --- a/examples/with-aws-lambda/backend/package.json +++ /dev/null @@ -1,16 +0,0 @@ -{ - "name": "aws-lambda-test", - "version": "1.0.0", - "description": "", - "main": "index.js", - "scripts": { - "test": "echo \"Error: no test specified\" && exit 1" - }, - "author": "", - "license": "ISC", - "dependencies": { - "@middy/core": "^5.1.0", - "@middy/http-cors": "^5.1.0", - "supertokens-node": "latest" - } -} diff --git a/examples/with-aws-lambda/backend/user.mjs b/examples/with-aws-lambda/backend/user.mjs deleted file mode 100644 index d423038ec..000000000 --- a/examples/with-aws-lambda/backend/user.mjs +++ /dev/null @@ -1,34 +0,0 @@ -let supertokens = require("supertokens-node"); -let { verifySession } = require("supertokens-node/recipe/session/framework/awsLambda"); -let middy = require("@middy/core"); -let cors = require("@middy/http-cors"); -let { getBackendConfig } = require("./config.mjs"); - -supertokens.init(getBackendConfig()); - -const userHandler = async (event, _) => { - return { - statusCode: 200, - headers: { - "content-type": "application/json", - }, - body: JSON.stringify({ - sessionHandle: event.session.getHandle(), - userId: event.session.getUserId(), - accessTokenPayload: event.session.getAccessTokenPayload(), - }), - }; -}; - -export const handler = middy(verifySession(userHandler)) - .use( - cors({ - origin: getBackendConfig().appInfo.websiteDomain, - credentials: true, - headers: ["Content-Type", ...supertokens.getAllCORSHeaders()].join(", "), - methods: "OPTIONS,POST,GET,PUT,DELETE", - }) - ) - .onError((request) => { - throw request.error; - }); diff --git a/examples/with-aws-lambda/frontend/.env b/examples/with-aws-lambda/frontend/.env deleted file mode 100644 index 7d910f148..000000000 --- a/examples/with-aws-lambda/frontend/.env +++ /dev/null @@ -1 +0,0 @@ -SKIP_PREFLIGHT_CHECK=true \ No newline at end of file diff --git a/examples/with-aws-lambda/frontend/package.json b/examples/with-aws-lambda/frontend/package.json deleted file mode 100644 index 7a6ed4b4f..000000000 --- a/examples/with-aws-lambda/frontend/package.json +++ /dev/null @@ -1,42 +0,0 @@ -{ - "name": "frontend", - "version": "1.0.0", - "description": "", - "main": "index.js", - "scripts": { - "start": "BROWSER=none PORT=8888 react-scripts start" - }, - "author": "", - "license": "ISC", - "dependencies": { - "@testing-library/jest-dom": "^5.11.4", - "@testing-library/react": "^11.1.0", - "@testing-library/user-event": "^12.1.10", - "@types/jest": "^26.0.15", - "@types/node": "^12.0.0", - "@types/react": "^16.9.53", - "@types/react-dom": "^16.9.8", - "axios": "^0.21.1", - "body-parser": "^1.19.0", - "npm-run-all": "^4.1.5", - "react": "^18.0.0", - "react-dom": "^18.0.0", - "react-router-dom": "^6.2.1", - "react-scripts": "^5.0.1", - "supertokens-auth-react": "latest", - "typescript": "^4.0.3", - "web-vitals": "^0.2.4" - }, - "browserslist": { - "production": [ - ">0.2%", - "not dead", - "not op_mini all" - ], - "development": [ - "last 1 chrome version", - "last 1 firefox version", - "last 1 safari version" - ] - } -} diff --git a/examples/with-aws-lambda/frontend/public/_redirects b/examples/with-aws-lambda/frontend/public/_redirects deleted file mode 100644 index 78f7f2067..000000000 --- a/examples/with-aws-lambda/frontend/public/_redirects +++ /dev/null @@ -1 +0,0 @@ -/* /index.html 200 \ No newline at end of file diff --git a/examples/with-aws-lambda/frontend/public/background.svg b/examples/with-aws-lambda/frontend/public/background.svg deleted file mode 100644 index a0309e655..000000000 --- a/examples/with-aws-lambda/frontend/public/background.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/examples/with-aws-lambda/frontend/public/favicon.ico b/examples/with-aws-lambda/frontend/public/favicon.ico deleted file mode 100644 index a11777cc471a4344702741ab1c8a588998b1311a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3870 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 baj7?x%VD!5Cxk2YbYLNVeiXvvpMCWYo=by@ diff --git a/examples/with-aws-lambda/frontend/public/index.html b/examples/with-aws-lambda/frontend/public/index.html deleted file mode 100644 index 7e63e6f25..000000000 --- a/examples/with-aws-lambda/frontend/public/index.html +++ /dev/null @@ -1,40 +0,0 @@ - - - - - - - - - - - - - - React App - - - -
- - diff --git a/examples/with-aws-lambda/frontend/public/logo192.png b/examples/with-aws-lambda/frontend/public/logo192.png deleted file mode 100644 index fc44b0a3796c0e0a64c3d858ca038bd4570465d9..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 5347 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 b{|{}U^kRn2wo}j7|0ATu<;8xA7zX}7|B6mN diff --git a/examples/with-aws-lambda/frontend/public/manifest.json b/examples/with-aws-lambda/frontend/public/manifest.json deleted file mode 100644 index f01493ff0..000000000 --- a/examples/with-aws-lambda/frontend/public/manifest.json +++ /dev/null @@ -1,25 +0,0 @@ -{ - "short_name": "React App", - "name": "Create React App Sample", - "icons": [ - { - "src": "favicon.ico", - "sizes": "64x64 32x32 24x24 16x16", - "type": "image/x-icon" - }, - { - "src": "logo192.png", - "type": "image/png", - "sizes": "192x192" - }, - { - "src": "logo512.png", - "type": "image/png", - "sizes": "512x512" - } - ], - "start_url": ".", - "display": "standalone", - "theme_color": "#000000", - "background_color": "#ffffff" -} diff --git a/examples/with-aws-lambda/frontend/public/robots.txt b/examples/with-aws-lambda/frontend/public/robots.txt deleted file mode 100644 index e9e57dc4d..000000000 --- a/examples/with-aws-lambda/frontend/public/robots.txt +++ /dev/null @@ -1,3 +0,0 @@ -# https://www.robotstxt.org/robotstxt.html -User-agent: * -Disallow: diff --git a/examples/with-aws-lambda/frontend/src/App.css b/examples/with-aws-lambda/frontend/src/App.css deleted file mode 100644 index abce9ccf8..000000000 --- a/examples/with-aws-lambda/frontend/src/App.css +++ /dev/null @@ -1,33 +0,0 @@ -.App { - display: flex; - flex-direction: column; - justify-content: stretch; - width: 100vw; - height: 100vh; - font-family: Rubik; -} - -.fill { - display: flex; - flex-direction: column; - align-items: center; - justify-content: center; - flex: 1 1 auto; -} - -.footer { - align-self: "flex-end"; -} - -.sessionButton { - padding-left: 13px; - padding-right: 13px; - padding-top: 8px; - padding-bottom: 8px; - background-color: black; - border-radius: 10px; - cursor: pointer; - color: white; - font-weight: bold; - font-size: 17px; -} diff --git a/examples/with-aws-lambda/frontend/src/App.test.tsx b/examples/with-aws-lambda/frontend/src/App.test.tsx deleted file mode 100644 index 9b2f4d07b..000000000 --- a/examples/with-aws-lambda/frontend/src/App.test.tsx +++ /dev/null @@ -1,9 +0,0 @@ -import React from "react"; -import { render, screen } from "@testing-library/react"; -import App from "./App"; - -test("renders learn react link", () => { - render(); - const linkElement = screen.getByText(/learn react/i); - expect(linkElement).toBeInTheDocument(); -}); diff --git a/examples/with-aws-lambda/frontend/src/App.tsx b/examples/with-aws-lambda/frontend/src/App.tsx deleted file mode 100644 index 67463f65a..000000000 --- a/examples/with-aws-lambda/frontend/src/App.tsx +++ /dev/null @@ -1,74 +0,0 @@ -import "./App.css"; -import SuperTokens, { SuperTokensWrapper } from "supertokens-auth-react"; -import { getSuperTokensRoutesForReactRouterDom } from "supertokens-auth-react/ui"; -import ThirdPartyEmailPassword from "supertokens-auth-react/recipe/thirdpartyemailpassword"; -import { ThirdPartyEmailPasswordPreBuiltUI } from "supertokens-auth-react/recipe/thirdpartyemailpassword/prebuiltui"; -import Session, { SessionAuth } from "supertokens-auth-react/recipe/session"; -import Home from "./Home"; -import { Routes, BrowserRouter as Router, Route } from "react-router-dom"; -import Footer from "./Footer"; - -export function getDomain() { - let host = window.location.hostname; - let port = window.location.port; - if (port !== "0" && port !== "80" && port !== "443" && port !== "") { - return host + ":" + port; - } - return host; -} -export function getAPIDomain() { - return ""; -} - -SuperTokens.init({ - appInfo: { - appName: "SuperTokens Demo App", - apiDomain: getAPIDomain(), - websiteDomain: getDomain(), - apiBasePath: "/auth", - apiGatewayPath: "/dev", - }, - recipeList: [ - ThirdPartyEmailPassword.init({ - signInAndUpFeature: { - providers: [ - ThirdPartyEmailPassword.Google.init(), - ThirdPartyEmailPassword.Github.init(), - ThirdPartyEmailPassword.Apple.init(), - ], - }, - }), - Session.init(), - ], -}); - -function App() { - return ( - - -
-
- - {getSuperTokensRoutesForReactRouterDom(require("react-router-dom"), [ - ThirdPartyEmailPasswordPreBuiltUI, - ])} - - - - } - /> - -
-
-
-
-
-
-
- ); -} - -export default App; diff --git a/examples/with-aws-lambda/frontend/src/Footer/index.tsx b/examples/with-aws-lambda/frontend/src/Footer/index.tsx deleted file mode 100644 index 245f4baa4..000000000 --- a/examples/with-aws-lambda/frontend/src/Footer/index.tsx +++ /dev/null @@ -1,19 +0,0 @@ -export default function Footer(): JSX.Element { - return ( -
- React Demo app. Made with ❤️ using supertokens.com -
- ); -} diff --git a/examples/with-aws-lambda/frontend/src/Home/CallAPIView.tsx b/examples/with-aws-lambda/frontend/src/Home/CallAPIView.tsx deleted file mode 100644 index 3586ef2e0..000000000 --- a/examples/with-aws-lambda/frontend/src/Home/CallAPIView.tsx +++ /dev/null @@ -1,16 +0,0 @@ -import axios from "axios"; -import { getAPIDomain } from "../App"; - -export default function CallAPIView() { - async function callAPIClicked() { - // this will also automatically refresh the session if needed - let response = await axios.get(getAPIDomain() + "/dev/user"); - window.alert("Session Information:\n" + JSON.stringify(response.data, null, 2)); - } - - return ( -
- Call API -
- ); -} diff --git a/examples/with-aws-lambda/frontend/src/Home/Logout.tsx b/examples/with-aws-lambda/frontend/src/Home/Logout.tsx deleted file mode 100644 index 8df3d314e..000000000 --- a/examples/with-aws-lambda/frontend/src/Home/Logout.tsx +++ /dev/null @@ -1,30 +0,0 @@ -export default function Logout({ logoutClicked }: { logoutClicked: () => void }) { - return ( -
-
- SIGN OUT -
-
- ); -} diff --git a/examples/with-aws-lambda/frontend/src/Home/SuccessView.tsx b/examples/with-aws-lambda/frontend/src/Home/SuccessView.tsx deleted file mode 100644 index 2f03173d3..000000000 --- a/examples/with-aws-lambda/frontend/src/Home/SuccessView.tsx +++ /dev/null @@ -1,50 +0,0 @@ -import CallAPIView from "./CallAPIView"; - -export default function SuccessView({ userId }: { userId: string }) { - return ( -
- - 🥳🎉 - - Login successful -
-
- Your user ID is -
- {userId} -
-
-
-
- -
-
-
- ------------------------------------ -
-
-
- - ); -} diff --git a/examples/with-aws-lambda/frontend/src/Home/index.tsx b/examples/with-aws-lambda/frontend/src/Home/index.tsx deleted file mode 100644 index 5777e347d..000000000 --- a/examples/with-aws-lambda/frontend/src/Home/index.tsx +++ /dev/null @@ -1,27 +0,0 @@ -import React from "react"; -import Logout from "./Logout"; -import SuccessView from "./SuccessView"; -import { useSessionContext } from "supertokens-auth-react/recipe/session"; -import { useNavigate } from "react-router-dom"; -import { signOut } from "supertokens-auth-react/recipe/emailpassword"; - -export default function Home() { - const sessionContext = useSessionContext(); - const navigate = useNavigate(); - - async function logoutClicked() { - await signOut(); - navigate("/auth"); - } - - if (sessionContext.loading === true) { - return null; - } - - return ( -
- - -
- ); -} diff --git a/examples/with-aws-lambda/frontend/src/index.css b/examples/with-aws-lambda/frontend/src/index.css deleted file mode 100644 index 04146b5e7..000000000 --- a/examples/with-aws-lambda/frontend/src/index.css +++ /dev/null @@ -1,11 +0,0 @@ -body { - margin: 0; - font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", "Roboto", "Oxygen", "Ubuntu", "Cantarell", "Fira Sans", - "Droid Sans", "Helvetica Neue", sans-serif; - -webkit-font-smoothing: antialiased; - -moz-osx-font-smoothing: grayscale; -} - -code { - font-family: source-code-pro, Menlo, Monaco, Consolas, "Courier New", monospace; -} diff --git a/examples/with-aws-lambda/frontend/src/index.tsx b/examples/with-aws-lambda/frontend/src/index.tsx deleted file mode 100644 index fbbe35ace..000000000 --- a/examples/with-aws-lambda/frontend/src/index.tsx +++ /dev/null @@ -1,16 +0,0 @@ -import React from "react"; -import { createRoot } from "react-dom/client"; -import "./index.css"; -import App from "./App"; -import reportWebVitals from "./reportWebVitals"; - -createRoot(document.getElementById("root")).render( - - - -); - -// If you want to start measuring performance in your app, pass a function -// to log results (for example: reportWebVitals(console.log)) -// or send to an analytics endpoint. Learn more: https://bit.ly/CRA-vitals -reportWebVitals(); diff --git a/examples/with-aws-lambda/frontend/src/logo.svg b/examples/with-aws-lambda/frontend/src/logo.svg deleted file mode 100644 index 9dfc1c058..000000000 --- a/examples/with-aws-lambda/frontend/src/logo.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/examples/with-aws-lambda/frontend/src/react-app-env.d.ts b/examples/with-aws-lambda/frontend/src/react-app-env.d.ts deleted file mode 100644 index 6431bc5fc..000000000 --- a/examples/with-aws-lambda/frontend/src/react-app-env.d.ts +++ /dev/null @@ -1 +0,0 @@ -/// diff --git a/examples/with-aws-lambda/frontend/src/reportWebVitals.ts b/examples/with-aws-lambda/frontend/src/reportWebVitals.ts deleted file mode 100644 index 0677b6701..000000000 --- a/examples/with-aws-lambda/frontend/src/reportWebVitals.ts +++ /dev/null @@ -1,15 +0,0 @@ -import { ReportHandler } from "web-vitals"; - -const reportWebVitals = (onPerfEntry?: ReportHandler) => { - if (onPerfEntry && onPerfEntry instanceof Function) { - import("web-vitals").then(({ getCLS, getFID, getFCP, getLCP, getTTFB }) => { - getCLS(onPerfEntry); - getFID(onPerfEntry); - getFCP(onPerfEntry); - getLCP(onPerfEntry); - getTTFB(onPerfEntry); - }); - } -}; - -export default reportWebVitals; diff --git a/examples/with-aws-lambda/frontend/src/setupTests.ts b/examples/with-aws-lambda/frontend/src/setupTests.ts deleted file mode 100644 index 1dd407a63..000000000 --- a/examples/with-aws-lambda/frontend/src/setupTests.ts +++ /dev/null @@ -1,5 +0,0 @@ -// jest-dom adds custom jest matchers for asserting on DOM nodes. -// allows you to do things like: -// expect(element).toHaveTextContent(/react/i) -// learn more: https://github.com/testing-library/jest-dom -import "@testing-library/jest-dom"; diff --git a/examples/with-aws-lambda/frontend/tsconfig.json b/examples/with-aws-lambda/frontend/tsconfig.json deleted file mode 100644 index c0555cbc6..000000000 --- a/examples/with-aws-lambda/frontend/tsconfig.json +++ /dev/null @@ -1,20 +0,0 @@ -{ - "compilerOptions": { - "target": "es5", - "lib": ["dom", "dom.iterable", "esnext"], - "allowJs": true, - "skipLibCheck": true, - "esModuleInterop": true, - "allowSyntheticDefaultImports": true, - "strict": true, - "forceConsistentCasingInFileNames": true, - "noFallthroughCasesInSwitch": true, - "module": "esnext", - "moduleResolution": "node", - "resolveJsonModule": true, - "isolatedModules": true, - "noEmit": true, - "jsx": "react-jsx" - }, - "include": ["src"] -} From 849ca88f3d956145b4d742a20cf93aedc1f9d201 Mon Sep 17 00:00:00 2001 From: Ankit Tiwari Date: Wed, 13 Dec 2023 15:54:52 +0530 Subject: [PATCH 3/3] Add README.md --- examples/with-aws-lambda/README.md | 1 + 1 file changed, 1 insertion(+) create mode 100644 examples/with-aws-lambda/README.md diff --git a/examples/with-aws-lambda/README.md b/examples/with-aws-lambda/README.md new file mode 100644 index 000000000..f52b66f84 --- /dev/null +++ b/examples/with-aws-lambda/README.md @@ -0,0 +1 @@ +Please refer to [this](https://github.com/supertokens/supertokens-node/blob/master/examples/aws/with-emailpassword) example to set up SuperTokens with AWS Lambda.