From c2e1f7ce8f1c3eec9b26ecda2f6483a869f9763d Mon Sep 17 00:00:00 2001
From: Hasin Mahmood <hasinmahmood01@gmail.com>
Date: Mon, 8 May 2023 15:17:05 +0100
Subject: [PATCH] added cors option for credential

---
 backend/node_modules/.package-lock.json     |  13 +++
 backend/node_modules/fsevents/LICENSE       |  22 ++++
 backend/node_modules/fsevents/README.md     |  83 +++++++++++++++
 backend/node_modules/fsevents/fsevents.d.ts |  46 +++++++++
 backend/node_modules/fsevents/fsevents.js   |  82 +++++++++++++++
 backend/node_modules/fsevents/fsevents.node | Bin 0 -> 147128 bytes
 backend/node_modules/fsevents/package.json  |  62 ++++++++++++
 backend/server.js                           | 106 ++++++++++----------
 8 files changed, 362 insertions(+), 52 deletions(-)
 create mode 100644 backend/node_modules/fsevents/LICENSE
 create mode 100644 backend/node_modules/fsevents/README.md
 create mode 100644 backend/node_modules/fsevents/fsevents.d.ts
 create mode 100644 backend/node_modules/fsevents/fsevents.js
 create mode 100755 backend/node_modules/fsevents/fsevents.node
 create mode 100644 backend/node_modules/fsevents/package.json

diff --git a/backend/node_modules/.package-lock.json b/backend/node_modules/.package-lock.json
index ce5bb3e7..a33cd53f 100644
--- a/backend/node_modules/.package-lock.json
+++ b/backend/node_modules/.package-lock.json
@@ -1972,6 +1972,19 @@
       "integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==",
       "optional": true
     },
