having one solution for different components of app

This commit is contained in:
Arjun Patel
2022-01-27 20:17:00 -08:00
parent 0d23d1dfd7
commit 0f7e5a831b
256 changed files with 7997 additions and 0 deletions
+5
View File
@@ -0,0 +1,5 @@
{
"projects": {
"default": "nirvana-for-business"
}
}
+66
View File
@@ -0,0 +1,66 @@
# Logs
logs
*.log
npm-debug.log*
yarn-debug.log*
yarn-error.log*
firebase-debug.log*
firebase-debug.*.log*
# Firebase cache
.firebase/
# Firebase config
# Uncomment this if you'd like others to create their own Firebase project.
# For a team working on the same Firebase project(s), it is recommended to leave
# it commented so all members can deploy to the same project(s) in .firebaserc.
# .firebaserc
# 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
# nyc test coverage
.nyc_output
# Grunt intermediate storage (http://gruntjs.com/creating-plugins#storing-task-files)
.grunt
# Bower dependency directory (https://bower.io/)
bower_components
# node-waf configuration
.lock-wscript
# Compiled binary addons (http://nodejs.org/api/addons.html)
build/Release
# Dependency directories
node_modules/
# Optional npm cache directory
.npm
# Optional eslint cache
.eslintcache
# Optional REPL history
.node_repl_history
# Output of 'npm pack'
*.tgz
# Yarn Integrity file
.yarn-integrity
# dotenv environment variables file
.env
+13
View File
@@ -0,0 +1,13 @@
{
"firestore": {
"rules": "firestore.rules",
"indexes": "firestore.indexes.json"
},
"functions": {
"predeploy": [
"npm --prefix functions run build",
"npm --prefix \"$RESOURCE_DIR\" run lint",
"npm --prefix \"$RESOURCE_DIR\" run build"
]
}
}
+83
View File
@@ -0,0 +1,83 @@
{
"indexes": [
{
"collectionGroup": "announcements",
"queryScope": "COLLECTION",
"fields": [
{
"fieldPath": "teamId",
"order": "ASCENDING"
},
{
"fieldPath": "createdDate",
"order": "ASCENDING"
}
]
},
{
"collectionGroup": "audioMessages",
"queryScope": "COLLECTION",
"fields": [
{
"fieldPath": "senderReceiver",
"arrayConfig": "CONTAINS"
},
{
"fieldPath": "createdDate",
"order": "ASCENDING"
}
]
},
{
"collectionGroup": "links",
"queryScope": "COLLECTION",
"fields": [
{
"fieldPath": "teamId",
"order": "ASCENDING"
},
{
"fieldPath": "createdDate",
"order": "DESCENDING"
}
]
},
{
"collectionGroup": "rooms",
"queryScope": "COLLECTION",
"fields": [
{
"fieldPath": "teamId",
"order": "ASCENDING"
},
{
"fieldPath": "type",
"order": "ASCENDING"
},
{
"fieldPath": "createdDate",
"order": "ASCENDING"
}
]
},
{
"collectionGroup": "rooms",
"queryScope": "COLLECTION",
"fields": [
{
"fieldPath": "teamId",
"order": "ASCENDING"
},
{
"fieldPath": "type",
"order": "ASCENDING"
},
{
"fieldPath": "scheduledDateTime",
"order": "ASCENDING"
}
]
}
],
"fieldOverrides": []
}
+9
View File
@@ -0,0 +1,9 @@
rules_version = '2';
service cloud.firestore {
match /databases/{database}/documents {
match /{document=**} {
allow read, write: if
request.time < timestamp.date(2022, 2, 12);
}
}
}
+34
View File
@@ -0,0 +1,34 @@
module.exports = {
root: true,
env: {
es6: true,
node: true,
},
extends: [
// "eslint:recommended",
// "plugin:import/errors",
// "plugin:import/warnings",
// "plugin:import/typescript",
// "google",
// "plugin:@typescript-eslint/recommended",
"eslint:recommended",
"plugin:import/errors",
"plugin:import/warnings",
"plugin:import/typescript",
],
parser: "@typescript-eslint/parser",
parserOptions: {
project: ["tsconfig.json", "tsconfig.dev.json"],
sourceType: "module",
tsconfigRootDir: __dirname,
},
ignorePatterns: [
"/lib/**/*", // Ignore built files.
],
plugins: ["@typescript-eslint", "import"],
rules: {
quotes: ["error", "double"],
// "import/no-unresolved": 0,
},
};
+9
View File
@@ -0,0 +1,9 @@
# Compiled JavaScript files
lib/**/*.js
lib/**/*.js.map
# TypeScript v1 declaration files
typings/
# Node.js dependency directory
node_modules/
File diff suppressed because it is too large Load Diff
+32
View File
@@ -0,0 +1,32 @@
{
"name": "functions",
"scripts": {
"lint": "eslint --ext .js,.ts .",
"build": "npm run lint && tsc",
"serve": "npm run build && firebase emulators:start --only functions & tsc --watch",
"shell": "npm run build && firebase functions:shell",
"start": "npm run shell",
"deploy": "firebase deploy --only functions",
"logs": "firebase functions:log",
"hotReload": "tsc --watch"
},
"engines": {
"node": "16"
},
"main": "lib/index.js",
"dependencies": {
"agora-access-token": "^2.0.4",
"firebase-admin": "^9.8.0",
"firebase-functions": "^3.14.1"
},
"devDependencies": {
"@typescript-eslint/eslint-plugin": "^3.9.1",
"@typescript-eslint/parser": "^3.8.0",
"eslint": "^7.6.0",
"eslint-config-google": "^0.14.0",
"eslint-plugin-import": "^2.22.0",
"firebase-functions-test": "^0.2.0",
"typescript": "^3.8.0"
},
"private": true
}
+56
View File
@@ -0,0 +1,56 @@
import * as functions from "firebase-functions";
import * as admin from "firebase-admin";
admin.initializeApp();
// exports.agoraToken = functions.https.onCall((data, context) => {
// console.log(data);
// console.log("user's id: " + context.auth?.uid);
// const channelName = data.channelName;
// const token = agora.getAgoraToken(channelName);
// return {token};
// });
export const agoraToken = functions.https.onCall((data, context) => {
console.log(data);
console.log("user's id: " + context.auth?.uid);
const channelName: string = data.channelName;
let token = getAgoraToken(channelName);
return { token };
});
import { RtcTokenBuilder, RtcRole } from "agora-access-token";
function getAgoraToken(channelName: string) {
// Rtc Examples
const appID = "c8dfd65deb5c4741bd564085627139d0";
const appCertificate = "aa57b809934b4efcb407cf30089d9f25";
const uid = 0; // no need to use this as we have authenticated this user
const role = RtcRole.PUBLISHER;
const expirationTimeInSeconds = 3600;
const currentTimestamp = Math.floor(Date.now() / 1000);
const privilegeExpiredTs = currentTimestamp + expirationTimeInSeconds;
// IMPORTANT! Build token with either the uid or with the user account. Comment out the option you do not want to use below.
// Build token with uid
const tokenA = RtcTokenBuilder.buildTokenWithUid(
appID,
appCertificate,
channelName,
uid,
role,
privilegeExpiredTs
);
console.log("Token With Integer Number Uid: " + tokenA);
return tokenA;
}
+15
View File
@@ -0,0 +1,15 @@
import * as functions from "firebase-functions";
import * as admin from "firebase-admin";
admin.initializeApp();
// // Start writing Firebase Functions
// // https://firebase.google.com/docs/functions/typescript
//
export const helloWorld = functions.https.onRequest((request, response) => {
functions.logger.info("Hello no!", { structuredData: true });
response.send("Hello from woahhhhhh!");
});
import { agoraToken } from "./agora";
exports.agoraToken = agoraToken;
+14
View File
@@ -0,0 +1,14 @@
// import * as functions from "firebase-functions";
// exports.inviteUserToTeam = functions.firestore
// .document('teamMembers/{userId}')
// .onCreate((snap, context) => {
// // Get an object representing the document
// // e.g. {'name': 'Marie', 'age': 66}
// const newValue = snap.data();
// // access a particular field as you would any JS property
// const name = newValue.name;
// // perform desired operations ...
// });
+3
View File
@@ -0,0 +1,3 @@
{
"include": [".eslintrc.js"]
}
+14
View File
@@ -0,0 +1,14 @@
{
"compilerOptions": {
"module": "commonjs",
"noImplicitReturns": true,
"noUnusedLocals": true,
"outDir": "lib",
"sourceMap": true,
"strict": true,
"target": "es2017",
"strictNullChecks": true
},
"compileOnSave": true,
"include": ["src"]
}
View File
View File
View File
View File
View File
View File