+    "node_modules/fsevents": {
+      "version": "2.3.2",
+      "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.2.tgz",
+      "integrity": "sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==",
+      "hasInstallScript": true,
+      "optional": true,
+      "os": [
+        "darwin"
+      ],
+      "engines": {
+        "node": "^8.16.0 || ^10.6.0 || >=11.0.0"
+      }
+    },
     "node_modules/function-bind": {
       "version": "1.1.1",
       "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz",
diff --git a/backend/node_modules/fsevents/LICENSE b/backend/node_modules/fsevents/LICENSE
new file mode 100644
index 00000000..5d70441c
--- /dev/null
+++ b/backend/node_modules/fsevents/LICENSE
@@ -0,0 +1,22 @@
+MIT License
+-----------
+
+Copyright (C) 2010-2020 by Philipp Dunkel, Ben Noordhuis, Elan Shankar, Paul Miller
+
+Permission is hereby granted, free of charge, to any person obtaining a copy
+of this software and associated documentation files (the "Software"), to deal
+in the Software without restriction, including without limitation the rights
+to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+copies of the Software, and to permit persons to whom the Software is
+furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in
+all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+THE SOFTWARE.
diff --git a/backend/node_modules/fsevents/README.md b/backend/node_modules/fsevents/README.md
new file mode 100644
index 00000000..025c9a13
--- /dev/null
+++ b/backend/node_modules/fsevents/README.md
@@ -0,0 +1,83 @@
+# fsevents [![NPM](https://nodei.co/npm/fsevents.png)](https://nodei.co/npm/fsevents/)
+
+Native access to MacOS FSEvents in [Node.js](https://nodejs.org/)
+
+The FSEvents API in MacOS allows applications to register for notifications of
+changes to a given directory tree. It is a very fast and lightweight alternative
+to kqueue.
+
+This is a low-level library. For a cross-platform file watching module that
+uses fsevents, check out [Chokidar](https://github.com/paulmillr/chokidar).
+
+## Installation
+
+Supports only **Node.js v8.16 and higher**.
+
+```sh
+npm install fsevents
+```
+
+## Usage
+
+```js
+const fsevents = require('fsevents');
+const stop = fsevents.watch(__dirname, (path, flags, id) => {
+  const info = fsevents.getInfo(path, flags, id);
+}); // To start observation
+stop(); // To end observation
+```
+
+The callback passed as the second parameter to `.watch` get's called whenever the operating system detects a
+a change in the file system. It takes three arguments:
+
+###### `fsevents.watch(dirname: string, (path: string, flags: number, id: string) => void): () => Promise<undefined>`
+
+ * `path: string` - the item in the filesystem that have been changed
+ * `flags: number` - a numeric value describing what the change was
+ * `id: string` - an unique-id identifying this specific event
+
+ Returns closer callback which when called returns a Promise resolving when the watcher process has been shut down.
+
+###### `fsevents.getInfo(path: string, flags: number, id: string): FsEventInfo`
+
+The `getInfo` function takes the `path`, `flags` and `id` arguments and converts those parameters into a structure
+that is easier to digest to determine what the change was.
+
+The `FsEventsInfo` has the following shape:
+
+```js
+/**
+ * @typedef {'created'|'modified'|'deleted'|'moved'|'root-changed'|'cloned'|'unknown'} FsEventsEvent
+ * @typedef {'file'|'directory'|'symlink'} FsEventsType
+ */
+{
+  "event": "created", // {FsEventsEvent}
+  "path": "file.txt",
+  "type": "file",    // {FsEventsType}
+  "changes": {
+    "inode": true,   // Had iNode Meta-Information changed
+    "finder": false, // Had Finder Meta-Data changed
+    "access": false, // Had access permissions changed
+    "xattrs": false  // Had xAttributes changed
+  },
+  "flags": 0x100000000
+}
+```
+
+## Changelog
+
+- v2.3 supports Apple Silicon ARM CPUs
+- v2 supports node 8.16+ and reduces package size massively
+- v1.2.8 supports node 6+
+- v1.2.7 supports node 4+
+
+## Troubleshooting
+
+- I'm getting `EBADPLATFORM` `Unsupported platform for fsevents` error.
+- It's fine, nothing is broken. fsevents is macos-only. Other platforms are skipped. If you want to hide this warning, report a bug to NPM bugtracker asking them to hide ebadplatform warnings by default.
+
+## License
+
+The MIT License Copyright (C) 2010-2020 by Philipp Dunkel, Ben Noordhuis, Elan Shankar, Paul Miller — see LICENSE file.
+
+Visit our [GitHub page](https://github.com/fsevents/fsevents) and [NPM Page](https://npmjs.org/package/fsevents)
diff --git a/backend/node_modules/fsevents/fsevents.d.ts b/backend/node_modules/fsevents/fsevents.d.ts
new file mode 100644
index 00000000..2723c048
--- /dev/null
+++ b/backend/node_modules/fsevents/fsevents.d.ts
@@ -0,0 +1,46 @@
+declare type Event = "created" | "cloned" | "modified" | "deleted" | "moved" | "root-changed" | "unknown";
+declare type Type = "file" | "directory" | "symlink";
+declare type FileChanges = {
+  inode: boolean;
+  finder: boolean;
+  access: boolean;
+  xattrs: boolean;
+};
+declare type Info = {
+  event: Event;
+  path: string;
+  type: Type;
+  changes: FileChanges;
+  flags: number;
+};
+declare type WatchHandler = (path: string, flags: number, id: string) => void;
+export declare function watch(path: string, handler: WatchHandler): () => Promise<void>;
+export declare function watch(path: string, since: number, handler: WatchHandler): () => Promise<void>;
+export declare function getInfo(path: string, flags: number): Info;
+export declare const constants: {
+  None: 0x00000000;
+  MustScanSubDirs: 0x00000001;
+  UserDropped: 0x00000002;
+  KernelDropped: 0x00000004;
+  EventIdsWrapped: 0x00000008;
+  HistoryDone: 0x00000010;
+  RootChanged: 0x00000020;
+  Mount: 0x00000040;
+  Unmount: 0x00000080;
+  ItemCreated: 0x00000100;
+  ItemRemoved: 0x00000200;
+  ItemInodeMetaMod: 0x00000400;
+  ItemRenamed: 0x00000800;
+  ItemModified: 0x00001000;
+  ItemFinderInfoMod: 0x00002000;
+  ItemChangeOwner: 0x00004000;
+  ItemXattrMod: 0x00008000;
+  ItemIsFile: 0x00010000;
+  ItemIsDir: 0x00020000;
+  ItemIsSymlink: 0x00040000;
+  ItemIsHardlink: 0x00100000;
+  ItemIsLastHardlink: 0x00200000;
+  OwnEvent: 0x00080000;
+  ItemCloned: 0x00400000;
+};
+export {};
diff --git a/backend/node_modules/fsevents/fsevents.js b/backend/node_modules/fsevents/fsevents.js
new file mode 100644
index 00000000..f1b31c95
--- /dev/null
+++ b/backend/node_modules/fsevents/fsevents.js
@@ -0,0 +1,82 @@
+/*
+ ** © 2020 by Philipp Dunkel, Ben Noordhuis, Elan Shankar, Paul Miller
+ ** Licensed under MIT License.
+ */
+
+/* jshint node:true */
+"use strict";
+
+if (process.platform !== "darwin") {
+  throw new Error(`Module 'fsevents' is not compatible with platform '${process.platform}'`);
+}
+
+const Native = require("./fsevents.node");
+const events = Native.constants;
+
+function watch(path, since, handler) {
+  if (typeof path !== "string") {
+    throw new TypeError(`fsevents argument 1 must be a string and not a ${typeof path}`);
+  }
+  if ("function" === typeof since && "undefined" === typeof handler) {
+    handler = since;
+    since = Native.flags.SinceNow;
+  }
+  if (typeof since !== "number") {
+    throw new TypeError(`fsevents argument 2 must be a number and not a ${typeof since}`);
+  }
+  if (typeof handler !== "function") {
+    throw new TypeError(`fsevents argument 3 must be a function and not a ${typeof handler}`);
+  }
+
+  let instance = Native.start(Native.global, path, since, handler);
+  if (!instance) throw new Error(`could not watch: ${path}`);
+  return () => {
+    const result = instance ? Promise.resolve(instance).then(Native.stop) : Promise.resolve(undefined);
+    instance = undefined;
+    return result;
+  };
+}
+
+function getInfo(path, flags) {
+  return {
+    path,
+    flags,
+    event: getEventType(flags),
+    type: getFileType(flags),
+    changes: getFileChanges(flags),
+  };
+}
+
+function getFileType(flags) {
+  if (events.ItemIsFile & flags) return "file";
+  if (events.ItemIsDir & flags) return "directory";
+  if (events.ItemIsSymlink & flags) return "symlink";
+}
+function anyIsTrue(obj) {
+  for (let key in obj) {
+    if (obj[key]) return true;
+  }
+  return false;
+}
+function getEventType(flags) {
+  if (events.ItemRemoved & flags) return "deleted";
+  if (events.ItemRenamed & flags) return "moved";
+  if (events.ItemCreated & flags) return "created";
+  if (events.ItemModified & flags) return "modified";
+  if (events.RootChanged & flags) return "root-changed";
+  if (events.ItemCloned & flags) return "cloned";
+  if (anyIsTrue(flags)) return "modified";
+  return "unknown";
+}
+function getFileChanges(flags) {
+  return {
+    inode: !!(events.ItemInodeMetaMod & flags),
+    finder: !!(events.ItemFinderInfoMod & flags),
+    access: !!(events.ItemChangeOwner & flags),
+    xattrs: !!(events.ItemXattrMod & flags),
+  };
+}
+
+exports.watch = watch;
+exports.getInfo = getInfo;
+exports.constants = events;
diff --git a/backend/node_modules/fsevents/fsevents.node b/backend/node_modules/fsevents/fsevents.node
new file mode 100755
index 0000000000000000000000000000000000000000..00fac7e88bbc5ed249eaaac87b210a71e2646889
GIT binary patch
literal 147128
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
a|NP;OOTMqX|CF;YDn9F9zx(qahW;OGU5pd}

literal 0
HcmV?d00001

diff --git a/backend/node_modules/fsevents/package.json b/backend/node_modules/fsevents/package.json
new file mode 100644
index 00000000..af6da84a
--- /dev/null
+++ b/backend/node_modules/fsevents/package.json
@@ -0,0 +1,62 @@
+{
+  "name": "fsevents",
+  "version": "2.3.2",
+  "description": "Native Access to MacOS FSEvents",
+  "main": "fsevents.js",
+  "types": "fsevents.d.ts",
+  "os": [
+    "darwin"
+  ],
+  "files": [
+    "fsevents.d.ts",
+    "fsevents.js",
+    "fsevents.node"
+  ],
+  "engines": {
+    "node": "^8.16.0 || ^10.6.0 || >=11.0.0"
+  },
+  "scripts": {
+    "clean": "node-gyp clean && rm -f fsevents.node",
+    "build": "node-gyp clean && rm -f fsevents.node && node-gyp rebuild && node-gyp clean",
+    "test": "/bin/bash ./test.sh 2>/dev/null",
+    "prepublishOnly": "npm run build"
+  },
+  "repository": {
+    "type": "git",
+    "url": "https://github.com/fsevents/fsevents.git"
+  },
+  "keywords": [
+    "fsevents",
+    "mac"
+  ],
+  "contributors": [
+    {
+      "name": "Philipp Dunkel",
+      "email": "pip@pipobscure.com"
+    },
+    {
+      "name": "Ben Noordhuis",
+      "email": "info@bnoordhuis.nl"
+    },
+    {
+      "name": "Elan Shankar",
+      "email": "elan.shanker@gmail.com"
+    },
+    {
+      "name": "Miroslav Bajtoš",
+      "email": "mbajtoss@gmail.com"
+    },
+    {
+      "name": "Paul Miller",
+      "url": "https://paulmillr.com"
+    }
+  ],
+  "license": "MIT",
+  "bugs": {
+    "url": "https://github.com/fsevents/fsevents/issues"
+  },
+  "homepage": "https://github.com/fsevents/fsevents",
+  "devDependencies": {
+    "node-gyp": "^6.1.0"
+  }
+}
diff --git a/backend/server.js b/backend/server.js
index a7e67d31..9921a9ac 100644
--- a/backend/server.js
+++ b/backend/server.js
@@ -1,112 +1,114 @@
-const { createClient } = require('@supabase/supabase-js');
-const express = require('express');
-const cors = require('cors');
+const { createClient } = require("@supabase/supabase-js");
+const express = require("express");
+const cors = require("cors");
 const app = express();
-const jwt = require('jsonwebtoken');
-require('dotenv').config();
-const authRouter = require('./auth');
+const jwt = require("jsonwebtoken");
+require("dotenv").config();
+const authRouter = require("./auth");
 
-const supabaseUrl = 'https://ppayoicayizfiezyqdtf.supabase.co';
-const supabaseKey = 'eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJzdXBhYmFzZSIsInJlZiI6InBwYXlvaWNheWl6ZmllenlxZHRmIiwicm9sZSI6ImFub24iLCJpYXQiOjE2ODI0NDU2NzcsImV4cCI6MTk5ODAyMTY3N30.8BhS7mRtSyEZKeQMg9B80A_Tv9PbocQZjCQ0ZU3YisI';
+const supabaseUrl = "https://ppayoicayizfiezyqdtf.supabase.co";
+const supabaseKey =
+  "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJzdXBhYmFzZSIsInJlZiI6InBwYXlvaWNheWl6ZmllenlxZHRmIiwicm9sZSI6ImFub24iLCJpYXQiOjE2ODI0NDU2NzcsImV4cCI6MTk5ODAyMTY3N30.8BhS7mRtSyEZKeQMg9B80A_Tv9PbocQZjCQ0ZU3YisI";
 const supabase = createClient(supabaseUrl, supabaseKey);
-const JWT_SECRET = 'TlJ2sQP1bhiEIqYXTFaS/LV/MQTtC9DUX4WLqKwkJ9X3uYGAfJhId7ZLq0HdNyPsmvo831W7/4pZDa1Bw1YCsQ=='
-
-
+const JWT_SECRET =
+  "TlJ2sQP1bhiEIqYXTFaS/LV/MQTtC9DUX4WLqKwkJ9X3uYGAfJhId7ZLq0HdNyPsmvo831W7/4pZDa1Bw1YCsQ==";
 
 const corsOptions = {
-  origin: 'http://localhost:3000', // allow requests from this origin
-  optionsSuccessStatus: 200// return 200 instead of 204 for OPTIONS requests
+  origin: "http://localhost:3000", // allow requests from this origin
+  optionsSuccessStatus: 200, // return 200 instead of 204 for OPTIONS requests
+  credentials: true,
 };
 app.use(cors(corsOptions));
 app.use(express.json());
-app.use('/auth', authRouter);
+app.use("/auth", authRouter);
 
 function verifyToken(req, res, next) {
-  const token = req.headers.authorization?.split(' ')[1];
+  const token = req.headers.authorization?.split(" ")[1];
   if (!token) {
-    return res.status(401).json({ message: 'Authorization token is missing' });
+    return res.status(401).json({ message: "Authorization token is missing" });
   }
   try {
     const decoded = jwt.verify(token, JWT_SECRET);
     req.user = decoded;
     next();
   } catch (error) {
-    return res.status(401).json({ message: 'Authorization token is invalid or expired' });
+    return res
+      .status(401)
+      .json({ message: "Authorization token is invalid or expired" });
   }
 }
-app.get('/api/test', verifyToken, (req, res) => {
-  res.json({ message: 'Authorization successful', user: req.user });
+app.get("/api/test", verifyToken, (req, res) => {
+  res.json({ message: "Authorization successful", user: req.user });
 });
 
-app.post('/api/signup',async (req, res) => {
+app.post("/api/signup", async (req, res) => {
   const { email, password } = req.body;
-  console.log('email here', email);
-  console.log(password); 
+  console.log("email here", email);
+  console.log(password);
   // email validation
   if (!email || !password) {
-    return res.json({ message: 'Email and password are required' });
+    return res.json({ message: "Email and password are required" });
   }
-  if (!email.endsWith('@surrey.ac.uk')) {
-    return res.json({ message: 'Email must end with @surrey.ac.uk' });
+  if (!email.endsWith("@surrey.ac.uk")) {
+    return res.json({ message: "Email must end with @surrey.ac.uk" });
   }
   if (password.length < 6) {
-    return res.json({ message: 'Password must be at least 6 characters long' });
+    return res.json({ message: "Password must be at least 6 characters long" });
   }
   const user = { email, password };
   try {
-    console.log('backend connection made.');
-    const  { data: { user } } = await supabase.auth.signUp({ email, password });
+    console.log("backend connection made.");
+    const {
+      data: { user },
+    } = await supabase.auth.signUp({ email, password });
 
     // Generate a JWT token
     const token = jwt.sign({ userId: user.id }, JWT_SECRET);
-    console.log("successful sign up")
-    return res.status(200).json({ message: 'Sign up successful.', user, token });
-
+    console.log("successful sign up");
+    return res
+      .status(200)
+      .json({ message: "Sign up successful.", user, token });
   } catch (error) {
     console.error(error.message);
-    res.json({ message: 'Email already exists.' });
+    res.json({ message: "Email already exists." });
   }
 });
 
-
-app.post('/api/signin', async (req, res) => {
+app.post("/api/signin", async (req, res) => {
   const { email, password } = req.body;
 
   // Email and password validation
   if (!email || !password) {
-    return res.json({ message: 'Email and password are required' });
+    return res.json({ message: "Email and password are required" });
   }
   const user = { email, password };
   try {
     // Attempt to sign in the user with Supabase
-    const { data: { user }, error } = await supabase.auth.signInWithPassword({email, password });
+    const {
+      data: { user },
+      error,
+    } = await supabase.auth.signInWithPassword({ email, password });
     if (error) throw error;
     // Generate a JWT token
-    const token = jwt.sign({ userId: user.id }, JWT_SECRET,
-     { expiresIn: '1h' });
+    const token = jwt.sign({ userId: user.id }, JWT_SECRET, {
+      expiresIn: "1h",
+    });
     // Return success message and user data
-    console.log("successful sign in")
-    return res.status(200).json({ message: 'Sign In Successful.', user, token });
-
+    console.log("successful sign in");
+    return res
+      .status(200)
+      .json({ message: "Sign In Successful.", user, token });
   } catch (error) {
     console.error(error.message);
-    return res.json({ message: 'Failed to sign in' });
+    return res.json({ message: "Failed to sign in" });
   }
 });
-app.get('/', (req, res) => {
-  res.send('Hello, world!');
+app.get("/", (req, res) => {
+  res.send("Hello, world!");
 });
 
-
-
-
-
-
-
-
 process.env.PORT = 8080;
 // Start server
 app.listen(process.env.PORT, () => {
   console.log(`hii Server started on port ${process.env.PORT}`);
 });
-
-- 
GitLab