Before

Width:  |  Height:  |  Size: 22 KiB

After

Width:  |  Height:  |  Size: 22 KiB

Before

Width:  |  Height:  |  Size: 19 KiB

After

Width:  |  Height:  |  Size: 19 KiB

Before

Width:  |  Height:  |  Size: 12 KiB

After

Width:  |  Height:  |  Size: 12 KiB

Before

Width:  |  Height:  |  Size: 14 KiB

After

Width:  |  Height:  |  Size: 14 KiB

Before

Width:  |  Height:  |  Size: 11 KiB

After

Width:  |  Height:  |  Size: 11 KiB

Before

Width:  |  Height:  |  Size: 10 KiB

After

Width:  |  Height:  |  Size: 10 KiB

Before

Width:  |  Height:  |  Size: 12 KiB

After

Width:  |  Height:  |  Size: 12 KiB

Before

Width:  |  Height:  |  Size: 9.3 KiB

After

Width:  |  Height:  |  Size: 9.3 KiB

Before

Width:  |  Height:  |  Size: 20 KiB

After

Width:  |  Height:  |  Size: 20 KiB

Before

Width:  |  Height:  |  Size: 8.8 KiB

After

Width:  |  Height:  |  Size: 8.8 KiB

Before

Width:  |  Height:  |  Size: 22 KiB

After

Width:  |  Height:  |  Size: 22 KiB

Before

Width:  |  Height:  |  Size: 10 KiB

After

Width:  |  Height:  |  Size: 10 KiB

Some files were not shown because too many files have changed in this diff Show More