├── .gitignore
├── .prettierrc.js
├── README.md
├── firebase.json
├── firestore.indexes.json
├── firestore.rules
├── functions
├── .eslintrc.json
├── .gitignore
├── index.js
├── package-lock.json
└── package.json
├── package.json
├── public
├── 404.html
├── favicon.png
├── global.css
├── images
│ ├── almond.jpg
│ ├── ebro_river.jpg
│ ├── firebase-logo.png
│ ├── materialize.svg
│ ├── svelte-logo.svg
│ ├── svelte-router-logo.png
│ ├── validate-js-logo.png
│ └── waterfall.jpg
├── index.html
├── plugins.css
└── stylesheets
│ └── custom.css
├── rollup.config.js
├── src
├── App.svelte
├── config
│ ├── firebase.js
│ └── settings.js
├── lib
│ ├── diacritics.js
│ ├── filter_results.js
│ └── routes
│ │ ├── protected.js
│ │ └── public.js
├── main.js
├── middleware
│ ├── database
│ │ ├── employees.js
│ │ ├── firebase_results.js
│ │ ├── index.js
│ │ └── teams.js
│ ├── employees
│ │ └── crud.js
│ └── users
│ │ └── auth.js
├── routes.js
├── stores
│ ├── current_user.js
│ └── notification_message.js
└── views
│ ├── 404.svelte
│ ├── admin
│ ├── dashboard
│ │ └── index.svelte
│ ├── employees
│ │ ├── edit.svelte
│ │ ├── form.svelte
│ │ ├── header
│ │ │ ├── index.svelte
│ │ │ └── search.svelte
│ │ ├── index.svelte
│ │ ├── item.svelte
│ │ ├── layout.svelte
│ │ ├── list.svelte
│ │ ├── new.svelte
│ │ └── show.svelte
│ ├── layout
│ │ ├── header.svelte
│ │ ├── index.svelte
│ │ └── sidebar
│ │ │ ├── index.svelte
│ │ │ ├── item.svelte
│ │ │ └── menu.svelte
│ └── teams
│ │ ├── form.svelte
│ │ ├── index.svelte
│ │ ├── item.svelte
│ │ ├── list.svelte
│ │ └── show.svelte
│ ├── components
│ ├── forms
│ │ ├── buttons.svelte
│ │ ├── check_box.svelte
│ │ ├── date_input.svelte
│ │ ├── date_range.svelte
│ │ ├── email_input.svelte
│ │ ├── number_input.svelte
│ │ ├── password_input.svelte
│ │ ├── radio_input.svelte
│ │ ├── select.svelte
│ │ ├── text_input.svelte
│ │ ├── textarea.svelte
│ │ ├── time_input.svelte
│ │ └── time_range.svelte
│ ├── loading.svelte
│ ├── modals
│ │ ├── buttons.svelte
│ │ └── modal.svelte
│ ├── notification.svelte
│ └── number_pad
│ │ ├── button.svelte
│ │ └── index.svelte
│ └── public
│ ├── home
│ ├── hero.svelte
│ ├── how_to_use_it.svelte
│ ├── index.svelte
│ ├── main_features.svelte
│ ├── menu.svelte
│ └── technology.svelte
│ ├── layout
│ ├── footer.svelte
│ └── index.svelte
│ ├── login
│ ├── form.svelte
│ └── index.svelte
│ └── signup
│ ├── form.svelte
│ └── index.svelte
├── storage.rules
└── yarn.lock
/.gitignore:
--------------------------------------------------------------------------------
1 | .DS_Store
2 | node_modules
3 | functions/node_modules
4 | public/bundle.*
5 | src/config/settings.js
6 | /dist
7 | src/config
8 |
9 | /tests/e2e/videos/
10 | /tests/e2e/screenshots/
11 |
12 | # local env files
13 | .env.local
14 | .env.*.local
15 |
16 | # Log files
17 | npm-debug.log*
18 | yarn-debug.log*
19 | yarn-error.log*
20 |
21 | # Editor directories and files
22 | .idea
23 | .vscode
24 | *.suo
25 | *.ntvs*
26 | *.njsproj
27 | *.sln
28 | *.sw*
29 |
30 | .firebase/*
31 |
--------------------------------------------------------------------------------
/.prettierrc.js:
--------------------------------------------------------------------------------
1 | module.exports = {
2 | singleQuote: true,
3 | semi: false,
4 | printWidth: 120
5 | }
6 |
--------------------------------------------------------------------------------
/README.md:
--------------------------------------------------------------------------------
1 | # Svelte - Firebase
2 |
3 | A free template that you can use to create new applications using Svelte and Firebase.
4 |
5 | You can see a live demo here: [https://svelte-firebase-template.web.app/](https://svelte-firebase-template.web.app/)
6 |
7 | ## Features
8 |
9 | - Powerfull routing system with nested layouts.
10 | - Public and Private sections
11 | - Form validation
12 | - Preconfigured pages for Home, Login, Signup and more...
13 | - Secure your database with Firebase rules
14 | - Fully resposive theme
15 | - And many more...
16 |
17 | ## Usage
18 |
19 | Grab a copy of the template and install the dependencies:
20 |
21 | ```bash
22 | git clone https://github.com/jorgegorka/svelte-firebase my-app-name
23 | cd my-app-name && yarn install
24 | ```
25 |
26 | Add your Firebase configuration info to
27 | _src/config/settings.js_
28 |
29 | If you don't have a Firebase project you can create one in the
30 | [Firebase website](https://firebase.google.com/)
31 |
32 | Activate cloud firestore, storage and hosting in the Firebase console
33 |
34 | ```javascript
35 | const config = {
36 | apiKey: '',
37 | authDomain: '',
38 | databaseURL: '',
39 | projectId: '',
40 | storageBucket: '',
41 | messagingSenderId: ''
42 | }
43 | ```
44 |
45 | **Update .firebaserc with your project ID**
46 |
47 | Install all the dependencies required by functions.
48 |
49 | ```bash
50 | cd functions
51 | npm i
52 | ```
53 |
54 | Now we want to deploy all the rules, indexes and cloud functions to Firebase.
55 |
56 |
57 | ```bash
58 | yarn deploy
59 | ```
60 |
61 | This first first deployment will setup Firebase so everything is ready for development.
62 |
63 | ### Development
64 |
65 | Launch the development server
66 |
67 | ```bash
68 | yarn dev
69 | ```
70 |
71 | Visit [http://localhost:5000](http://localhost:5000)
72 |
73 | To add new pages edit the routes files at _src/lib/routes_
74 |
75 | There are public and protected routes. Protected routes require the visitor to be authenticated before accesing them.
76 |
77 | There are two complete CRUD examples: Teams and Employees.
78 |
79 | ### Deployment
80 |
81 | Rembember to activate cloud firestore, storage and hosting in the Firebase console before deploying for the first time.
82 |
83 | ```bash
84 | yarn deploy
85 | ```
86 |
87 | Enjoy
88 |
89 | ## Contribute
90 |
91 | Your comments, suggestions and improvements are [very welcome](https://github.com/jorgegorka/svelte-firebase/issues).
92 |
93 | ## Credits
94 |
95 | Svelte-Firebase has been created by [Jorge Alvarez](https://www.alvareznavarro.es).
96 |
97 | ## License
98 |
99 | [Released under MIT license](http://www.opensource.org/licenses/MIT)
100 |
--------------------------------------------------------------------------------
/firebase.json:
--------------------------------------------------------------------------------
1 | {
2 | "firestore": {
3 | "rules": "firestore.rules",
4 | "indexes": "firestore.indexes.json"
5 | },
6 | "functions": {
7 | "predeploy": [
8 | "npm --prefix \"$RESOURCE_DIR\" run lint"
9 | ],
10 | "source": "functions"
11 | },
12 | "hosting": {
13 | "public": "public",
14 | "ignore": [
15 | "firebase.json",
16 | "**/.*",
17 | "**/node_modules/**"
18 | ],
19 | "rewrites": [
20 | {
21 | "source": "**",
22 | "destination": "/index.html"
23 | }
24 | ]
25 | },
26 | "storage": {
27 | "rules": "storage.rules"
28 | }
29 | }
30 |
--------------------------------------------------------------------------------
/firestore.indexes.json:
--------------------------------------------------------------------------------
1 | {
2 | "indexes": [
3 | {
4 | "collectionGroup": "teams",
5 | "queryScope": "COLLECTION",
6 | "fields": [
7 | {
8 | "fieldPath": "companyId",
9 | "order": "ASCENDING"
10 | },
11 | {
12 | "fieldPath": "name",
13 | "order": "ASCENDING"
14 | }
15 | ]
16 | },
17 | {
18 | "collectionGroup": "employees",
19 | "queryScope": "COLLECTION",
20 | "fields": [
21 | {
22 | "fieldPath": "companyId",
23 | "order": "ASCENDING"
24 | },
25 | {
26 | "fieldPath": "name",
27 | "order": "ASCENDING"
28 | }
29 | ]
30 | },
31 | {
32 | "collectionGroup": "employees",
33 | "queryScope": "COLLECTION",
34 | "fields": [
35 | {
36 | "fieldPath": "active",
37 | "order": "ASCENDING"
38 | },
39 | {
40 | "fieldPath": "name",
41 | "order": "ASCENDING"
42 | }
43 | ]
44 | },
45 | {
46 | "collectionGroup": "employees",
47 | "queryScope": "COLLECTION",
48 | "fields": [
49 | {
50 | "fieldPath": "teamId",
51 | "order": "ASCENDING"
52 | },
53 | {
54 | "fieldPath": "name",
55 | "order": "ASCENDING"
56 | }
57 | ]
58 | }
59 | ],
60 | "fieldOverrides": []
61 | }
62 |
--------------------------------------------------------------------------------
/firestore.rules:
--------------------------------------------------------------------------------
1 | service cloud.firestore {
2 | match /databases/{database}/documents {
3 | match /companies/{companyId} {
4 | allow read: if isSignedIn() && userBelongsToCompany();
5 | allow update, delete: if companyAdmin()
6 | }
7 |
8 | match /teams/{teamId} {
9 | allow read: if isSignedIn() && adminOrEmployee();
10 | allow create: if userAndAdmin();
11 | allow update, delete: if companyAdmin()
12 | }
13 |
14 | match /employees/{employeeId} {
15 | allow read: if isSignedIn() && userBelongsToCompany();
16 | allow create: if userAndAdmin();
17 | allow update, delete: if companyAdmin()
18 | }
19 | }
20 |
21 | function isSignedIn() {
22 | return (request.auth.uid != null)
23 | }
24 |
25 | function userIsAdmin() {
26 | return request.auth.token.role == 'admin'
27 | }
28 |
29 | function userBelongsToCompany() {
30 | return request.auth.token.companyId == resource.data.companyId
31 | }
32 |
33 | function userAndAdmin() {
34 | return isSignedIn() && userIsAdmin()
35 | }
36 |
37 | function companyAdmin() {
38 | return userAndAdmin() && userBelongsToCompany()
39 | }
40 |
41 | function adminOrEmployee() {
42 | return userBelongsToCompany() && (userIsAdmin() || resource.data.id == request.auth.uid)
43 | }
44 |
45 | function adminOrOwner() {
46 | return userBelongsToCompany() && (userIsAdmin() || resource.data.employeeId == request.auth.uid)
47 | }
48 |
49 | function notCreator() {
50 | return resource.data.status != 'creator'
51 | }
52 | }
53 |
--------------------------------------------------------------------------------
/functions/.eslintrc.json:
--------------------------------------------------------------------------------
1 | {
2 | "parserOptions": {
3 | // Required for certain syntax usages
4 | "ecmaVersion": 2017
5 | },
6 | "plugins": [
7 | "promise"
8 | ],
9 | "extends": "eslint:recommended",
10 | "rules": {
11 | // Removed rule "disallow the use of console" from recommended eslint rules
12 | "no-console": "off",
13 |
14 | // Removed rule "disallow multiple spaces in regular expressions" from recommended eslint rules
15 | "no-regex-spaces": "off",
16 |
17 | // Removed rule "disallow the use of debugger" from recommended eslint rules
18 | "no-debugger": "off",
19 |
20 | // Removed rule "disallow unused variables" from recommended eslint rules
21 | "no-unused-vars": "off",
22 |
23 | // Removed rule "disallow mixed spaces and tabs for indentation" from recommended eslint rules
24 | "no-mixed-spaces-and-tabs": "off",
25 |
26 | // Removed rule "disallow the use of undeclared variables unless mentioned in /*global */ comments" from recommended eslint rules
27 | "no-undef": "off",
28 |
29 | // Warn against template literal placeholder syntax in regular strings
30 | "no-template-curly-in-string": 1,
31 |
32 | // Warn if return statements do not either always or never specify values
33 | "consistent-return": 1,
34 |
35 | // Warn if no return statements in callbacks of array methods
36 | "array-callback-return": 1,
37 |
38 | // Require the use of === and !==
39 | "eqeqeq": 2,
40 |
41 | // Disallow the use of alert, confirm, and prompt
42 | "no-alert": 2,
43 |
44 | // Disallow the use of arguments.caller or arguments.callee
45 | "no-caller": 2,
46 |
47 | // Disallow null comparisons without type-checking operators
48 | "no-eq-null": 2,
49 |
50 | // Disallow the use of eval()
51 | "no-eval": 2,
52 |
53 | // Warn against extending native types
54 | "no-extend-native": 1,
55 |
56 | // Warn against unnecessary calls to .bind()
57 | "no-extra-bind": 1,
58 |
59 | // Warn against unnecessary labels
60 | "no-extra-label": 1,
61 |
62 | // Disallow leading or trailing decimal points in numeric literals
63 | "no-floating-decimal": 2,
64 |
65 | // Warn against shorthand type conversions
66 | "no-implicit-coercion": 1,
67 |
68 | // Warn against function declarations and expressions inside loop statements
69 | "no-loop-func": 1,
70 |
71 | // Disallow new operators with the Function object
72 | "no-new-func": 2,
73 |
74 | // Warn against new operators with the String, Number, and Boolean objects
75 | "no-new-wrappers": 1,
76 |
77 | // Disallow throwing literals as exceptions
78 | "no-throw-literal": 2,
79 |
80 | // Require using Error objects as Promise rejection reasons
81 | "prefer-promise-reject-errors": 2,
82 |
83 | // Enforce “for” loop update clause moving the counter in the right direction
84 | "for-direction": 2,
85 |
86 | // Enforce return statements in getters
87 | "getter-return": 2,
88 |
89 | // Disallow await inside of loops
90 | "no-await-in-loop": 2,
91 |
92 | // Disallow comparing against -0
93 | "no-compare-neg-zero": 2,
94 |
95 | // Warn against catch clause parameters from shadowing variables in the outer scope
96 | "no-catch-shadow": 1,
97 |
98 | // Disallow identifiers from shadowing restricted names
99 | "no-shadow-restricted-names": 2,
100 |
101 | // Enforce return statements in callbacks of array methods
102 | "callback-return": 2,
103 |
104 | // Require error handling in callbacks
105 | "handle-callback-err": 2,
106 |
107 | // Warn against string concatenation with __dirname and __filename
108 | "no-path-concat": 1,
109 |
110 | // Prefer using arrow functions for callbacks
111 | "prefer-arrow-callback": 1,
112 |
113 | // Return inside each then() to create readable and reusable Promise chains.
114 | // Forces developers to return console logs and http calls in promises.
115 | "promise/always-return": 2,
116 |
117 | //Enforces the use of catch() on un-returned promises
118 | "promise/catch-or-return": 2,
119 |
120 | // Warn against nested then() or catch() statements
121 | "promise/no-nesting": 1
122 | }
123 | }
124 |
--------------------------------------------------------------------------------
/functions/.gitignore:
--------------------------------------------------------------------------------
1 | node_modules/
--------------------------------------------------------------------------------
/functions/index.js:
--------------------------------------------------------------------------------
1 | const functions = require('firebase-functions')
2 | const admin = require('firebase-admin')
3 | admin.initializeApp()
4 | const firestore = admin.firestore()
5 | firestore.settings({ timestampsInSnapshots: true })
6 |
7 | exports.createCompany = functions.region('europe-west1').https.onCall(async (data, context) => {
8 | const Companies = firestore.collection('companies')
9 | const Employees = firestore.collection('employees')
10 |
11 | if (!context.auth && !context.auth.uid) {
12 | throw new functions.https.HttpsError('unauthenticated')
13 | }
14 |
15 | const { companyName } = data
16 | if (!companyName) {
17 | throw new functions.https.HttpsError('not-found')
18 | }
19 | const userId = context.auth.uid
20 |
21 | await admin.auth().setCustomUserClaims(userId, { role: 'admin' })
22 |
23 | return Companies.add({ name: companyName.toString(), createdBy: userId, createdAt: new Date() }).then(doc => {
24 | Employees.doc(userId).set({
25 | name: companyName.toString(),
26 | role: 'creator',
27 | companyId: doc.id,
28 | createdAt: new Date(),
29 | createdBy: userId,
30 | active: true
31 | })
32 | admin.auth().setCustomUserClaims(userId, { companyId: doc.id, role: 'admin' })
33 |
34 | return 'ok'
35 | })
36 | })
37 |
38 | exports.createEmployee = functions.region('europe-west1').https.onCall(async (data, context) => {
39 | const Employees = firestore.collection('employees')
40 |
41 | if (!context.auth && !context.auth.uid && !context.auth.token.companyId && !context.auth.token.role === 'admin') {
42 | throw new functions.https.HttpsError('unauthenticated')
43 | }
44 |
45 | const employeeData = data
46 |
47 | if (!employeeData || !employeeData.email || !employeeData.name || !employeeData.password) {
48 | throw new functions.https.HttpsError('not-found')
49 | }
50 |
51 | const newUser = await admin.auth().createUser({
52 | email: employeeData.email,
53 | displayName: employeeData.name,
54 | password: employeeData.password
55 | })
56 |
57 | if (!newUser) {
58 | throw new functions.https.HttpsError('not-found')
59 | }
60 |
61 | admin.auth().setCustomUserClaims(newUser.uid, {
62 | companyId: context.auth.token.companyId,
63 | role: 'user'
64 | })
65 |
66 | const newEmployeeInfo = {
67 | id: newUser.uid,
68 | email: employeeData.email,
69 | name: employeeData.name,
70 | role: 'user',
71 | active: true,
72 | companyId: context.auth.token.companyId,
73 | createdAt: new Date(),
74 | createdBy: context.auth.uid
75 | }
76 |
77 | if (employeeData.teamId) {
78 | newEmployeeInfo.teamId = employeeData.teamId
79 | newEmployeeInfo.teamName = employeeData.teamName
80 | }
81 |
82 | return Employees.doc(newUser.uid)
83 | .set(newEmployeeInfo)
84 | .then(() => {
85 | return 'ok'
86 | })
87 | })
88 |
89 | exports.teamCreate = functions
90 | .region('europe-west1')
91 | .firestore.document('teams/{teamId}')
92 | .onCreate((snapshot, _context) => {
93 | const newTeam = snapshot.data()
94 | const teamRef = snapshot.ref
95 |
96 | if (!newTeam.createdBy) {
97 | return true
98 | }
99 |
100 | return admin
101 | .auth()
102 | .getUser(newTeam.createdBy)
103 | .then(userInfo => {
104 | return teamRef.update({
105 | createdAt: new Date(),
106 | employeesCount: 0,
107 | companyId: userInfo.customClaims.companyId
108 | })
109 | })
110 | })
111 |
112 | exports.updateTeamsCount = functions
113 | .region('europe-west1')
114 | .firestore.document('employees/{employeeID}')
115 | .onWrite(async (change, _context) => {
116 | let changes = []
117 |
118 | // Update employee
119 | if (change.before.exists && change.after.exists) {
120 | const updatedEmployee = change.after.data()
121 | const oldEmployee = change.before.data()
122 | if (updatedEmployee !== oldEmployee) {
123 | if (oldEmployee.teamId) {
124 | changes.push({ action: admin.firestore.FieldValue.increment(-1), teamId: oldEmployee.teamId })
125 | }
126 |
127 | if (updatedEmployee.teamId) {
128 | changes.push({ action: admin.firestore.FieldValue.increment(1), teamId: updatedEmployee.teamId })
129 | }
130 | }
131 | }
132 |
133 | // New employee
134 | if (!change.before.exists) {
135 | const employee = change.after.data()
136 | changes.push({ action: admin.firestore.FieldValue.increment(1), teamId: employee.teamId })
137 | }
138 |
139 | // Removed employee
140 | if (!change.after.exists) {
141 | const employee = change.before.data()
142 | changes.push({ action: admin.firestore.FieldValue.increment(-1), teamId: employee.teamId })
143 | }
144 |
145 | // Updated team for employee
146 | if (changes.length === 0) {
147 | console.log('no changes')
148 | return 'no changes'
149 | }
150 | const Teams = firestore.collection('teams')
151 |
152 | changes.forEach(change => {
153 | Teams.doc(change.teamId).update({ employeesCount: change.action })
154 | })
155 |
156 | return 'ok'
157 | })
158 |
--------------------------------------------------------------------------------
/functions/package.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "functions",
3 | "description": "Cloud Functions for Firebase",
4 | "scripts": {
5 | "lint": "eslint .",
6 | "serve": "firebase serve --only functions",
7 | "shell": "firebase functions:shell",
8 | "start": "npm run shell",
9 | "deploy": "firebase deploy --only functions",
10 | "logs": "firebase functions:log"
11 | },
12 | "engines": {
13 | "node": "10"
14 | },
15 | "dependencies": {
16 | "firebase-admin": "^11.5.0",
17 | "firebase-functions": "^3.11.0"
18 | },
19 | "devDependencies": {
20 | "eslint": "^7.11.0",
21 | "eslint-plugin-promise": "^4.2.1",
22 | "firebase-functions-test": "^0.2.2"
23 | },
24 | "private": true
25 | }
26 |
--------------------------------------------------------------------------------
/package.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "svelte-firebase",
3 | "version": "0.5.0",
4 | "devDependencies": {
5 | "npm-run-all": "^4.1.5",
6 | "rollup": "^2.0.0",
7 | "rollup-plugin-commonjs": "^10.0.0",
8 | "rollup-plugin-css-only": "^2.0.0",
9 | "rollup-plugin-livereload": "^2.0.0",
10 | "rollup-plugin-node-resolve": "^5.2.0",
11 | "rollup-plugin-svelte": "^6.0.0",
12 | "rollup-plugin-terser": "^7.0.0",
13 | "sirv-cli": "^1.0.0",
14 | "svelte": "^3.49.0"
15 | },
16 | "scripts": {
17 | "build": "rollup -c",
18 | "autobuild": "rollup -c -w",
19 | "dev": "run-p start:dev autobuild",
20 | "start": "sirv public",
21 | "start:dev": "sirv public -s --dev",
22 | "deploy": "yarn build && firebase deploy"
23 | },
24 | "dependencies": {
25 | "firebase": "^7.0.0",
26 | "materialize-css": "^1.0.0",
27 | "svelte-router-spa": "^5.0.0",
28 | "validate.js": "^0.13.0"
29 | }
30 | }
31 |
--------------------------------------------------------------------------------
/public/404.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 | Svelte & Firebase - A free template to create single page applications.
8 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
35 |
36 |
37 |
38 |
39 | Page not found!
40 | I've searched everywhere but it wasn't there. I'm as puzzled as you are!
41 |
42 | Return to the
43 | homepage
44 |
45 |
46 |
47 |
48 |
--------------------------------------------------------------------------------
/public/favicon.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/jorgegorka/svelte-firebase/2f3ddac4d242f3dab15e8b3894066710fe02c1de/public/favicon.png
--------------------------------------------------------------------------------
/public/global.css:
--------------------------------------------------------------------------------
1 | .primary-toast {
2 | background-color: #0277bd;
3 | }
4 | .success-toast {
5 | background-color: #2e7d32;
6 | }
7 | .danger-toast {
8 | background-color: #c62828;
9 | }
10 |
11 | .sidenav li a.active {
12 | background-color: rgba(0, 0, 0, 0.05);
13 | }
14 |
--------------------------------------------------------------------------------
/public/images/almond.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/jorgegorka/svelte-firebase/2f3ddac4d242f3dab15e8b3894066710fe02c1de/public/images/almond.jpg
--------------------------------------------------------------------------------
/public/images/ebro_river.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/jorgegorka/svelte-firebase/2f3ddac4d242f3dab15e8b3894066710fe02c1de/public/images/ebro_river.jpg
--------------------------------------------------------------------------------
/public/images/firebase-logo.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/jorgegorka/svelte-firebase/2f3ddac4d242f3dab15e8b3894066710fe02c1de/public/images/firebase-logo.png
--------------------------------------------------------------------------------
/public/images/materialize.svg:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
21 |
22 |
23 |
24 |
25 |
26 |
27 |
28 |
29 |
30 |
31 |
32 |
33 |
34 |
35 |
36 |
38 |
39 |
40 |
41 |
42 |
43 |
44 |
45 |
47 |
48 |
49 |
50 |
51 |
52 |
53 |
54 |
56 |
57 |
59 |
60 |
62 |
63 |
65 |
66 |
68 |
69 |
71 |
72 |
73 |
74 |
75 |
76 |
77 |
78 |
79 |
80 |
81 |
82 |
83 |
84 |
85 |
86 |
87 |
88 |
89 |
90 |
91 |
92 |
93 |
94 |
95 |
96 |
97 |
98 |
99 |
100 |
101 |
102 |
103 |
104 |
105 |
106 |
107 |
108 |
109 |
111 |
112 |
113 |
114 |
115 |
116 |
117 |
118 |
120 |
121 |
122 |
123 |
124 |
125 |
126 |
127 |
129 |
130 |
132 |
133 |
135 |
136 |
138 |
139 |
141 |
142 |
144 |
145 |
146 |
147 |
148 |
149 |
150 |
151 |
152 |
153 |
154 |
155 |
156 |
157 |
158 |
159 |
160 |
161 |
162 |
163 |
164 |
--------------------------------------------------------------------------------
/public/images/svelte-logo.svg:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
--------------------------------------------------------------------------------
/public/images/svelte-router-logo.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/jorgegorka/svelte-firebase/2f3ddac4d242f3dab15e8b3894066710fe02c1de/public/images/svelte-router-logo.png
--------------------------------------------------------------------------------
/public/images/validate-js-logo.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/jorgegorka/svelte-firebase/2f3ddac4d242f3dab15e8b3894066710fe02c1de/public/images/validate-js-logo.png
--------------------------------------------------------------------------------
/public/images/waterfall.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/jorgegorka/svelte-firebase/2f3ddac4d242f3dab15e8b3894066710fe02c1de/public/images/waterfall.jpg
--------------------------------------------------------------------------------
/public/index.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 | Svelte & Firebase - A free template to create single page applications.
8 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
21 |
22 |
23 |
24 |
25 |
--------------------------------------------------------------------------------
/public/stylesheets/custom.css:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/jorgegorka/svelte-firebase/2f3ddac4d242f3dab15e8b3894066710fe02c1de/public/stylesheets/custom.css
--------------------------------------------------------------------------------
/rollup.config.js:
--------------------------------------------------------------------------------
1 | import svelte from 'rollup-plugin-svelte'
2 | import resolve from 'rollup-plugin-node-resolve'
3 | import commonjs from 'rollup-plugin-commonjs'
4 | import livereload from 'rollup-plugin-livereload'
5 | import { terser } from 'rollup-plugin-terser'
6 | import css from 'rollup-plugin-css-only'
7 |
8 | const production = !process.env.ROLLUP_WATCH
9 |
10 | export default {
11 | input: 'src/main.js',
12 | output: {
13 | sourcemap: true,
14 | format: 'iife',
15 | name: 'app',
16 | file: 'public/bundle.js'
17 | },
18 | plugins: [
19 | svelte({
20 | // enable run-time checks when not in production
21 | dev: !production,
22 | // we'll extract any component CSS out into
23 | // a separate file — better for performance
24 | css: css => {
25 | css.write('public/bundle.css')
26 | }
27 | }),
28 | css({ output: 'public/plugins.css' }),
29 | // If you have external dependencies installed from
30 | // npm, you'll most likely need these plugins. In
31 | // some cases you'll need additional configuration —
32 | // consult the documentation for details:
33 | // https://github.com/rollup/rollup-plugin-commonjs
34 | resolve({ browser: true }),
35 | commonjs(),
36 |
37 | // Watch the `public` directory and refresh the
38 | // browser on changes when not in production
39 | !production && livereload('public'),
40 |
41 | // If we're building for production (npm run build
42 | // instead of npm run dev), minify
43 | production && terser()
44 | ],
45 | watch: {
46 | clearScreen: false
47 | }
48 | }
49 |
--------------------------------------------------------------------------------
/src/App.svelte:
--------------------------------------------------------------------------------
1 |
7 |
8 |
9 |
--------------------------------------------------------------------------------
/src/config/firebase.js:
--------------------------------------------------------------------------------
1 | import firebase from 'firebase/app'
2 | import 'firebase/firebase-firestore'
3 | import 'firebase/firebase-auth'
4 | import 'firebase/firebase-functions'
5 | import 'firebase/firebase-storage'
6 | import { firebaseConfig } from './settings'
7 |
8 | firebase.initializeApp(firebaseConfig)
9 |
10 | const Firestore = firebase.firestore()
11 | const Auth = firebase.auth()
12 | const Functions = firebase.app().functions('europe-west1')
13 | const Storage = firebase.storage()
14 |
15 | export { Firestore, Auth, Functions, Storage }
16 |
--------------------------------------------------------------------------------
/src/config/settings.js:
--------------------------------------------------------------------------------
1 | const firebaseConfig = {
2 | apiKey: '',
3 | authDomain: '',
4 | databaseURL: '',
5 | projectId: '',
6 | storageBucket: '',
7 | messagingSenderId: '',
8 | appId: ''
9 | }
10 |
11 | export { firebaseConfig }
12 |
--------------------------------------------------------------------------------
/src/lib/diacritics.js:
--------------------------------------------------------------------------------
1 | const replacementList = [
2 | {
3 | base: ' ',
4 | chars: '\u00A0'
5 | },
6 | {
7 | base: '0',
8 | chars: '\u07C0'
9 | },
10 | {
11 | base: 'A',
12 | chars:
13 | '\u24B6\uFF21\u00C0\u00C1\u00C2\u1EA6\u1EA4\u1EAA\u1EA8\u00C3\u0100\u0102\u1EB0\u1EAE\u1EB4\u1EB2\u0226\u01E0\u00C4\u01DE\u1EA2\u00C5\u01FA\u01CD\u0200\u0202\u1EA0\u1EAC\u1EB6\u1E00\u0104\u023A\u2C6F'
14 | },
15 | {
16 | base: 'AA',
17 | chars: '\uA732'
18 | },
19 | {
20 | base: 'AE',
21 | chars: '\u00C6\u01FC\u01E2'
22 | },
23 | {
24 | base: 'AO',
25 | chars: '\uA734'
26 | },
27 | {
28 | base: 'AU',
29 | chars: '\uA736'
30 | },
31 | {
32 | base: 'AV',
33 | chars: '\uA738\uA73A'
34 | },
35 | {
36 | base: 'AY',
37 | chars: '\uA73C'
38 | },
39 | {
40 | base: 'B',
41 | chars: '\u24B7\uFF22\u1E02\u1E04\u1E06\u0243\u0181'
42 | },
43 | {
44 | base: 'C',
45 | chars: '\u24b8\uff23\uA73E\u1E08\u0106\u0043\u0108\u010A\u010C\u00C7\u0187\u023B'
46 | },
47 | {
48 | base: 'D',
49 | chars: '\u24B9\uFF24\u1E0A\u010E\u1E0C\u1E10\u1E12\u1E0E\u0110\u018A\u0189\u1D05\uA779'
50 | },
51 | {
52 | base: 'Dh',
53 | chars: '\u00D0'
54 | },
55 | {
56 | base: 'DZ',
57 | chars: '\u01F1\u01C4'
58 | },
59 | {
60 | base: 'Dz',
61 | chars: '\u01F2\u01C5'
62 | },
63 | {
64 | base: 'E',
65 | chars:
66 | '\u025B\u24BA\uFF25\u00C8\u00C9\u00CA\u1EC0\u1EBE\u1EC4\u1EC2\u1EBC\u0112\u1E14\u1E16\u0114\u0116\u00CB\u1EBA\u011A\u0204\u0206\u1EB8\u1EC6\u0228\u1E1C\u0118\u1E18\u1E1A\u0190\u018E\u1D07'
67 | },
68 | {
69 | base: 'F',
70 | chars: '\uA77C\u24BB\uFF26\u1E1E\u0191\uA77B'
71 | },
72 | {
73 | base: 'G',
74 | chars: '\u24BC\uFF27\u01F4\u011C\u1E20\u011E\u0120\u01E6\u0122\u01E4\u0193\uA7A0\uA77D\uA77E\u0262'
75 | },
76 | {
77 | base: 'H',
78 | chars: '\u24BD\uFF28\u0124\u1E22\u1E26\u021E\u1E24\u1E28\u1E2A\u0126\u2C67\u2C75\uA78D'
79 | },
80 | {
81 | base: 'I',
82 | chars: '\u24BE\uFF29\xCC\xCD\xCE\u0128\u012A\u012C\u0130\xCF\u1E2E\u1EC8\u01CF\u0208\u020A\u1ECA\u012E\u1E2C\u0197'
83 | },
84 | {
85 | base: 'J',
86 | chars: '\u24BF\uFF2A\u0134\u0248\u0237'
87 | },
88 | {
89 | base: 'K',
90 | chars: '\u24C0\uFF2B\u1E30\u01E8\u1E32\u0136\u1E34\u0198\u2C69\uA740\uA742\uA744\uA7A2'
91 | },
92 | {
93 | base: 'L',
94 | chars: '\u24C1\uFF2C\u013F\u0139\u013D\u1E36\u1E38\u013B\u1E3C\u1E3A\u0141\u023D\u2C62\u2C60\uA748\uA746\uA780'
95 | },
96 | {
97 | base: 'LJ',
98 | chars: '\u01C7'
99 | },
100 | {
101 | base: 'Lj',
102 | chars: '\u01C8'
103 | },
104 | {
105 | base: 'M',
106 | chars: '\u24C2\uFF2D\u1E3E\u1E40\u1E42\u2C6E\u019C\u03FB'
107 | },
108 | {
109 | base: 'N',
110 | chars: '\uA7A4\u0220\u24C3\uFF2E\u01F8\u0143\xD1\u1E44\u0147\u1E46\u0145\u1E4A\u1E48\u019D\uA790\u1D0E'
111 | },
112 | {
113 | base: 'NJ',
114 | chars: '\u01CA'
115 | },
116 | {
117 | base: 'Nj',
118 | chars: '\u01CB'
119 | },
120 | {
121 | base: 'O',
122 | chars:
123 | '\u24C4\uFF2F\xD2\xD3\xD4\u1ED2\u1ED0\u1ED6\u1ED4\xD5\u1E4C\u022C\u1E4E\u014C\u1E50\u1E52\u014E\u022E\u0230\xD6\u022A\u1ECE\u0150\u01D1\u020C\u020E\u01A0\u1EDC\u1EDA\u1EE0\u1EDE\u1EE2\u1ECC\u1ED8\u01EA\u01EC\xD8\u01FE\u0186\u019F\uA74A\uA74C'
124 | },
125 | {
126 | base: 'OE',
127 | chars: '\u0152'
128 | },
129 | {
130 | base: 'OI',
131 | chars: '\u01A2'
132 | },
133 | {
134 | base: 'OO',
135 | chars: '\uA74E'
136 | },
137 | {
138 | base: 'OU',
139 | chars: '\u0222'
140 | },
141 | {
142 | base: 'P',
143 | chars: '\u24C5\uFF30\u1E54\u1E56\u01A4\u2C63\uA750\uA752\uA754'
144 | },
145 | {
146 | base: 'Q',
147 | chars: '\u24C6\uFF31\uA756\uA758\u024A'
148 | },
149 | {
150 | base: 'R',
151 | chars: '\u24C7\uFF32\u0154\u1E58\u0158\u0210\u0212\u1E5A\u1E5C\u0156\u1E5E\u024C\u2C64\uA75A\uA7A6\uA782'
152 | },
153 | {
154 | base: 'S',
155 | chars: '\u24C8\uFF33\u1E9E\u015A\u1E64\u015C\u1E60\u0160\u1E66\u1E62\u1E68\u0218\u015E\u2C7E\uA7A8\uA784'
156 | },
157 | {
158 | base: 'T',
159 | chars: '\u24C9\uFF34\u1E6A\u0164\u1E6C\u021A\u0162\u1E70\u1E6E\u0166\u01AC\u01AE\u023E\uA786'
160 | },
161 | {
162 | base: 'Th',
163 | chars: '\u00DE'
164 | },
165 | {
166 | base: 'TZ',
167 | chars: '\uA728'
168 | },
169 | {
170 | base: 'U',
171 | chars:
172 | '\u24CA\uFF35\xD9\xDA\xDB\u0168\u1E78\u016A\u1E7A\u016C\xDC\u01DB\u01D7\u01D5\u01D9\u1EE6\u016E\u0170\u01D3\u0214\u0216\u01AF\u1EEA\u1EE8\u1EEE\u1EEC\u1EF0\u1EE4\u1E72\u0172\u1E76\u1E74\u0244'
173 | },
174 | {
175 | base: 'V',
176 | chars: '\u24CB\uFF36\u1E7C\u1E7E\u01B2\uA75E\u0245'
177 | },
178 | {
179 | base: 'VY',
180 | chars: '\uA760'
181 | },
182 | {
183 | base: 'W',
184 | chars: '\u24CC\uFF37\u1E80\u1E82\u0174\u1E86\u1E84\u1E88\u2C72'
185 | },
186 | {
187 | base: 'X',
188 | chars: '\u24CD\uFF38\u1E8A\u1E8C'
189 | },
190 | {
191 | base: 'Y',
192 | chars: '\u24CE\uFF39\u1EF2\xDD\u0176\u1EF8\u0232\u1E8E\u0178\u1EF6\u1EF4\u01B3\u024E\u1EFE'
193 | },
194 | {
195 | base: 'Z',
196 | chars: '\u24CF\uFF3A\u0179\u1E90\u017B\u017D\u1E92\u1E94\u01B5\u0224\u2C7F\u2C6B\uA762'
197 | },
198 | {
199 | base: 'a',
200 | chars:
201 | '\u24D0\uFF41\u1E9A\u00E0\u00E1\u00E2\u1EA7\u1EA5\u1EAB\u1EA9\u00E3\u0101\u0103\u1EB1\u1EAF\u1EB5\u1EB3\u0227\u01E1\u00E4\u01DF\u1EA3\u00E5\u01FB\u01CE\u0201\u0203\u1EA1\u1EAD\u1EB7\u1E01\u0105\u2C65\u0250\u0251'
202 | },
203 | {
204 | base: 'aa',
205 | chars: '\uA733'
206 | },
207 | {
208 | base: 'ae',
209 | chars: '\u00E6\u01FD\u01E3'
210 | },
211 | {
212 | base: 'ao',
213 | chars: '\uA735'
214 | },
215 | {
216 | base: 'au',
217 | chars: '\uA737'
218 | },
219 | {
220 | base: 'av',
221 | chars: '\uA739\uA73B'
222 | },
223 | {
224 | base: 'ay',
225 | chars: '\uA73D'
226 | },
227 | {
228 | base: 'b',
229 | chars: '\u24D1\uFF42\u1E03\u1E05\u1E07\u0180\u0183\u0253\u0182'
230 | },
231 | {
232 | base: 'c',
233 | chars: '\uFF43\u24D2\u0107\u0109\u010B\u010D\u00E7\u1E09\u0188\u023C\uA73F\u2184'
234 | },
235 | {
236 | base: 'd',
237 | chars: '\u24D3\uFF44\u1E0B\u010F\u1E0D\u1E11\u1E13\u1E0F\u0111\u018C\u0256\u0257\u018B\u13E7\u0501\uA7AA'
238 | },
239 | {
240 | base: 'dh',
241 | chars: '\u00F0'
242 | },
243 | {
244 | base: 'dz',
245 | chars: '\u01F3\u01C6'
246 | },
247 | {
248 | base: 'e',
249 | chars:
250 | '\u24D4\uFF45\u00E8\u00E9\u00EA\u1EC1\u1EBF\u1EC5\u1EC3\u1EBD\u0113\u1E15\u1E17\u0115\u0117\u00EB\u1EBB\u011B\u0205\u0207\u1EB9\u1EC7\u0229\u1E1D\u0119\u1E19\u1E1B\u0247\u01DD'
251 | },
252 | {
253 | base: 'f',
254 | chars: '\u24D5\uFF46\u1E1F\u0192'
255 | },
256 | {
257 | base: 'ff',
258 | chars: '\uFB00'
259 | },
260 | {
261 | base: 'fi',
262 | chars: '\uFB01'
263 | },
264 | {
265 | base: 'fl',
266 | chars: '\uFB02'
267 | },
268 | {
269 | base: 'ffi',
270 | chars: '\uFB03'
271 | },
272 | {
273 | base: 'ffl',
274 | chars: '\uFB04'
275 | },
276 | {
277 | base: 'g',
278 | chars: '\u24D6\uFF47\u01F5\u011D\u1E21\u011F\u0121\u01E7\u0123\u01E5\u0260\uA7A1\uA77F\u1D79'
279 | },
280 | {
281 | base: 'h',
282 | chars: '\u24D7\uFF48\u0125\u1E23\u1E27\u021F\u1E25\u1E29\u1E2B\u1E96\u0127\u2C68\u2C76\u0265'
283 | },
284 | {
285 | base: 'hv',
286 | chars: '\u0195'
287 | },
288 | {
289 | base: 'i',
290 | chars: '\u24D8\uFF49\xEC\xED\xEE\u0129\u012B\u012D\xEF\u1E2F\u1EC9\u01D0\u0209\u020B\u1ECB\u012F\u1E2D\u0268\u0131'
291 | },
292 | {
293 | base: 'j',
294 | chars: '\u24D9\uFF4A\u0135\u01F0\u0249'
295 | },
296 | {
297 | base: 'k',
298 | chars: '\u24DA\uFF4B\u1E31\u01E9\u1E33\u0137\u1E35\u0199\u2C6A\uA741\uA743\uA745\uA7A3'
299 | },
300 | {
301 | base: 'l',
302 | chars:
303 | '\u24DB\uFF4C\u0140\u013A\u013E\u1E37\u1E39\u013C\u1E3D\u1E3B\u017F\u0142\u019A\u026B\u2C61\uA749\uA781\uA747\u026D'
304 | },
305 | {
306 | base: 'lj',
307 | chars: '\u01C9'
308 | },
309 | {
310 | base: 'm',
311 | chars: '\u24DC\uFF4D\u1E3F\u1E41\u1E43\u0271\u026F'
312 | },
313 | {
314 | base: 'n',
315 | chars: '\u24DD\uFF4E\u01F9\u0144\xF1\u1E45\u0148\u1E47\u0146\u1E4B\u1E49\u019E\u0272\u0149\uA791\uA7A5\u043B\u0509'
316 | },
317 | {
318 | base: 'nj',
319 | chars: '\u01CC'
320 | },
321 | {
322 | base: 'o',
323 | chars:
324 | '\u24DE\uFF4F\xF2\xF3\xF4\u1ED3\u1ED1\u1ED7\u1ED5\xF5\u1E4D\u022D\u1E4F\u014D\u1E51\u1E53\u014F\u022F\u0231\xF6\u022B\u1ECF\u0151\u01D2\u020D\u020F\u01A1\u1EDD\u1EDB\u1EE1\u1EDF\u1EE3\u1ECD\u1ED9\u01EB\u01ED\xF8\u01FF\uA74B\uA74D\u0275\u0254\u1D11'
325 | },
326 | {
327 | base: 'oe',
328 | chars: '\u0153'
329 | },
330 | {
331 | base: 'oi',
332 | chars: '\u01A3'
333 | },
334 | {
335 | base: 'oo',
336 | chars: '\uA74F'
337 | },
338 | {
339 | base: 'ou',
340 | chars: '\u0223'
341 | },
342 | {
343 | base: 'p',
344 | chars: '\u24DF\uFF50\u1E55\u1E57\u01A5\u1D7D\uA751\uA753\uA755\u03C1'
345 | },
346 | {
347 | base: 'q',
348 | chars: '\u24E0\uFF51\u024B\uA757\uA759'
349 | },
350 | {
351 | base: 'r',
352 | chars: '\u24E1\uFF52\u0155\u1E59\u0159\u0211\u0213\u1E5B\u1E5D\u0157\u1E5F\u024D\u027D\uA75B\uA7A7\uA783'
353 | },
354 | {
355 | base: 's',
356 | chars: '\u24E2\uFF53\u015B\u1E65\u015D\u1E61\u0161\u1E67\u1E63\u1E69\u0219\u015F\u023F\uA7A9\uA785\u1E9B\u0282'
357 | },
358 | {
359 | base: 'ss',
360 | chars: '\xDF'
361 | },
362 | {
363 | base: 't',
364 | chars: '\u24E3\uFF54\u1E6B\u1E97\u0165\u1E6D\u021B\u0163\u1E71\u1E6F\u0167\u01AD\u0288\u2C66\uA787'
365 | },
366 | {
367 | base: 'th',
368 | chars: '\u00FE'
369 | },
370 | {
371 | base: 'tz',
372 | chars: '\uA729'
373 | },
374 | {
375 | base: 'u',
376 | chars:
377 | '\u24E4\uFF55\xF9\xFA\xFB\u0169\u1E79\u016B\u1E7B\u016D\xFC\u01DC\u01D8\u01D6\u01DA\u1EE7\u016F\u0171\u01D4\u0215\u0217\u01B0\u1EEB\u1EE9\u1EEF\u1EED\u1EF1\u1EE5\u1E73\u0173\u1E77\u1E75\u0289'
378 | },
379 | {
380 | base: 'v',
381 | chars: '\u24E5\uFF56\u1E7D\u1E7F\u028B\uA75F\u028C'
382 | },
383 | {
384 | base: 'vy',
385 | chars: '\uA761'
386 | },
387 | {
388 | base: 'w',
389 | chars: '\u24E6\uFF57\u1E81\u1E83\u0175\u1E87\u1E85\u1E98\u1E89\u2C73'
390 | },
391 | {
392 | base: 'x',
393 | chars: '\u24E7\uFF58\u1E8B\u1E8D'
394 | },
395 | {
396 | base: 'y',
397 | chars: '\u24E8\uFF59\u1EF3\xFD\u0177\u1EF9\u0233\u1E8F\xFF\u1EF7\u1E99\u1EF5\u01B4\u024F\u1EFF'
398 | },
399 | {
400 | base: 'z',
401 | chars: '\u24E9\uFF5A\u017A\u1E91\u017C\u017E\u1E93\u1E95\u01B6\u0225\u0240\u2C6C\uA763'
402 | }
403 | ]
404 |
405 | const diacriticsMap = {}
406 | for (let i = 0; i < replacementList.length; i += 1) {
407 | let chars = replacementList[i].chars
408 | for (let j = 0; j < chars.length; j += 1) {
409 | diacriticsMap[chars[j]] = replacementList[i].base
410 | }
411 | }
412 |
413 | function removeDiacritics(str) {
414 | return str.replace(/./g, function(char) {
415 | return diacriticsMap[char] || char
416 | })
417 | }
418 |
419 | export { removeDiacritics }
420 |
--------------------------------------------------------------------------------
/src/lib/filter_results.js:
--------------------------------------------------------------------------------
1 | import { removeDiacritics } from './diacritics'
2 |
3 | const filterResults = (searchTerm, elements, fieldName) => {
4 | let lowerCaseTerm = removeDiacritics(searchTerm).toLowerCase()
5 |
6 | const search = () => {
7 | if (elements.length > 0 && searchTerm.length > 1) {
8 | return elements.filter(result => {
9 | const normalisedName = removeDiacritics(result[fieldName]).toLowerCase()
10 | return normalisedName.includes(lowerCaseTerm)
11 | })
12 | } else {
13 | return elements
14 | }
15 | }
16 |
17 | return {
18 | search
19 | }
20 | }
21 |
22 | export { filterResults }
23 |
--------------------------------------------------------------------------------
/src/lib/routes/protected.js:
--------------------------------------------------------------------------------
1 | import AdminLayout from '../../views/admin/layout/index.svelte'
2 | import DashboardIndex from '../../views/admin/dashboard/index.svelte'
3 | import EmployeesIndex from '../../views/admin/employees/index.svelte'
4 | import EmployeesNew from '../../views/admin/employees/new.svelte'
5 | import EmployeesEdit from '../../views/admin/employees/edit.svelte'
6 | import EmployeesShow from '../../views/admin/employees/show.svelte'
7 | import EmployeesLayout from '../../views/admin/employees/layout.svelte'
8 | import TeamsIndex from '../../views/admin/teams/index.svelte'
9 | import TeamsShow from '../../views/admin/teams/show.svelte'
10 |
11 | const protectedRoutes = [
12 | {
13 | name: 'admin',
14 | component: AdminLayout,
15 | nestedRoutes: [
16 | { name: 'index', component: DashboardIndex },
17 | {
18 | name: 'employees',
19 | component: EmployeesLayout,
20 | nestedRoutes: [
21 | { name: 'index', component: EmployeesIndex },
22 | { name: 'show/:id', component: EmployeesShow },
23 | { name: 'new', component: EmployeesNew },
24 | { name: 'edit/:id', component: EmployeesEdit }
25 | ]
26 | },
27 | {
28 | name: 'teams',
29 | component: TeamsIndex
30 | },
31 | { name: 'teams/show/:id', component: TeamsShow }
32 | ]
33 | }
34 | ]
35 |
36 | export { protectedRoutes }
37 |
--------------------------------------------------------------------------------
/src/lib/routes/public.js:
--------------------------------------------------------------------------------
1 | import Login from '../../views/public/login/index.svelte'
2 | import Signup from '../../views/public/signup/index.svelte'
3 | import PublicIndex from '../../views/public/home/index.svelte'
4 | import PublicLayout from '../../views/public/layout/index.svelte'
5 | import NotFound from '../../views/404.svelte'
6 |
7 | const publicRoutes = [
8 | {
9 | name: '/',
10 | component: PublicIndex,
11 | },
12 | { name: 'login', component: Login, layout: PublicLayout },
13 | { name: 'signup', component: Signup, layout: PublicLayout },
14 | { name: '404', component: NotFound, layout: PublicLayout },
15 | ]
16 |
17 | export { publicRoutes }
18 |
--------------------------------------------------------------------------------
/src/main.js:
--------------------------------------------------------------------------------
1 | import App from './App.svelte'
2 | import './middleware/users/auth'
3 |
4 | const app = new App({
5 | target: document.body,
6 | })
7 |
8 | export default app
9 |
--------------------------------------------------------------------------------
/src/middleware/database/employees.js:
--------------------------------------------------------------------------------
1 | import { FirebaseEmployees } from './index'
2 |
3 | const employeesDb = () => {
4 | const add = _employeeInfo => {
5 | return false
6 | // return FirebaseEmployees.add(employeeInfo)
7 | }
8 |
9 | // TODO: Move to server function to check permission
10 | const archive = employeeId => {
11 | return FirebaseEmployees.doc(employeeId).set({ active: false }, { merge: true })
12 | }
13 |
14 | const update = (employeeId, employeeInfo) => {
15 | delete employeeInfo.email
16 | delete employeeInfo.password
17 | return FirebaseEmployees.doc(employeeId).update(employeeInfo)
18 | }
19 |
20 | const findOne = employeeId => {
21 | return FirebaseEmployees.doc(employeeId).get()
22 | }
23 |
24 | const findByUserId = userId => {
25 | return FirebaseEmployees.where('userId', '==', userId).get()
26 | }
27 |
28 | const findAll = ({ companyId, teamId, active = true }) => {
29 | let query = FirebaseEmployees.where('companyId', '==', companyId).where('active', '==', active)
30 | if (teamId) {
31 | query = query.where('teamId', '==', teamId)
32 | }
33 |
34 | return query.orderBy('name')
35 | }
36 |
37 | const toggleStatus = employee => {
38 | if (!employee.active) {
39 | return unarchive(employee.id)
40 | } else {
41 | return archive(employee.id)
42 | }
43 | }
44 |
45 | // TODO: Move to server function to check permissions
46 | const unarchive = employeeId => {
47 | return FirebaseEmployees.doc(employeeId).set({ active: true }, { merge: true })
48 | }
49 |
50 | return Object.freeze({
51 | add,
52 | archive,
53 | update,
54 | findOne,
55 | findAll,
56 | findByUserId,
57 | toggleStatus,
58 | unarchive
59 | })
60 | }
61 |
62 | const Employees = employeesDb()
63 |
64 | export { Employees }
65 |
--------------------------------------------------------------------------------
/src/middleware/database/firebase_results.js:
--------------------------------------------------------------------------------
1 | const firebaseResults = () => {
2 | const map = docs => {
3 | let newResults = []
4 | docs.forEach(doc => {
5 | let newResult = doc.data()
6 | newResult.id = doc.id
7 | newResults.push(newResult)
8 | })
9 | return newResults
10 | }
11 |
12 | return Object.freeze({
13 | map
14 | })
15 | }
16 |
17 | const FirebaseResults = firebaseResults()
18 |
19 | export default FirebaseResults
20 |
--------------------------------------------------------------------------------
/src/middleware/database/index.js:
--------------------------------------------------------------------------------
1 | import { Firestore } from '../../config/firebase'
2 | import FirebaseResults from './firebase_results'
3 |
4 | const FirebaseEmployees = Firestore.collection('employees')
5 | const FirebaseTeams = Firestore.collection('teams')
6 |
7 | export { FirebaseEmployees, FirebaseResults, FirebaseTeams }
8 |
--------------------------------------------------------------------------------
/src/middleware/database/teams.js:
--------------------------------------------------------------------------------
1 | import { FirebaseTeams } from './index'
2 |
3 | const teamsDb = () => {
4 | const add = teamInfo => {
5 | return FirebaseTeams.add(teamInfo)
6 | }
7 |
8 | const update = (teamId, teamInfo) => {
9 | return FirebaseTeams.doc(teamId).update(teamInfo)
10 | }
11 |
12 | const remove = teamId => {
13 | return FirebaseTeams.doc(teamId).delete()
14 | }
15 |
16 | const findOne = teamId => {
17 | return FirebaseTeams.doc(teamId).get()
18 | }
19 |
20 | const findAll = companyId => {
21 | return FirebaseTeams.where('companyId', '==', companyId).orderBy('name')
22 | }
23 |
24 | return Object.freeze({
25 | add,
26 | update,
27 | findOne,
28 | findAll,
29 | remove
30 | })
31 | }
32 |
33 | const Teams = teamsDb()
34 |
35 | export { Teams }
36 |
--------------------------------------------------------------------------------
/src/middleware/employees/crud.js:
--------------------------------------------------------------------------------
1 | import { notificationMessage } from '../../stores/notification_message.js'
2 |
3 | const addEmployee = employeeInfo => {
4 | Employees.add(employeeInfo).then(
5 | notificationMessage.set({
6 | message: 'Employee created successfully.',
7 | type: 'success-toast'
8 | })
9 | )
10 | }
11 |
12 | const editEmployee = (employeeId, employeeInfo) => {
13 | Employees.update(employeeId, employeeInfo).then(
14 | notificationMessage.set({
15 | message: 'Employee updated successfully.',
16 | type: 'success-toast'
17 | })
18 | )
19 | }
20 |
21 | export { addEmployee, editEmployee }
22 |
--------------------------------------------------------------------------------
/src/middleware/users/auth.js:
--------------------------------------------------------------------------------
1 | import { currentUser } from '../../stores/current_user'
2 | import { Auth } from '../../config/firebase'
3 | import { Employees } from '../database/employees'
4 |
5 | Auth.onAuthStateChanged(() => {
6 | if (Auth.currentUser) {
7 | const userInfo = {
8 | email: Auth.currentUser.email,
9 | id: Auth.currentUser.uid,
10 | phoneNumber: Auth.currentUser.phoneNumber,
11 | photoUrl: Auth.currentUser.photoUrl
12 | }
13 |
14 | Employees.findOne(Auth.currentUser.uid).then(doc => {
15 | userInfo.employee = doc.data()
16 | userInfo.employee.id = doc.id
17 | userInfo.displayName = userInfo.employee.name
18 |
19 | Auth.currentUser.getIdTokenResult().then(idToken => {
20 | userInfo.companyId = idToken.claims.companyId
21 | userInfo.isAdmin = idToken.claims.role === 'admin' || idToken.claims.role === 'superAdmin'
22 |
23 | currentUser.set(userInfo)
24 | })
25 | })
26 | } else {
27 | currentUser.set({ id: 0 })
28 | }
29 | })
30 |
--------------------------------------------------------------------------------
/src/routes.js:
--------------------------------------------------------------------------------
1 | import { publicRoutes } from './lib/routes/public'
2 | import { protectedRoutes } from './lib/routes/protected'
3 |
4 | const routes = [...publicRoutes, ...protectedRoutes]
5 |
6 | export { routes }
7 |
--------------------------------------------------------------------------------
/src/stores/current_user.js:
--------------------------------------------------------------------------------
1 | import { writable } from "svelte/store";
2 |
3 | const userInfo = writable({});
4 |
5 | const setUser = user => {
6 | userInfo.set(user);
7 | };
8 |
9 | const removeUser = () => {
10 | userInfo.set({});
11 | };
12 |
13 | const currentUser = {
14 | subscribe: userInfo.subscribe,
15 | set: setUser,
16 | remove: removeUser
17 | };
18 |
19 | export { currentUser };
20 |
--------------------------------------------------------------------------------
/src/stores/notification_message.js:
--------------------------------------------------------------------------------
1 | import { writable } from 'svelte/store'
2 |
3 | export const notificationMessage = writable({})
4 |
--------------------------------------------------------------------------------
/src/views/404.svelte:
--------------------------------------------------------------------------------
1 |
4 |
5 |
10 |
11 |
12 | Page not found!
13 | I've searched everywhere but it wasn't there. I'm as puzzled as you are!
14 |
15 | Return to the
16 | homepage
17 |
18 |
19 |
--------------------------------------------------------------------------------
/src/views/admin/dashboard/index.svelte:
--------------------------------------------------------------------------------
1 |
2 |
3 |
Dashboard
4 |
5 |
6 |
7 |
8 |
9 |
Card Title
10 |
11 | I am a very simple card. I am good at containing small bits of information. I am convenient because I require
12 | little markup to use effectively.
13 |
14 |
15 |
19 |
20 |
21 |
22 |
23 |
24 |
25 |
Card Title
26 |
27 |
28 |
29 | I am a very simple card. I am good at containing small bits of information. I am convenient because I require
30 | little markup to use effectively.
31 |
32 |
33 |
36 |
37 |
38 |
39 |
40 |
41 |
42 |
43 |
44 |
45 |
I am a very simple card. I am good at containing small bits of information.
46 |
47 |
50 |
51 |
52 |
53 |
54 |
--------------------------------------------------------------------------------
/src/views/admin/employees/edit.svelte:
--------------------------------------------------------------------------------
1 |
46 |
47 | {#if loading}
48 |
49 | {:else}
50 |
51 |
52 |
53 |
{employee.name}
54 |
55 |
56 |
{employee.email}
57 |
58 |
59 |
64 |
65 | {/if}
66 |
--------------------------------------------------------------------------------
/src/views/admin/employees/form.svelte:
--------------------------------------------------------------------------------
1 |
127 |
128 |
156 |
--------------------------------------------------------------------------------
/src/views/admin/employees/header/index.svelte:
--------------------------------------------------------------------------------
1 |
4 |
5 |
6 |
7 |
Employees
8 |
9 |
15 |
16 |
17 |
--------------------------------------------------------------------------------
/src/views/admin/employees/header/search.svelte:
--------------------------------------------------------------------------------
1 |
23 |
24 |
42 |
--------------------------------------------------------------------------------
/src/views/admin/employees/index.svelte:
--------------------------------------------------------------------------------
1 |
45 |
46 |
47 |
48 |
49 |
50 |
--------------------------------------------------------------------------------
/src/views/admin/employees/item.svelte:
--------------------------------------------------------------------------------
1 |
34 |
35 |
40 |
41 |
42 |
43 | {employee.name}
44 |
45 | {employee.email}
46 | {teamName}
47 | {employee.role}
48 |
49 |
50 | {statusIcon()}
51 |
52 |
53 | edit
54 |
55 |
56 |
57 |
--------------------------------------------------------------------------------
/src/views/admin/employees/layout.svelte:
--------------------------------------------------------------------------------
1 |
6 |
7 |
8 |
--------------------------------------------------------------------------------
/src/views/admin/employees/list.svelte:
--------------------------------------------------------------------------------
1 |
48 |
49 |
50 |
51 |
52 | Name
53 | E-mail
54 | Team
55 | Status
56 | Actions
57 |
58 |
59 |
60 | {#each filteredEmployees as employee (employee.id)}
61 |
62 | {/each}
63 |
64 |
65 |
66 | {#if employee && employee.active}
67 | Archive employee?
68 | Archived employees can not access the application but their data is kept.
69 | {:else}
70 | Activate employee?
71 | Active employees can access the application.
72 | {/if}
73 |
78 |
79 |
--------------------------------------------------------------------------------
/src/views/admin/employees/new.svelte:
--------------------------------------------------------------------------------
1 |
37 |
38 |
39 |
40 |
41 |
New employee
42 |
43 |
44 |
Help
45 |
46 |
47 |
48 |
49 |
50 |
51 |
52 |
Teams are optional.
53 |
54 |
55 |
56 |
--------------------------------------------------------------------------------
/src/views/admin/employees/show.svelte:
--------------------------------------------------------------------------------
1 |
4 |
5 | Show employee {currentRoute.namedParams.id}
6 |
--------------------------------------------------------------------------------
/src/views/admin/layout/header.svelte:
--------------------------------------------------------------------------------
1 |
20 |
21 |
29 |
30 |
31 |
57 |
58 |
59 |
60 |
61 | Dashboard
62 | dashboard
63 |
64 |
65 |
66 |
67 | Teams
68 | group_work
69 |
70 |
71 |
72 |
73 | Employees
74 | person_pin
75 |
76 |
77 |
78 |
79 | Log out
80 | exit_to_app
81 |
82 |
83 |
84 |
--------------------------------------------------------------------------------
/src/views/admin/layout/index.svelte:
--------------------------------------------------------------------------------
1 |
39 |
40 | {#if !showPage}
41 |
42 | {:else}
43 |
44 |
45 |
46 |
47 |
48 |
49 |
50 |
51 |
52 |
53 |
54 |
55 |
56 |
57 |
58 | {/if}
59 |
--------------------------------------------------------------------------------
/src/views/admin/layout/sidebar/index.svelte:
--------------------------------------------------------------------------------
1 |
12 |
13 |
18 |
19 |
20 |
21 | Main menu
22 |
23 | {#if currentUser.isAdmin}
24 |
25 | {:else}
26 |
27 | {/if}
28 |
29 |
--------------------------------------------------------------------------------
/src/views/admin/layout/sidebar/item.svelte:
--------------------------------------------------------------------------------
1 |
6 |
7 |
13 |
--------------------------------------------------------------------------------
/src/views/admin/layout/sidebar/menu.svelte:
--------------------------------------------------------------------------------
1 |
7 |
8 | {#each items as item, index}
9 |
10 | {/each}
11 |
--------------------------------------------------------------------------------
/src/views/admin/teams/form.svelte:
--------------------------------------------------------------------------------
1 |
88 |
89 |
90 | {formTitle}
91 |
101 |
102 |
--------------------------------------------------------------------------------
/src/views/admin/teams/index.svelte:
--------------------------------------------------------------------------------
1 |
49 |
50 |
55 |
56 |
57 |
58 |
59 |
Teams
60 |
61 |
67 |
68 |
69 |
70 |
71 |
--------------------------------------------------------------------------------
/src/views/admin/teams/item.svelte:
--------------------------------------------------------------------------------
1 |
15 |
16 |
21 |
22 |
23 |
24 | {team.name}
25 |
26 | {team.employeesCount}
27 |
28 | {#if team.employeesCount === 0}
29 |
30 | delete
31 |
32 | {/if}
33 |
34 | edit
35 |
36 |
37 |
38 |
--------------------------------------------------------------------------------
/src/views/admin/teams/list.svelte:
--------------------------------------------------------------------------------
1 |
33 |
34 |
35 |
36 |
37 | Name
38 | # Employees
39 | Actions
40 |
41 |
42 |
43 | {#each filteredTeams as team (team.id)}
44 |
45 | {/each}
46 |
47 |
48 |
49 | Delete this team?
50 |
51 |
52 |
--------------------------------------------------------------------------------
/src/views/admin/teams/show.svelte:
--------------------------------------------------------------------------------
1 |
4 |
5 | Show team {currentRoute.namedParams.id}
6 |
--------------------------------------------------------------------------------
/src/views/components/forms/buttons.svelte:
--------------------------------------------------------------------------------
1 |
15 |
16 |
25 |
26 |
48 |
--------------------------------------------------------------------------------
/src/views/components/forms/check_box.svelte:
--------------------------------------------------------------------------------
1 |
7 |
8 |
9 |
10 |
11 | {label}
12 |
13 |
14 |
--------------------------------------------------------------------------------
/src/views/components/forms/date_input.svelte:
--------------------------------------------------------------------------------
1 |
38 |
39 |
40 | {#if icon}
41 | {icon}
42 | {/if}
43 | (error = false)}
45 | type="text"
46 | name={inputName}
47 | {id}
48 | class="datepicker"
49 | class:invalid={error}
50 | autofocus={isFocused}
51 | on:blur />
52 | {label}
53 |
54 |
55 |
--------------------------------------------------------------------------------
/src/views/components/forms/date_range.svelte:
--------------------------------------------------------------------------------
1 |
73 |
74 |
75 |
76 |
85 |
86 |
87 |
96 |
97 |
98 |
--------------------------------------------------------------------------------
/src/views/components/forms/email_input.svelte:
--------------------------------------------------------------------------------
1 |
11 |
12 |
13 | {#if icon}
14 | {icon}
15 | {/if}
16 | (error = false)}
19 | type="email"
20 | name={inputName}
21 | {id}
22 | class="validate"
23 | class:invalid={error}
24 | autofocus={isFocused}
25 | on:blur />
26 | {label}
27 |
28 |
29 |
--------------------------------------------------------------------------------
/src/views/components/forms/number_input.svelte:
--------------------------------------------------------------------------------
1 |
18 |
19 |
20 | {#if icon}
21 | {icon}
22 | {/if}
23 | {
26 | const number = event.target.value
27 | if (number.length > maxlength) {
28 | value = number.slice(0, maxlength)
29 | }
30 | error = false
31 | }}
32 | type="number"
33 | name={inputName}
34 | {id}
35 | class:invalid={error}
36 | autofocus={isFocused}
37 | on:blur />
38 | {label}
39 |
40 |
41 |
--------------------------------------------------------------------------------
/src/views/components/forms/password_input.svelte:
--------------------------------------------------------------------------------
1 |
12 |
13 |
14 | {#if icon}
15 | {icon}
16 | {/if}
17 | (error = false)}
20 | type="password"
21 | name={inputName}
22 | {id}
23 | class:invalid={error}
24 | autofocus={isFocused}
25 | on:blur />
26 | {label}
27 | {helpText}
28 |
29 |
--------------------------------------------------------------------------------
/src/views/components/forms/radio_input.svelte:
--------------------------------------------------------------------------------
1 |
8 |
9 |
10 |
11 |
12 | {label}
13 |
14 |
15 |
--------------------------------------------------------------------------------
/src/views/components/forms/select.svelte:
--------------------------------------------------------------------------------
1 |
23 |
24 |
25 |
26 | {#each options as option (option.id)}
27 | {option.name}
28 | {/each}
29 |
30 | {label}
31 | {helpText}
32 |
33 |
--------------------------------------------------------------------------------
/src/views/components/forms/text_input.svelte:
--------------------------------------------------------------------------------
1 |
17 |
18 |
19 | {#if icon}
20 | {icon}
21 | {/if}
22 | (error = false)}
25 | type="text"
26 | name={inputName}
27 | {id}
28 | class:invalid={error}
29 | autofocus={isFocused}
30 | on:blur />
31 | {label}
32 |
33 |
34 |
--------------------------------------------------------------------------------
/src/views/components/forms/textarea.svelte:
--------------------------------------------------------------------------------
1 |
11 |
12 |
13 | {#if icon}
14 | {icon}
15 | {/if}
16 |
28 |
--------------------------------------------------------------------------------
/src/views/components/forms/time_input.svelte:
--------------------------------------------------------------------------------
1 |
38 |
39 |
40 | {#if icon}
41 | {icon}
42 | {/if}
43 | (error = false)}
46 | type="text"
47 | name={inputName}
48 | {id}
49 | class="timepicker"
50 | class:invalid={error}
51 | autofocus={isFocused}
52 | on:blur />
53 | {label}
54 |
55 |
56 |
--------------------------------------------------------------------------------
/src/views/components/forms/time_range.svelte:
--------------------------------------------------------------------------------
1 |
67 |
68 |
69 |
70 |
79 |
80 |
81 |
90 |
91 |
92 |
--------------------------------------------------------------------------------
/src/views/components/loading.svelte:
--------------------------------------------------------------------------------
1 |
14 |
--------------------------------------------------------------------------------
/src/views/components/modals/buttons.svelte:
--------------------------------------------------------------------------------
1 |
22 |
23 |
35 |
36 |
58 |
--------------------------------------------------------------------------------
/src/views/components/modals/modal.svelte:
--------------------------------------------------------------------------------
1 |
21 |
22 |
27 |
--------------------------------------------------------------------------------
/src/views/components/notification.svelte:
--------------------------------------------------------------------------------
1 |
32 |
--------------------------------------------------------------------------------
/src/views/components/number_pad/button.svelte:
--------------------------------------------------------------------------------
1 |
5 |
6 |
14 |
15 | {title}
16 |
--------------------------------------------------------------------------------
/src/views/components/number_pad/index.svelte:
--------------------------------------------------------------------------------
1 |
30 |
31 |
64 |
65 |
68 |
69 |
70 |
71 |
72 |
73 | addNumber('1')} />
74 | addNumber('2')} />
75 | addNumber('3')} />
76 | addNumber('4')} />
77 | addNumber('5')} />
78 | addNumber('6')} />
79 | addNumber('7')} />
80 | addNumber('8')} />
81 | addNumber('9')} />
82 |
83 |
84 | addNumber('0')} />
85 |
86 |
87 |
--------------------------------------------------------------------------------
/src/views/public/home/hero.svelte:
--------------------------------------------------------------------------------
1 |
4 |
5 |
15 |
16 |
17 |
18 |
19 |
20 |
21 |
22 |
23 |
26 |
27 |
37 |
38 |
39 |
40 |
41 |
42 |
43 |
44 |
45 |
46 |
--------------------------------------------------------------------------------
/src/views/public/home/how_to_use_it.svelte:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
Grab a copy of the template and install the dependencies
6 |
7 |
8 | git clone https://github.com/jorgegorka/svelte-firebase my-app-name
9 |
10 | cd my-app-name && yarn install
11 |
12 |
13 |
14 | Add your Firebase configuration info to
15 | src/config/firebase.js
16 | (If you don't have a Firebase project you can create one in the
17 | Firebase website
18 | )
19 |
20 |
Launch the development server
21 |
22 | yarn dev
23 |
24 |
Visit http://localhost:5000
25 |
Enjoy!
26 |
27 | Visit the project page to get
28 | more detailed instructions
29 |
30 |
31 |
32 |
33 |
34 |
94 |
--------------------------------------------------------------------------------
/src/views/public/home/index.svelte:
--------------------------------------------------------------------------------
1 |
21 |
22 |
30 |
31 |
32 |
33 |
34 |
35 |
36 |
37 |
38 |
39 |
40 |
Amazing technologies ready to use
41 |
42 |
43 |
44 |
45 |
46 |
47 |
48 |
49 |
50 |
51 |
58 |
59 |
60 |
61 |
62 |
63 |
64 |
65 |
--------------------------------------------------------------------------------
/src/views/public/home/main_features.svelte:
--------------------------------------------------------------------------------
1 |
2 |
Features
3 |
4 |
5 |
6 |
Public and Private sections
7 | Fully resposive theme
8 | Form validation
9 | Firebase cloud functions
10 |
11 |
12 |
13 |
Preconfigured pages for Home, Login, Signup and more...
14 | Extend easily to match your own needs
15 | Secure database rules included
16 | Open source and free
17 |
18 |
19 |
20 |
21 |
--------------------------------------------------------------------------------
/src/views/public/home/menu.svelte:
--------------------------------------------------------------------------------
1 |
6 |
7 |
8 |
37 |
38 |
--------------------------------------------------------------------------------
/src/views/public/home/technology.svelte:
--------------------------------------------------------------------------------
1 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
18 |
19 | Build boilerplate-free components using languages you already know like HTML, CSS and JavasScript.
20 |
21 |
22 |
23 |
24 |
25 |
30 |
31 | Database, hosting, authentication, cloud functions, storage, analytics, in-app messaging, performance
32 | monitoring and more.
33 |
34 |
35 |
36 |
37 |
38 |
39 |
40 |
45 |
A router for Svelte and your single page applications.
46 |
47 |
48 |
49 |
50 |
57 |
A declarative way of validating javascript objects.
58 |
59 |
60 |
61 |
62 |
67 |
Materialize CSS A modern responsive front-end framework based on Material Design.
68 |
69 |
70 |
71 |
72 |
73 |
--------------------------------------------------------------------------------
/src/views/public/layout/footer.svelte:
--------------------------------------------------------------------------------
1 |
6 |
7 |
23 |
--------------------------------------------------------------------------------
/src/views/public/layout/index.svelte:
--------------------------------------------------------------------------------
1 |
23 |
24 |
25 |
26 |
29 |
30 |
31 |
--------------------------------------------------------------------------------
/src/views/public/login/form.svelte:
--------------------------------------------------------------------------------
1 |
77 |
78 |
83 |
--------------------------------------------------------------------------------
/src/views/public/login/index.svelte:
--------------------------------------------------------------------------------
1 |
6 |
7 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
Svelte & Firebase
21 |
22 |
23 |
24 |
Log In
25 |
26 |
27 | Create an account.
28 |
29 |
30 |
31 |
32 |
33 |
34 |
35 |
--------------------------------------------------------------------------------
/src/views/public/signup/form.svelte:
--------------------------------------------------------------------------------
1 |
104 |
105 |
117 |
--------------------------------------------------------------------------------
/src/views/public/signup/index.svelte:
--------------------------------------------------------------------------------
1 |
6 |
7 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
Svelte & Firebase
21 |
22 |
23 |
24 |
Create your account
25 |
26 |
27 | Already have an account? Log in
28 |
29 |
30 |
31 |
32 |
33 |
34 |
35 |
--------------------------------------------------------------------------------
/storage.rules:
--------------------------------------------------------------------------------
1 | service firebase.storage {
2 | match /b/{bucket}/o {
3 | match /{allPaths=**} {
4 | allow read, write: if request.auth != null;
5 | }
6 | }
7 | }
8 |
--------------------------------------------------------------------------------
/yarn.lock:
--------------------------------------------------------------------------------
1 | # THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY.
2 | # yarn lockfile v1
3 |
4 |
5 | "@babel/code-frame@^7.10.4":
6 | version "7.10.4"
7 | resolved "https://registry.yarnpkg.com/@babel/code-frame/-/code-frame-7.10.4.tgz#168da1a36e90da68ae8d49c0f1b48c7c6249213a"
8 | integrity sha512-vG6SvB6oYEhvgisZNFRmRCUkLz11c7rp+tbNTynGqc6mS1d5ATd/sGyV6W0KZZnXRKMTzZDRgQT3Ou9jhpAfUg==
9 | dependencies:
10 | "@babel/highlight" "^7.10.4"
11 |
12 | "@babel/helper-validator-identifier@^7.10.4":
13 | version "7.10.4"
14 | resolved "https://registry.yarnpkg.com/@babel/helper-validator-identifier/-/helper-validator-identifier-7.10.4.tgz#a78c7a7251e01f616512d31b10adcf52ada5e0d2"
15 | integrity sha512-3U9y+43hz7ZM+rzG24Qe2mufW5KhvFg/NhnNph+i9mgCtdTCtMJuI1TMkrIUiK7Ix4PYlRF9I5dhqaLYA/ADXw==
16 |
17 | "@babel/highlight@^7.10.4":
18 | version "7.10.4"
19 | resolved "https://registry.yarnpkg.com/@babel/highlight/-/highlight-7.10.4.tgz#7d1bdfd65753538fabe6c38596cdb76d9ac60143"
20 | integrity sha512-i6rgnR/YgPEQzZZnbTHHuZdlE8qyoBNalD6F+q4vAFlcMEcqmkoG+mPqJYJCo63qPf74+Y1UZsl3l6f7/RIkmA==
21 | dependencies:
22 | "@babel/helper-validator-identifier" "^7.10.4"
23 | chalk "^2.0.0"
24 | js-tokens "^4.0.0"
25 |
26 | "@firebase/analytics-types@0.4.0":
27 | version "0.4.0"
28 | resolved "https://registry.yarnpkg.com/@firebase/analytics-types/-/analytics-types-0.4.0.tgz#d6716f9fa36a6e340bc0ecfe68af325aa6f60508"
29 | integrity sha512-Jj2xW+8+8XPfWGkv9HPv/uR+Qrmq37NPYT352wf7MvE9LrstpLVmFg3LqG6MCRr5miLAom5sen2gZ+iOhVDeRA==
30 |
31 | "@firebase/analytics@0.6.0":
32 | version "0.6.0"
33 | resolved "https://registry.yarnpkg.com/@firebase/analytics/-/analytics-0.6.0.tgz#49f508d3f9f419f08c503f1171ef5fa1c3ba52eb"
34 | integrity sha512-6qYEOPUVYrMhqvJ46Z5Uf1S4uULd6d7vGpMP5Qz+u8kIWuOQGcPdJKQap+Hla6Rq164or9gC2HRXuYXKlgWfpw==
35 | dependencies:
36 | "@firebase/analytics-types" "0.4.0"
37 | "@firebase/component" "0.1.19"
38 | "@firebase/installations" "0.4.17"
39 | "@firebase/logger" "0.2.6"
40 | "@firebase/util" "0.3.2"
41 | tslib "^1.11.1"
42 |
43 | "@firebase/app-types@0.6.1":
44 | version "0.6.1"
45 | resolved "https://registry.yarnpkg.com/@firebase/app-types/-/app-types-0.6.1.tgz#dcbd23030a71c0c74fc95d4a3f75ba81653850e9"
46 | integrity sha512-L/ZnJRAq7F++utfuoTKX4CLBG5YR7tFO3PLzG1/oXXKEezJ0kRL3CMRoueBEmTCzVb/6SIs2Qlaw++uDgi5Xyg==
47 |
48 | "@firebase/app@0.6.11":
49 | version "0.6.11"
50 | resolved "https://registry.yarnpkg.com/@firebase/app/-/app-0.6.11.tgz#f73f9e4571ba62f4029d8f9c9880a97e5a94eb1d"
51 | integrity sha512-FH++PaoyTzfTAVuJ0gITNYEIcjT5G+D0671La27MU8Vvr6MTko+5YUZ4xS9QItyotSeRF4rMJ1KR7G8LSyySiA==
52 | dependencies:
53 | "@firebase/app-types" "0.6.1"
54 | "@firebase/component" "0.1.19"
55 | "@firebase/logger" "0.2.6"
56 | "@firebase/util" "0.3.2"
57 | dom-storage "2.1.0"
58 | tslib "^1.11.1"
59 | xmlhttprequest "1.8.0"
60 |
61 | "@firebase/auth-interop-types@0.1.5":
62 | version "0.1.5"
63 | resolved "https://registry.yarnpkg.com/@firebase/auth-interop-types/-/auth-interop-types-0.1.5.tgz#9fc9bd7c879f16b8d1bb08373a0f48c3a8b74557"
64 | integrity sha512-88h74TMQ6wXChPA6h9Q3E1Jg6TkTHep2+k63OWg3s0ozyGVMeY+TTOti7PFPzq5RhszQPQOoCi59es4MaRvgCw==
65 |
66 | "@firebase/auth-types@0.10.1":
67 | version "0.10.1"
68 | resolved "https://registry.yarnpkg.com/@firebase/auth-types/-/auth-types-0.10.1.tgz#7815e71c9c6f072034415524b29ca8f1d1770660"
69 | integrity sha512-/+gBHb1O9x/YlG7inXfxff/6X3BPZt4zgBv4kql6HEmdzNQCodIRlEYnI+/da+lN+dha7PjaFH7C7ewMmfV7rw==
70 |
71 | "@firebase/auth@0.14.9":
72 | version "0.14.9"
73 | resolved "https://registry.yarnpkg.com/@firebase/auth/-/auth-0.14.9.tgz#481db24d5bd6eded8ac2e5aea6edb9307040229c"
74 | integrity sha512-PxYa2r5qUEdheXTvqROFrMstK8W4uPiP7NVfp+2Bec+AjY5PxZapCx/YFDLkU0D7YBI82H74PtZrzdJZw7TJ4w==
75 | dependencies:
76 | "@firebase/auth-types" "0.10.1"
77 |
78 | "@firebase/component@0.1.19":
79 | version "0.1.19"
80 | resolved "https://registry.yarnpkg.com/@firebase/component/-/component-0.1.19.tgz#bd2ac601652c22576b574c08c40da245933dbac7"
81 | integrity sha512-L0S3g8eqaerg8y0zox3oOHSTwn/FE8RbcRHiurnbESvDViZtP5S5WnhuAPd7FnFxa8ElWK0z1Tr3ikzWDv1xdQ==
82 | dependencies:
83 | "@firebase/util" "0.3.2"
84 | tslib "^1.11.1"
85 |
86 | "@firebase/database-types@0.5.2":
87 | version "0.5.2"
88 | resolved "https://registry.yarnpkg.com/@firebase/database-types/-/database-types-0.5.2.tgz#23bec8477f84f519727f165c687761e29958b63c"
89 | integrity sha512-ap2WQOS3LKmGuVFKUghFft7RxXTyZTDr0Xd8y2aqmWsbJVjgozi0huL/EUMgTjGFrATAjcf2A7aNs8AKKZ2a8g==
90 | dependencies:
91 | "@firebase/app-types" "0.6.1"
92 |
93 | "@firebase/database@0.6.13":
94 | version "0.6.13"
95 | resolved "https://registry.yarnpkg.com/@firebase/database/-/database-0.6.13.tgz#b96fe0c53757dd6404ee085fdcb45c0f9f525c17"
96 | integrity sha512-NommVkAPzU7CKd1gyehmi3lz0K78q0KOfiex7Nfy7MBMwknLm7oNqKovXSgQV1PCLvKXvvAplDSFhDhzIf9obA==
97 | dependencies:
98 | "@firebase/auth-interop-types" "0.1.5"
99 | "@firebase/component" "0.1.19"
100 | "@firebase/database-types" "0.5.2"
101 | "@firebase/logger" "0.2.6"
102 | "@firebase/util" "0.3.2"
103 | faye-websocket "0.11.3"
104 | tslib "^1.11.1"
105 |
106 | "@firebase/firestore-types@1.13.0":
107 | version "1.13.0"
108 | resolved "https://registry.yarnpkg.com/@firebase/firestore-types/-/firestore-types-1.13.0.tgz#4ab9c40e1e66e8193a929460d64507acd07d9230"
109 | integrity sha512-QF5CAuYOHE6Zbsn1uEg6wkl836iP+i6C0C/Zs3kF60eebxZvTWp8JSZk19Ar+jj4w+ye8/7H5olu5CqDNjWpEA==
110 |
111 | "@firebase/firestore@1.17.3":
112 | version "1.17.3"
113 | resolved "https://registry.yarnpkg.com/@firebase/firestore/-/firestore-1.17.3.tgz#512d9c1afdba4690aa62de0f53276cf0abbe5f51"
114 | integrity sha512-wRdrgeSBJ50eo63x8GnO8NgVNe3vBw2xhKhyMXl0JTWQIbxnlMjAHcz7b85VvsqPLI7U70PgWQnfQtJOXRCNUA==
115 | dependencies:
116 | "@firebase/component" "0.1.19"
117 | "@firebase/firestore-types" "1.13.0"
118 | "@firebase/logger" "0.2.6"
119 | "@firebase/util" "0.3.2"
120 | "@firebase/webchannel-wrapper" "0.3.0"
121 | "@grpc/grpc-js" "^1.0.0"
122 | "@grpc/proto-loader" "^0.5.0"
123 | node-fetch "2.6.1"
124 | tslib "^1.11.1"
125 |
126 | "@firebase/functions-types@0.3.17":
127 | version "0.3.17"
128 | resolved "https://registry.yarnpkg.com/@firebase/functions-types/-/functions-types-0.3.17.tgz#348bf5528b238eeeeeae1d52e8ca547b21d33a94"
129 | integrity sha512-DGR4i3VI55KnYk4IxrIw7+VG7Q3gA65azHnZxo98Il8IvYLr2UTBlSh72dTLlDf25NW51HqvJgYJDKvSaAeyHQ==
130 |
131 | "@firebase/functions@0.5.1":
132 | version "0.5.1"
133 | resolved "https://registry.yarnpkg.com/@firebase/functions/-/functions-0.5.1.tgz#fa0568bdcdf7dfa7e5f4f66c1e06e376dc7e25b6"
134 | integrity sha512-yyjPZXXvzFPjkGRSqFVS5Hc2Y7Y48GyyMH+M3i7hLGe69r/59w6wzgXKqTiSYmyE1pxfjxU4a1YqBDHNkQkrYQ==
135 | dependencies:
136 | "@firebase/component" "0.1.19"
137 | "@firebase/functions-types" "0.3.17"
138 | "@firebase/messaging-types" "0.5.0"
139 | node-fetch "2.6.1"
140 | tslib "^1.11.1"
141 |
142 | "@firebase/installations-types@0.3.4":
143 | version "0.3.4"
144 | resolved "https://registry.yarnpkg.com/@firebase/installations-types/-/installations-types-0.3.4.tgz#589a941d713f4f64bf9f4feb7f463505bab1afa2"
145 | integrity sha512-RfePJFovmdIXb6rYwtngyxuEcWnOrzdZd9m7xAW0gRxDIjBT20n3BOhjpmgRWXo/DAxRmS7bRjWAyTHY9cqN7Q==
146 |
147 | "@firebase/installations@0.4.17":
148 | version "0.4.17"
149 | resolved "https://registry.yarnpkg.com/@firebase/installations/-/installations-0.4.17.tgz#1367b721e2c6c4880646bbc4f257e8616986a004"
150 | integrity sha512-AE/TyzIpwkC4UayRJD419xTqZkKzxwk0FLht3Dci8WI2OEKHSwoZG9xv4hOBZebe+fDzoV2EzfatQY8c/6Avig==
151 | dependencies:
152 | "@firebase/component" "0.1.19"
153 | "@firebase/installations-types" "0.3.4"
154 | "@firebase/util" "0.3.2"
155 | idb "3.0.2"
156 | tslib "^1.11.1"
157 |
158 | "@firebase/logger@0.2.6":
159 | version "0.2.6"
160 | resolved "https://registry.yarnpkg.com/@firebase/logger/-/logger-0.2.6.tgz#3aa2ca4fe10327cabf7808bd3994e88db26d7989"
161 | integrity sha512-KIxcUvW/cRGWlzK9Vd2KB864HlUnCfdTH0taHE0sXW5Xl7+W68suaeau1oKNEqmc3l45azkd4NzXTCWZRZdXrw==
162 |
163 | "@firebase/messaging-types@0.5.0":
164 | version "0.5.0"
165 | resolved "https://registry.yarnpkg.com/@firebase/messaging-types/-/messaging-types-0.5.0.tgz#c5d0ef309ced1758fda93ef3ac70a786de2e73c4"
166 | integrity sha512-QaaBswrU6umJYb/ZYvjR5JDSslCGOH6D9P136PhabFAHLTR4TWjsaACvbBXuvwrfCXu10DtcjMxqfhdNIB1Xfg==
167 |
168 | "@firebase/messaging@0.7.1":
169 | version "0.7.1"
170 | resolved "https://registry.yarnpkg.com/@firebase/messaging/-/messaging-0.7.1.tgz#debbe7eb17c5b789231da6c166c506e19ecf1ed4"
171 | integrity sha512-iev/ST9v0xd/8YpGYrZtDcqdD9J6ZWzSuceRn8EKy5vIgQvW/rk2eTQc8axzvDpQ36ZfphMYuhW6XuNrR3Pd2Q==
172 | dependencies:
173 | "@firebase/component" "0.1.19"
174 | "@firebase/installations" "0.4.17"
175 | "@firebase/messaging-types" "0.5.0"
176 | "@firebase/util" "0.3.2"
177 | idb "3.0.2"
178 | tslib "^1.11.1"
179 |
180 | "@firebase/performance-types@0.0.13":
181 | version "0.0.13"
182 | resolved "https://registry.yarnpkg.com/@firebase/performance-types/-/performance-types-0.0.13.tgz#58ce5453f57e34b18186f74ef11550dfc558ede6"
183 | integrity sha512-6fZfIGjQpwo9S5OzMpPyqgYAUZcFzZxHFqOyNtorDIgNXq33nlldTL/vtaUZA8iT9TT5cJlCrF/jthKU7X21EA==
184 |
185 | "@firebase/performance@0.4.2":
186 | version "0.4.2"
187 | resolved "https://registry.yarnpkg.com/@firebase/performance/-/performance-0.4.2.tgz#d5f134674b429d095ce0edfb50fcb4ab279c3cbe"
188 | integrity sha512-irHTCVWJ/sxJo0QHg+yQifBeVu8ZJPihiTqYzBUz/0AGc51YSt49FZwqSfknvCN2+OfHaazz/ARVBn87g7Ex8g==
189 | dependencies:
190 | "@firebase/component" "0.1.19"
191 | "@firebase/installations" "0.4.17"
192 | "@firebase/logger" "0.2.6"
193 | "@firebase/performance-types" "0.0.13"
194 | "@firebase/util" "0.3.2"
195 | tslib "^1.11.1"
196 |
197 | "@firebase/polyfill@0.3.36":
198 | version "0.3.36"
199 | resolved "https://registry.yarnpkg.com/@firebase/polyfill/-/polyfill-0.3.36.tgz#c057cce6748170f36966b555749472b25efdb145"
200 | integrity sha512-zMM9oSJgY6cT2jx3Ce9LYqb0eIpDE52meIzd/oe/y70F+v9u1LDqk5kUF5mf16zovGBWMNFmgzlsh6Wj0OsFtg==
201 | dependencies:
202 | core-js "3.6.5"
203 | promise-polyfill "8.1.3"
204 | whatwg-fetch "2.0.4"
205 |
206 | "@firebase/remote-config-types@0.1.9":
207 | version "0.1.9"
208 | resolved "https://registry.yarnpkg.com/@firebase/remote-config-types/-/remote-config-types-0.1.9.tgz#fe6bbe4d08f3b6e92fce30e4b7a9f4d6a96d6965"
209 | integrity sha512-G96qnF3RYGbZsTRut7NBX0sxyczxt1uyCgXQuH/eAfUCngxjEGcZQnBdy6mvSdqdJh5mC31rWPO4v9/s7HwtzA==
210 |
211 | "@firebase/remote-config@0.1.28":
212 | version "0.1.28"
213 | resolved "https://registry.yarnpkg.com/@firebase/remote-config/-/remote-config-0.1.28.tgz#1c39916446f1ed82b4c07e556455bd232fcfd8e1"
214 | integrity sha512-4zSdyxpt94jAnFhO8toNjG8oMKBD+xTuBIcK+Nw8BdQWeJhEamgXlupdBARUk1uf3AvYICngHH32+Si/dMVTbw==
215 | dependencies:
216 | "@firebase/component" "0.1.19"
217 | "@firebase/installations" "0.4.17"
218 | "@firebase/logger" "0.2.6"
219 | "@firebase/remote-config-types" "0.1.9"
220 | "@firebase/util" "0.3.2"
221 | tslib "^1.11.1"
222 |
223 | "@firebase/storage-types@0.3.13":
224 | version "0.3.13"
225 | resolved "https://registry.yarnpkg.com/@firebase/storage-types/-/storage-types-0.3.13.tgz#cd43e939a2ab5742e109eb639a313673a48b5458"
226 | integrity sha512-pL7b8d5kMNCCL0w9hF7pr16POyKkb3imOW7w0qYrhBnbyJTdVxMWZhb0HxCFyQWC0w3EiIFFmxoz8NTFZDEFog==
227 |
228 | "@firebase/storage@0.3.43":
229 | version "0.3.43"
230 | resolved "https://registry.yarnpkg.com/@firebase/storage/-/storage-0.3.43.tgz#107fb5db2eff2561b5c4e35ee4cbff48f28c7e77"
231 | integrity sha512-Jp54jcuyimLxPhZHFVAhNbQmgTu3Sda7vXjXrNpPEhlvvMSq4yuZBR6RrZxe/OrNVprLHh/6lTCjwjOVSo3bWA==
232 | dependencies:
233 | "@firebase/component" "0.1.19"
234 | "@firebase/storage-types" "0.3.13"
235 | "@firebase/util" "0.3.2"
236 | tslib "^1.11.1"
237 |
238 | "@firebase/util@0.3.2":
239 | version "0.3.2"
240 | resolved "https://registry.yarnpkg.com/@firebase/util/-/util-0.3.2.tgz#87de27f9cffc2324651cabf6ec133d0a9eb21b52"
241 | integrity sha512-Dqs00++c8rwKky6KCKLLY2T1qYO4Q+X5t+lF7DInXDNF4ae1Oau35bkD+OpJ9u7l1pEv7KHowP6CUKuySCOc8g==
242 | dependencies:
243 | tslib "^1.11.1"
244 |
245 | "@firebase/webchannel-wrapper@0.3.0":
246 | version "0.3.0"
247 | resolved "https://registry.yarnpkg.com/@firebase/webchannel-wrapper/-/webchannel-wrapper-0.3.0.tgz#d1689566b94c25423d1fb2cb031c5c2ea4c9f939"
248 | integrity sha512-VniCGPIgSGNEgOkh5phb3iKmSGIzcwrccy3IomMFRWPCMiCk2y98UQNJEoDs1yIHtZMstVjYWKYxnunIGzC5UQ==
249 |
250 | "@grpc/grpc-js@^1.0.0":
251 | version "1.8.13"
252 | resolved "https://registry.yarnpkg.com/@grpc/grpc-js/-/grpc-js-1.8.13.tgz#e775685962909b76f8d4b813833c3d123867165b"
253 | integrity sha512-iY3jsdfbc0ARoCLFvbvUB8optgyb0r1XLPb142u+QtgBcKJYkCIFt3Fd/881KqjLYWjsBJF57N3b8Eop9NDfUA==
254 | dependencies:
255 | "@grpc/proto-loader" "^0.7.0"
256 | "@types/node" ">=12.12.47"
257 |
258 | "@grpc/proto-loader@^0.5.0":
259 | version "0.5.5"
260 | resolved "https://registry.yarnpkg.com/@grpc/proto-loader/-/proto-loader-0.5.5.tgz#6725e7a1827bdf8e92e29fbf4e9ef0203c0906a9"
261 | integrity sha512-WwN9jVNdHRQoOBo9FDH7qU+mgfjPc8GygPYms3M+y3fbQLfnCe/Kv/E01t7JRgnrsOHH8euvSbed3mIalXhwqQ==
262 | dependencies:
263 | lodash.camelcase "^4.3.0"
264 | protobufjs "^6.8.6"
265 |
266 | "@grpc/proto-loader@^0.7.0":
267 | version "0.7.6"
268 | resolved "https://registry.yarnpkg.com/@grpc/proto-loader/-/proto-loader-0.7.6.tgz#b71fdf92b184af184b668c4e9395a5ddc23d61de"
269 | integrity sha512-QyAXR8Hyh7uMDmveWxDSUcJr9NAWaZ2I6IXgAYvQmfflwouTM+rArE2eEaCtLlRqO81j7pRLCt81IefUei6Zbw==
270 | dependencies:
271 | "@types/long" "^4.0.1"
272 | lodash.camelcase "^4.3.0"
273 | long "^4.0.0"
274 | protobufjs "^7.0.0"
275 | yargs "^16.2.0"
276 |
277 | "@jridgewell/gen-mapping@^0.3.0":
278 | version "0.3.2"
279 | resolved "https://registry.yarnpkg.com/@jridgewell/gen-mapping/-/gen-mapping-0.3.2.tgz#c1aedc61e853f2bb9f5dfe6d4442d3b565b253b9"
280 | integrity sha512-mh65xKQAzI6iBcFzwv28KVWSmCkdRBWoOh+bYQGW3+6OZvbbN3TqMGo5hqYxQniRcH9F2VZIoJCm4pa3BPDK/A==
281 | dependencies:
282 | "@jridgewell/set-array" "^1.0.1"
283 | "@jridgewell/sourcemap-codec" "^1.4.10"
284 | "@jridgewell/trace-mapping" "^0.3.9"
285 |
286 | "@jridgewell/resolve-uri@^3.0.3":
287 | version "3.1.0"
288 | resolved "https://registry.yarnpkg.com/@jridgewell/resolve-uri/-/resolve-uri-3.1.0.tgz#2203b118c157721addfe69d47b70465463066d78"
289 | integrity sha512-F2msla3tad+Mfht5cJq7LSXcdudKTWCVYUgw6pLFOOHSTtZlj6SWNYAp+AhuqLmWdBO2X5hPrLcu8cVP8fy28w==
290 |
291 | "@jridgewell/set-array@^1.0.1":
292 | version "1.1.2"
293 | resolved "https://registry.yarnpkg.com/@jridgewell/set-array/-/set-array-1.1.2.tgz#7c6cf998d6d20b914c0a55a91ae928ff25965e72"
294 | integrity sha512-xnkseuNADM0gt2bs+BvhO0p78Mk762YnZdsuzFV018NoG1Sj1SCQvpSqa7XUaTam5vAGasABV9qXASMKnFMwMw==
295 |
296 | "@jridgewell/source-map@^0.3.2":
297 | version "0.3.2"
298 | resolved "https://registry.yarnpkg.com/@jridgewell/source-map/-/source-map-0.3.2.tgz#f45351aaed4527a298512ec72f81040c998580fb"
299 | integrity sha512-m7O9o2uR8k2ObDysZYzdfhb08VuEml5oWGiosa1VdaPZ/A6QyPkAJuwN0Q1lhULOf6B7MtQmHENS743hWtCrgw==
300 | dependencies:
301 | "@jridgewell/gen-mapping" "^0.3.0"
302 | "@jridgewell/trace-mapping" "^0.3.9"
303 |
304 | "@jridgewell/sourcemap-codec@^1.4.10":
305 | version "1.4.14"
306 | resolved "https://registry.yarnpkg.com/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.14.tgz#add4c98d341472a289190b424efbdb096991bb24"
307 | integrity sha512-XPSJHWmi394fuUuzDnGz1wiKqWfo1yXecHQMRf2l6hztTO+nPru658AyDngaBe7isIxEkRsPR3FZh+s7iVa4Uw==
308 |
309 | "@jridgewell/trace-mapping@^0.3.9":
310 | version "0.3.14"
311 | resolved "https://registry.yarnpkg.com/@jridgewell/trace-mapping/-/trace-mapping-0.3.14.tgz#b231a081d8f66796e475ad588a1ef473112701ed"
312 | integrity sha512-bJWEfQ9lPTvm3SneWwRFVLzrh6nhjwqw7TUFFBEMzwvg7t7PCDenf2lDwqo4NQXzdpgBXyFgDWnQA+2vkruksQ==
313 | dependencies:
314 | "@jridgewell/resolve-uri" "^3.0.3"
315 | "@jridgewell/sourcemap-codec" "^1.4.10"
316 |
317 | "@polka/url@^1.0.0-next.9":
318 | version "1.0.0-next.11"
319 | resolved "https://registry.yarnpkg.com/@polka/url/-/url-1.0.0-next.11.tgz#aeb16f50649a91af79dbe36574b66d0f9e4d9f71"
320 | integrity sha512-3NsZsJIA/22P3QUyrEDNA2D133H4j224twJrdipXN38dpnIOzAbUDtOwkcJ5pXmn75w7LSQDjA4tO9dm1XlqlA==
321 |
322 | "@protobufjs/aspromise@^1.1.1", "@protobufjs/aspromise@^1.1.2":
323 | version "1.1.2"
324 | resolved "https://registry.yarnpkg.com/@protobufjs/aspromise/-/aspromise-1.1.2.tgz#9b8b0cc663d669a7d8f6f5d0893a14d348f30fbf"
325 | integrity sha1-m4sMxmPWaafY9vXQiToU00jzD78=
326 |
327 | "@protobufjs/base64@^1.1.2":
328 | version "1.1.2"
329 | resolved "https://registry.yarnpkg.com/@protobufjs/base64/-/base64-1.1.2.tgz#4c85730e59b9a1f1f349047dbf24296034bb2735"
330 | integrity sha512-AZkcAA5vnN/v4PDqKyMR5lx7hZttPDgClv83E//FMNhR2TMcLUhfRUBHCmSl0oi9zMgDDqRUJkSxO3wm85+XLg==
331 |
332 | "@protobufjs/codegen@^2.0.4":
333 | version "2.0.4"
334 | resolved "https://registry.yarnpkg.com/@protobufjs/codegen/-/codegen-2.0.4.tgz#7ef37f0d010fb028ad1ad59722e506d9262815cb"
335 | integrity sha512-YyFaikqM5sH0ziFZCN3xDC7zeGaB/d0IUb9CATugHWbd1FRFwWwt4ld4OYMPWu5a3Xe01mGAULCdqhMlPl29Jg==
336 |
337 | "@protobufjs/eventemitter@^1.1.0":
338 | version "1.1.0"
339 | resolved "https://registry.yarnpkg.com/@protobufjs/eventemitter/-/eventemitter-1.1.0.tgz#355cbc98bafad5978f9ed095f397621f1d066b70"
340 | integrity sha1-NVy8mLr61ZePntCV85diHx0Ga3A=
341 |
342 | "@protobufjs/fetch@^1.1.0":
343 | version "1.1.0"
344 | resolved "https://registry.yarnpkg.com/@protobufjs/fetch/-/fetch-1.1.0.tgz#ba99fb598614af65700c1619ff06d454b0d84c45"
345 | integrity sha1-upn7WYYUr2VwDBYZ/wbUVLDYTEU=
346 | dependencies:
347 | "@protobufjs/aspromise" "^1.1.1"
348 | "@protobufjs/inquire" "^1.1.0"
349 |
350 | "@protobufjs/float@^1.0.2":
351 | version "1.0.2"
352 | resolved "https://registry.yarnpkg.com/@protobufjs/float/-/float-1.0.2.tgz#5e9e1abdcb73fc0a7cb8b291df78c8cbd97b87d1"
353 | integrity sha1-Xp4avctz/Ap8uLKR33jIy9l7h9E=
354 |
355 | "@protobufjs/inquire@^1.1.0":
356 | version "1.1.0"
357 | resolved "https://registry.yarnpkg.com/@protobufjs/inquire/-/inquire-1.1.0.tgz#ff200e3e7cf2429e2dcafc1140828e8cc638f089"
358 | integrity sha1-/yAOPnzyQp4tyvwRQIKOjMY48Ik=
359 |
360 | "@protobufjs/path@^1.1.2":
361 | version "1.1.2"
362 | resolved "https://registry.yarnpkg.com/@protobufjs/path/-/path-1.1.2.tgz#6cc2b20c5c9ad6ad0dccfd21ca7673d8d7fbf68d"
363 | integrity sha1-bMKyDFya1q0NzP0hynZz2Nf79o0=
364 |
365 | "@protobufjs/pool@^1.1.0":
366 | version "1.1.0"
367 | resolved "https://registry.yarnpkg.com/@protobufjs/pool/-/pool-1.1.0.tgz#09fd15f2d6d3abfa9b65bc366506d6ad7846ff54"
368 | integrity sha1-Cf0V8tbTq/qbZbw2ZQbWrXhG/1Q=
369 |
370 | "@protobufjs/utf8@^1.1.0":
371 | version "1.1.0"
372 | resolved "https://registry.yarnpkg.com/@protobufjs/utf8/-/utf8-1.1.0.tgz#a777360b5b39a1a2e5106f8e858f2fd2d060c570"
373 | integrity sha1-p3c2C1s5oaLlEG+OhY8v0tBgxXA=
374 |
375 | "@rollup/pluginutils@^3.0.0":
376 | version "3.1.0"
377 | resolved "https://registry.yarnpkg.com/@rollup/pluginutils/-/pluginutils-3.1.0.tgz#706b4524ee6dc8b103b3c995533e5ad680c02b9b"
378 | integrity sha512-GksZ6pr6TpIjHm8h9lSQ8pi8BE9VeubNT0OMJ3B5uZJ8pz73NPiqOtCog/x2/QzM1ENChPKxMDhiQuRHsqc+lg==
379 | dependencies:
380 | "@types/estree" "0.0.39"
381 | estree-walker "^1.0.1"
382 | picomatch "^2.2.2"
383 |
384 | "@types/estree@*":
385 | version "0.0.45"
386 | resolved "https://registry.yarnpkg.com/@types/estree/-/estree-0.0.45.tgz#e9387572998e5ecdac221950dab3e8c3b16af884"
387 | integrity sha512-jnqIUKDUqJbDIUxm0Uj7bnlMnRm1T/eZ9N+AVMqhPgzrba2GhGG5o/jCTwmdPK709nEZsGoMzXEDUjcXHa3W0g==
388 |
389 | "@types/estree@0.0.39":
390 | version "0.0.39"
391 | resolved "https://registry.yarnpkg.com/@types/estree/-/estree-0.0.39.tgz#e177e699ee1b8c22d23174caaa7422644389509f"
392 | integrity sha512-EYNwp3bU+98cpU4lAWYYL7Zz+2gryWH1qbdDTidVd6hkiR6weksdbMadyXKXNPEkQFhXM+hVO9ZygomHXp+AIw==
393 |
394 | "@types/long@^4.0.1":
395 | version "4.0.1"
396 | resolved "https://registry.yarnpkg.com/@types/long/-/long-4.0.1.tgz#459c65fa1867dafe6a8f322c4c51695663cc55e9"
397 | integrity sha512-5tXH6Bx/kNGd3MgffdmP4dy2Z+G4eaXw0SE81Tq3BNadtnMR5/ySMzX4SLEzHJzSmPNn4HIdpQsBvXMUykr58w==
398 |
399 | "@types/node@*":
400 | version "14.11.8"
401 | resolved "https://registry.yarnpkg.com/@types/node/-/node-14.11.8.tgz#fe2012f2355e4ce08bca44aeb3abbb21cf88d33f"
402 | integrity sha512-KPcKqKm5UKDkaYPTuXSx8wEP7vE9GnuaXIZKijwRYcePpZFDVuy2a57LarFKiORbHOuTOOwYzxVxcUzsh2P2Pw==
403 |
404 | "@types/node@>=12.12.47":
405 | version "18.15.10"
406 | resolved "https://registry.yarnpkg.com/@types/node/-/node-18.15.10.tgz#4ee2171c3306a185d1208dad5f44dae3dee4cfe3"
407 | integrity sha512-9avDaQJczATcXgfmMAW3MIWArOO7A+m90vuCFLr8AotWf8igO/mRoYukrk2cqZVtv38tHs33retzHEilM7FpeQ==
408 |
409 | "@types/node@>=13.7.0":
410 | version "18.15.3"
411 | resolved "https://registry.yarnpkg.com/@types/node/-/node-18.15.3.tgz#f0b991c32cfc6a4e7f3399d6cb4b8cf9a0315014"
412 | integrity sha512-p6ua9zBxz5otCmbpb5D3U4B5Nanw6Pk3PPyX05xnxbB/fRv71N7CPmORg7uAD5P70T0xmx1pzAx/FUfa5X+3cw==
413 |
414 | "@types/resolve@0.0.8":
415 | version "0.0.8"
416 | resolved "https://registry.yarnpkg.com/@types/resolve/-/resolve-0.0.8.tgz#f26074d238e02659e323ce1a13d041eee280e194"
417 | integrity sha512-auApPaJf3NPfe18hSoJkp8EbZzer2ISk7o8mCC3M9he/a04+gbMF97NkpD2S8riMGvm4BMRI59/SZQSaLTKpsQ==
418 | dependencies:
419 | "@types/node" "*"
420 |
421 | acorn@^8.5.0:
422 | version "8.7.1"
423 | resolved "https://registry.yarnpkg.com/acorn/-/acorn-8.7.1.tgz#0197122c843d1bf6d0a5e83220a788f278f63c30"
424 | integrity sha512-Xx54uLJQZ19lKygFXOWsscKUbsBZW0CPykPhVQdhIeIwrbPmJzqeASDInc8nKBnp/JT6igTs82qPXz069H8I/A==
425 |
426 | ansi-regex@^5.0.0:
427 | version "5.0.1"
428 | resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-5.0.1.tgz#082cb2c89c9fe8659a311a53bd6a4dc5301db304"
429 | integrity sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==
430 |
431 | ansi-styles@^3.2.1:
432 | version "3.2.1"
433 | resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-3.2.1.tgz#41fbb20243e50b12be0f04b8dedbf07520ce841d"
434 | integrity sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==
435 | dependencies:
436 | color-convert "^1.9.0"
437 |
438 | ansi-styles@^4.0.0:
439 | version "4.3.0"
440 | resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-4.3.0.tgz#edd803628ae71c04c85ae7a0906edad34b648937"
441 | integrity sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==
442 | dependencies:
443 | color-convert "^2.0.1"
444 |
445 | anymatch@~3.1.1:
446 | version "3.1.1"
447 | resolved "https://registry.yarnpkg.com/anymatch/-/anymatch-3.1.1.tgz#c55ecf02185e2469259399310c173ce31233b142"
448 | integrity sha512-mM8522psRCqzV+6LhomX5wgp25YVibjh8Wj23I5RPkPppSVSjyKD2A2mBJmWGa+KN7f2D6LNh9jkBCeyLktzjg==
449 | dependencies:
450 | normalize-path "^3.0.0"
451 | picomatch "^2.0.4"
452 |
453 | async-limiter@~1.0.0:
454 | version "1.0.1"
455 | resolved "https://registry.yarnpkg.com/async-limiter/-/async-limiter-1.0.1.tgz#dd379e94f0db8310b08291f9d64c3209766617fd"
456 | integrity sha512-csOlWGAcRFJaI6m+F2WKdnMKr4HhdhFVBk0H/QbJFMCr+uO2kwohwXQPxw/9OCxp05r5ghVBFSyioixx3gfkNQ==
457 |
458 | at-least-node@^1.0.0:
459 | version "1.0.0"
460 | resolved "https://registry.yarnpkg.com/at-least-node/-/at-least-node-1.0.0.tgz#602cd4b46e844ad4effc92a8011a3c46e0238dc2"
461 | integrity sha512-+q/t7Ekv1EDY2l6Gda6LLiX14rU9TV20Wa3ofeQmwPFZbOMo9DXrLbOjFaaclkXKWidIaopwAObQDqwWtGUjqg==
462 |
463 | balanced-match@^1.0.0:
464 | version "1.0.0"
465 | resolved "https://registry.yarnpkg.com/balanced-match/-/balanced-match-1.0.0.tgz#89b4d199ab2bee49de164ea02b89ce462d71b767"
466 | integrity sha1-ibTRmasr7kneFk6gK4nORi1xt2c=
467 |
468 | binary-extensions@^2.0.0:
469 | version "2.1.0"
470 | resolved "https://registry.yarnpkg.com/binary-extensions/-/binary-extensions-2.1.0.tgz#30fa40c9e7fe07dbc895678cd287024dea241dd9"
471 | integrity sha512-1Yj8h9Q+QDF5FzhMs/c9+6UntbD5MkRfRwac8DoEm9ZfUBZ7tZ55YcGVAzEe4bXsdQHEk+s9S5wsOKVdZrw0tQ==
472 |
473 | brace-expansion@^1.1.7:
474 | version "1.1.11"
475 | resolved "https://registry.yarnpkg.com/brace-expansion/-/brace-expansion-1.1.11.tgz#3c7fcbf529d87226f3d2f52b966ff5271eb441dd"
476 | integrity sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==
477 | dependencies:
478 | balanced-match "^1.0.0"
479 | concat-map "0.0.1"
480 |
481 | braces@~3.0.2:
482 | version "3.0.2"
483 | resolved "https://registry.yarnpkg.com/braces/-/braces-3.0.2.tgz#3454e1a462ee8d599e236df336cd9ea4f8afe107"
484 | integrity sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==
485 | dependencies:
486 | fill-range "^7.0.1"
487 |
488 | buffer-from@^1.0.0:
489 | version "1.1.2"
490 | resolved "https://registry.yarnpkg.com/buffer-from/-/buffer-from-1.1.2.tgz#2b146a6fd72e80b4f55d255f35ed59a3a9a41bd5"
491 | integrity sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==
492 |
493 | builtin-modules@^3.1.0:
494 | version "3.1.0"
495 | resolved "https://registry.yarnpkg.com/builtin-modules/-/builtin-modules-3.1.0.tgz#aad97c15131eb76b65b50ef208e7584cd76a7484"
496 | integrity sha512-k0KL0aWZuBt2lrxrcASWDfwOLMnodeQjodT/1SxEQAXsHANgo6ZC/VEaSEHCXt7aSTZ4/4H5LKa+tBXmW7Vtvw==
497 |
498 | chalk@^2.0.0, chalk@^2.4.1:
499 | version "2.4.2"
500 | resolved "https://registry.yarnpkg.com/chalk/-/chalk-2.4.2.tgz#cd42541677a54333cf541a49108c1432b44c9424"
501 | integrity sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==
502 | dependencies:
503 | ansi-styles "^3.2.1"
504 | escape-string-regexp "^1.0.5"
505 | supports-color "^5.3.0"
506 |
507 | chokidar@^3.3.0:
508 | version "3.4.3"
509 | resolved "https://registry.yarnpkg.com/chokidar/-/chokidar-3.4.3.tgz#c1df38231448e45ca4ac588e6c79573ba6a57d5b"
510 | integrity sha512-DtM3g7juCXQxFVSNPNByEC2+NImtBuxQQvWlHunpJIS5Ocr0lG306cC7FCi7cEA0fzmybPUIl4txBIobk1gGOQ==
511 | dependencies:
512 | anymatch "~3.1.1"
513 | braces "~3.0.2"
514 | glob-parent "~5.1.0"
515 | is-binary-path "~2.1.0"
516 | is-glob "~4.0.1"
517 | normalize-path "~3.0.0"
518 | readdirp "~3.5.0"
519 | optionalDependencies:
520 | fsevents "~2.1.2"
521 |
522 | cliui@^7.0.2:
523 | version "7.0.4"
524 | resolved "https://registry.yarnpkg.com/cliui/-/cliui-7.0.4.tgz#a0265ee655476fc807aea9df3df8df7783808b4f"
525 | integrity sha512-OcRE68cOsVMXp1Yvonl/fzkQOyjLSu/8bhPDfQt0e0/Eb283TKP20Fs2MqoPsr9SwA595rRCA+QMzYc9nBP+JQ==
526 | dependencies:
527 | string-width "^4.2.0"
528 | strip-ansi "^6.0.0"
529 | wrap-ansi "^7.0.0"
530 |
531 | color-convert@^1.9.0:
532 | version "1.9.3"
533 | resolved "https://registry.yarnpkg.com/color-convert/-/color-convert-1.9.3.tgz#bb71850690e1f136567de629d2d5471deda4c1e8"
534 | integrity sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==
535 | dependencies:
536 | color-name "1.1.3"
537 |
538 | color-convert@^2.0.1:
539 | version "2.0.1"
540 | resolved "https://registry.yarnpkg.com/color-convert/-/color-convert-2.0.1.tgz#72d3a68d598c9bdb3af2ad1e84f21d896abd4de3"
541 | integrity sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==
542 | dependencies:
543 | color-name "~1.1.4"
544 |
545 | color-name@1.1.3:
546 | version "1.1.3"
547 | resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.3.tgz#a7d0558bd89c42f795dd42328f740831ca53bc25"
548 | integrity sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=
549 |
550 | color-name@~1.1.4:
551 | version "1.1.4"
552 | resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.4.tgz#c2a09a87acbde69543de6f63fa3995c826c536a2"
553 | integrity sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==
554 |
555 | commander@^2.20.0:
556 | version "2.20.3"
557 | resolved "https://registry.yarnpkg.com/commander/-/commander-2.20.3.tgz#fd485e84c03eb4881c20722ba48035e8531aeb33"
558 | integrity sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==
559 |
560 | concat-map@0.0.1:
561 | version "0.0.1"
562 | resolved "https://registry.yarnpkg.com/concat-map/-/concat-map-0.0.1.tgz#d8a96bd77fd68df7793a73036a3ba0d5405d477b"
563 | integrity sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=
564 |
565 | console-clear@^1.1.0:
566 | version "1.1.1"
567 | resolved "https://registry.yarnpkg.com/console-clear/-/console-clear-1.1.1.tgz#995e20cbfbf14dd792b672cde387bd128d674bf7"
568 | integrity sha512-pMD+MVR538ipqkG5JXeOEbKWS5um1H4LUUccUQG68qpeqBYbzYy79Gh55jkd2TtPdRfUaLWdv6LPP//5Zt0aPQ==
569 |
570 | core-js@3.6.5:
571 | version "3.6.5"
572 | resolved "https://registry.yarnpkg.com/core-js/-/core-js-3.6.5.tgz#7395dc273af37fb2e50e9bd3d9fe841285231d1a"
573 | integrity sha512-vZVEEwZoIsI+vPEuoF9Iqf5H7/M3eeQqWlQnYa8FSKKePuYTf5MWnxb5SDAzCa60b3JBRS5g9b+Dq7b1y/RCrA==
574 |
575 | cross-spawn@^6.0.5:
576 | version "6.0.5"
577 | resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-6.0.5.tgz#4a5ec7c64dfae22c3a14124dbacdee846d80cbc4"
578 | integrity sha512-eTVLrBSt7fjbDygz805pMnstIs2VTBNkRm0qxZd+M7A5XDdxVRWO5MxGBXZhjY4cqLYLdtrGqRf8mBPmzwSpWQ==
579 | dependencies:
580 | nice-try "^1.0.4"
581 | path-key "^2.0.1"
582 | semver "^5.5.0"
583 | shebang-command "^1.2.0"
584 | which "^1.2.9"
585 |
586 | define-properties@^1.1.3:
587 | version "1.1.3"
588 | resolved "https://registry.yarnpkg.com/define-properties/-/define-properties-1.1.3.tgz#cf88da6cbee26fe6db7094f61d870cbd84cee9f1"
589 | integrity sha512-3MqfYKj2lLzdMSf8ZIZE/V+Zuy+BgD6f164e8K2w7dgnpKArBDerGYpM46IYYcjnkdPNMjPk9A6VFB8+3SKlXQ==
590 | dependencies:
591 | object-keys "^1.0.12"
592 |
593 | dom-storage@2.1.0:
594 | version "2.1.0"
595 | resolved "https://registry.yarnpkg.com/dom-storage/-/dom-storage-2.1.0.tgz#00fb868bc9201357ea243c7bcfd3304c1e34ea39"
596 | integrity sha512-g6RpyWXzl0RR6OTElHKBl7nwnK87GUyZMYC7JWsB/IA73vpqK2K6LT39x4VepLxlSsWBFrPVLnsSR5Jyty0+2Q==
597 |
598 | emoji-regex@^8.0.0:
599 | version "8.0.0"
600 | resolved "https://registry.yarnpkg.com/emoji-regex/-/emoji-regex-8.0.0.tgz#e818fd69ce5ccfcb404594f842963bf53164cc37"
601 | integrity sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==
602 |
603 | error-ex@^1.3.1:
604 | version "1.3.2"
605 | resolved "https://registry.yarnpkg.com/error-ex/-/error-ex-1.3.2.tgz#b4ac40648107fdcdcfae242f428bea8a14d4f1bf"
606 | integrity sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==
607 | dependencies:
608 | is-arrayish "^0.2.1"
609 |
610 | es-abstract@^1.17.0-next.1, es-abstract@^1.17.5:
611 | version "1.17.7"
612 | resolved "https://registry.yarnpkg.com/es-abstract/-/es-abstract-1.17.7.tgz#a4de61b2f66989fc7421676c1cb9787573ace54c"
613 | integrity sha512-VBl/gnfcJ7OercKA9MVaegWsBHFjV492syMudcnQZvt/Dw8ezpcOHYZXa/J96O8vx+g4x65YKhxOwDUh63aS5g==
614 | dependencies:
615 | es-to-primitive "^1.2.1"
616 | function-bind "^1.1.1"
617 | has "^1.0.3"
618 | has-symbols "^1.0.1"
619 | is-callable "^1.2.2"
620 | is-regex "^1.1.1"
621 | object-inspect "^1.8.0"
622 | object-keys "^1.1.1"
623 | object.assign "^4.1.1"
624 | string.prototype.trimend "^1.0.1"
625 | string.prototype.trimstart "^1.0.1"
626 |
627 | es-abstract@^1.18.0-next.0:
628 | version "1.18.0-next.1"
629 | resolved "https://registry.yarnpkg.com/es-abstract/-/es-abstract-1.18.0-next.1.tgz#6e3a0a4bda717e5023ab3b8e90bec36108d22c68"
630 | integrity sha512-I4UGspA0wpZXWENrdA0uHbnhte683t3qT/1VFH9aX2dA5PPSf6QW5HHXf5HImaqPmjXaVeVk4RGWnaylmV7uAA==
631 | dependencies:
632 | es-to-primitive "^1.2.1"
633 | function-bind "^1.1.1"
634 | has "^1.0.3"
635 | has-symbols "^1.0.1"
636 | is-callable "^1.2.2"
637 | is-negative-zero "^2.0.0"
638 | is-regex "^1.1.1"
639 | object-inspect "^1.8.0"
640 | object-keys "^1.1.1"
641 | object.assign "^4.1.1"
642 | string.prototype.trimend "^1.0.1"
643 | string.prototype.trimstart "^1.0.1"
644 |
645 | es-to-primitive@^1.2.1:
646 | version "1.2.1"
647 | resolved "https://registry.yarnpkg.com/es-to-primitive/-/es-to-primitive-1.2.1.tgz#e55cd4c9cdc188bcefb03b366c736323fc5c898a"
648 | integrity sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA==
649 | dependencies:
650 | is-callable "^1.1.4"
651 | is-date-object "^1.0.1"
652 | is-symbol "^1.0.2"
653 |
654 | escalade@^3.1.1:
655 | version "3.1.1"
656 | resolved "https://registry.yarnpkg.com/escalade/-/escalade-3.1.1.tgz#d8cfdc7000965c5a0174b4a82eaa5c0552742e40"
657 | integrity sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==
658 |
659 | escape-string-regexp@^1.0.5:
660 | version "1.0.5"
661 | resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz#1b61c0562190a8dff6ae3bb2cf0200ca130b86d4"
662 | integrity sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=
663 |
664 | estree-walker@^0.6.1:
665 | version "0.6.1"
666 | resolved "https://registry.yarnpkg.com/estree-walker/-/estree-walker-0.6.1.tgz#53049143f40c6eb918b23671d1fe3219f3a1b362"
667 | integrity sha512-SqmZANLWS0mnatqbSfRP5g8OXZC12Fgg1IwNtLsyHDzJizORW4khDfjPqJZsemPWBB2uqykUah5YpQ6epsqC/w==
668 |
669 | estree-walker@^1.0.1:
670 | version "1.0.1"
671 | resolved "https://registry.yarnpkg.com/estree-walker/-/estree-walker-1.0.1.tgz#31bc5d612c96b704106b477e6dd5d8aa138cb700"
672 | integrity sha512-1fMXF3YP4pZZVozF8j/ZLfvnR8NSIljt56UhbZ5PeeDmmGHpgpdwQt7ITlGvYaQukCvuBRMLEiKiYC+oeIg4cg==
673 |
674 | faye-websocket@0.11.3:
675 | version "0.11.3"
676 | resolved "https://registry.yarnpkg.com/faye-websocket/-/faye-websocket-0.11.3.tgz#5c0e9a8968e8912c286639fde977a8b209f2508e"
677 | integrity sha512-D2y4bovYpzziGgbHYtGCMjlJM36vAl/y+xUyn1C+FVx8szd1E+86KwVw6XvYSzOP8iMpm1X0I4xJD+QtUb36OA==
678 | dependencies:
679 | websocket-driver ">=0.5.1"
680 |
681 | fill-range@^7.0.1:
682 | version "7.0.1"
683 | resolved "https://registry.yarnpkg.com/fill-range/-/fill-range-7.0.1.tgz#1919a6a7c75fe38b2c7c77e5198535da9acdda40"
684 | integrity sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==
685 | dependencies:
686 | to-regex-range "^5.0.1"
687 |
688 | firebase@^7.0.0:
689 | version "7.23.0"
690 | resolved "https://registry.yarnpkg.com/firebase/-/firebase-7.23.0.tgz#d58bf936bd9f3a00717d81854280747222d2803b"
691 | integrity sha512-0b1zi0H8jT4KqyPabldzPhyKTeptw5E5a7KkjWW3MBMVV/LjbC6/NKhRR8sGQNbsbS2LnTvyEENWbqkZP2ZXtw==
692 | dependencies:
693 | "@firebase/analytics" "0.6.0"
694 | "@firebase/app" "0.6.11"
695 | "@firebase/app-types" "0.6.1"
696 | "@firebase/auth" "0.14.9"
697 | "@firebase/database" "0.6.13"
698 | "@firebase/firestore" "1.17.3"
699 | "@firebase/functions" "0.5.1"
700 | "@firebase/installations" "0.4.17"
701 | "@firebase/messaging" "0.7.1"
702 | "@firebase/performance" "0.4.2"
703 | "@firebase/polyfill" "0.3.36"
704 | "@firebase/remote-config" "0.1.28"
705 | "@firebase/storage" "0.3.43"
706 | "@firebase/util" "0.3.2"
707 |
708 | fs-extra@^9.0.0:
709 | version "9.0.1"
710 | resolved "https://registry.yarnpkg.com/fs-extra/-/fs-extra-9.0.1.tgz#910da0062437ba4c39fedd863f1675ccfefcb9fc"
711 | integrity sha512-h2iAoN838FqAFJY2/qVpzFXy+EBxfVE220PalAqQLDVsFOHLJrZvut5puAbCdNv6WJk+B8ihI+k0c7JK5erwqQ==
712 | dependencies:
713 | at-least-node "^1.0.0"
714 | graceful-fs "^4.2.0"
715 | jsonfile "^6.0.1"
716 | universalify "^1.0.0"
717 |
718 | fsevents@~2.1.2:
719 | version "2.1.3"
720 | resolved "https://registry.yarnpkg.com/fsevents/-/fsevents-2.1.3.tgz#fb738703ae8d2f9fe900c33836ddebee8b97f23e"
721 | integrity sha512-Auw9a4AxqWpa9GUfj370BMPzzyncfBABW8Mab7BGWBYDj4Isgq+cDKtx0i6u9jcX9pQDnswsaaOTgTmA5pEjuQ==
722 |
723 | function-bind@^1.1.1:
724 | version "1.1.1"
725 | resolved "https://registry.yarnpkg.com/function-bind/-/function-bind-1.1.1.tgz#a56899d3ea3c9bab874bb9773b7c5ede92f4895d"
726 | integrity sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==
727 |
728 | get-caller-file@^2.0.5:
729 | version "2.0.5"
730 | resolved "https://registry.yarnpkg.com/get-caller-file/-/get-caller-file-2.0.5.tgz#4f94412a82db32f36e3b0b9741f8a97feb031f7e"
731 | integrity sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==
732 |
733 | get-port@^3.2.0:
734 | version "3.2.0"
735 | resolved "https://registry.yarnpkg.com/get-port/-/get-port-3.2.0.tgz#dd7ce7de187c06c8bf353796ac71e099f0980ebc"
736 | integrity sha1-3Xzn3hh8Bsi/NTeWrHHgmfCYDrw=
737 |
738 | glob-parent@~5.1.0:
739 | version "5.1.2"
740 | resolved "https://registry.yarnpkg.com/glob-parent/-/glob-parent-5.1.2.tgz#869832c58034fe68a4093c17dc15e8340d8401c4"
741 | integrity sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==
742 | dependencies:
743 | is-glob "^4.0.1"
744 |
745 | graceful-fs@^4.1.2, graceful-fs@^4.1.6, graceful-fs@^4.2.0:
746 | version "4.2.4"
747 | resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.2.4.tgz#2256bde14d3632958c465ebc96dc467ca07a29fb"
748 | integrity sha512-WjKPNJF79dtJAVniUlGGWHYGz2jWxT6VhN/4m1NdkbZ2nOsEF+cI1Edgql5zCRhs/VsQYRvrXctxktVXZUkixw==
749 |
750 | has-flag@^3.0.0:
751 | version "3.0.0"
752 | resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-3.0.0.tgz#b5d454dc2199ae225699f3467e5a07f3b955bafd"
753 | integrity sha1-tdRU3CGZriJWmfNGfloH87lVuv0=
754 |
755 | has-flag@^4.0.0:
756 | version "4.0.0"
757 | resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-4.0.0.tgz#944771fd9c81c81265c4d6941860da06bb59479b"
758 | integrity sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==
759 |
760 | has-symbols@^1.0.1:
761 | version "1.0.1"
762 | resolved "https://registry.yarnpkg.com/has-symbols/-/has-symbols-1.0.1.tgz#9f5214758a44196c406d9bd76cebf81ec2dd31e8"
763 | integrity sha512-PLcsoqu++dmEIZB+6totNFKq/7Do+Z0u4oT0zKOJNl3lYK6vGwwu2hjHs+68OEZbTjiUE9bgOABXbP/GvrS0Kg==
764 |
765 | has@^1.0.3:
766 | version "1.0.3"
767 | resolved "https://registry.yarnpkg.com/has/-/has-1.0.3.tgz#722d7cbfc1f6aa8241f16dd814e011e1f41e8796"
768 | integrity sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==
769 | dependencies:
770 | function-bind "^1.1.1"
771 |
772 | hosted-git-info@^2.1.4:
773 | version "2.8.9"
774 | resolved "https://registry.yarnpkg.com/hosted-git-info/-/hosted-git-info-2.8.9.tgz#dffc0bf9a21c02209090f2aa69429e1414daf3f9"
775 | integrity sha512-mxIDAb9Lsm6DoOJ7xH+5+X4y1LU/4Hi50L9C5sIswK3JzULS4bwk1FvjdBgvYR4bzT4tuUQiC15FE2f5HbLvYw==
776 |
777 | http-parser-js@>=0.5.1:
778 | version "0.5.2"
779 | resolved "https://registry.yarnpkg.com/http-parser-js/-/http-parser-js-0.5.2.tgz#da2e31d237b393aae72ace43882dd7e270a8ff77"
780 | integrity sha512-opCO9ASqg5Wy2FNo7A0sxy71yGbbkJJXLdgMK04Tcypw9jr2MgWbyubb0+WdmDmGnFflO7fRbqbaihh/ENDlRQ==
781 |
782 | idb@3.0.2:
783 | version "3.0.2"
784 | resolved "https://registry.yarnpkg.com/idb/-/idb-3.0.2.tgz#c8e9122d5ddd40f13b60ae665e4862f8b13fa384"
785 | integrity sha512-+FLa/0sTXqyux0o6C+i2lOR0VoS60LU/jzUo5xjfY6+7sEEgy4Gz1O7yFBXvjd7N0NyIGWIRg8DcQSLEG+VSPw==
786 |
787 | is-arrayish@^0.2.1:
788 | version "0.2.1"
789 | resolved "https://registry.yarnpkg.com/is-arrayish/-/is-arrayish-0.2.1.tgz#77c99840527aa8ecb1a8ba697b80645a7a926a9d"
790 | integrity sha1-d8mYQFJ6qOyxqLppe4BkWnqSap0=
791 |
792 | is-binary-path@~2.1.0:
793 | version "2.1.0"
794 | resolved "https://registry.yarnpkg.com/is-binary-path/-/is-binary-path-2.1.0.tgz#ea1f7f3b80f064236e83470f86c09c254fb45b09"
795 | integrity sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==
796 | dependencies:
797 | binary-extensions "^2.0.0"
798 |
799 | is-callable@^1.1.4, is-callable@^1.2.2:
800 | version "1.2.2"
801 | resolved "https://registry.yarnpkg.com/is-callable/-/is-callable-1.2.2.tgz#c7c6715cd22d4ddb48d3e19970223aceabb080d9"
802 | integrity sha512-dnMqspv5nU3LoewK2N/y7KLtxtakvTuaCsU9FU50/QDmdbHNy/4/JuRtMHqRU22o3q+W89YQndQEeCVwK+3qrA==
803 |
804 | is-date-object@^1.0.1:
805 | version "1.0.2"
806 | resolved "https://registry.yarnpkg.com/is-date-object/-/is-date-object-1.0.2.tgz#bda736f2cd8fd06d32844e7743bfa7494c3bfd7e"
807 | integrity sha512-USlDT524woQ08aoZFzh3/Z6ch9Y/EWXEHQ/AaRN0SkKq4t2Jw2R2339tSXmwuVoY7LLlBCbOIlx2myP/L5zk0g==
808 |
809 | is-extglob@^2.1.1:
810 | version "2.1.1"
811 | resolved "https://registry.yarnpkg.com/is-extglob/-/is-extglob-2.1.1.tgz#a88c02535791f02ed37c76a1b9ea9773c833f8c2"
812 | integrity sha1-qIwCU1eR8C7TfHahueqXc8gz+MI=
813 |
814 | is-fullwidth-code-point@^3.0.0:
815 | version "3.0.0"
816 | resolved "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz#f116f8064fe90b3f7844a38997c0b75051269f1d"
817 | integrity sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==
818 |
819 | is-glob@^4.0.1, is-glob@~4.0.1:
820 | version "4.0.1"
821 | resolved "https://registry.yarnpkg.com/is-glob/-/is-glob-4.0.1.tgz#7567dbe9f2f5e2467bc77ab83c4a29482407a5dc"
822 | integrity sha512-5G0tKtBTFImOqDnLB2hG6Bp2qcKEFduo4tZu9MT/H6NQv/ghhy30o55ufafxJ/LdH79LLs2Kfrn85TLKyA7BUg==
823 | dependencies:
824 | is-extglob "^2.1.1"
825 |
826 | is-module@^1.0.0:
827 | version "1.0.0"
828 | resolved "https://registry.yarnpkg.com/is-module/-/is-module-1.0.0.tgz#3258fb69f78c14d5b815d664336b4cffb6441591"
829 | integrity sha1-Mlj7afeMFNW4FdZkM2tM/7ZEFZE=
830 |
831 | is-negative-zero@^2.0.0:
832 | version "2.0.0"
833 | resolved "https://registry.yarnpkg.com/is-negative-zero/-/is-negative-zero-2.0.0.tgz#9553b121b0fac28869da9ed459e20c7543788461"
834 | integrity sha1-lVOxIbD6wohp2p7UWeIMdUN4hGE=
835 |
836 | is-number@^7.0.0:
837 | version "7.0.0"
838 | resolved "https://registry.yarnpkg.com/is-number/-/is-number-7.0.0.tgz#7535345b896734d5f80c4d06c50955527a14f12b"
839 | integrity sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==
840 |
841 | is-reference@^1.1.2:
842 | version "1.2.1"
843 | resolved "https://registry.yarnpkg.com/is-reference/-/is-reference-1.2.1.tgz#8b2dac0b371f4bc994fdeaba9eb542d03002d0b7"
844 | integrity sha512-U82MsXXiFIrjCK4otLT+o2NA2Cd2g5MLoOVXUZjIOhLurrRxpEXzI8O0KZHr3IjLvlAH1kTPYSuqer5T9ZVBKQ==
845 | dependencies:
846 | "@types/estree" "*"
847 |
848 | is-regex@^1.1.1:
849 | version "1.1.1"
850 | resolved "https://registry.yarnpkg.com/is-regex/-/is-regex-1.1.1.tgz#c6f98aacc546f6cec5468a07b7b153ab564a57b9"
851 | integrity sha512-1+QkEcxiLlB7VEyFtyBg94e08OAsvq7FUBgApTq/w2ymCLyKJgDPsybBENVtA7XCQEgEXxKPonG+mvYRxh/LIg==
852 | dependencies:
853 | has-symbols "^1.0.1"
854 |
855 | is-symbol@^1.0.2:
856 | version "1.0.3"
857 | resolved "https://registry.yarnpkg.com/is-symbol/-/is-symbol-1.0.3.tgz#38e1014b9e6329be0de9d24a414fd7441ec61937"
858 | integrity sha512-OwijhaRSgqvhm/0ZdAcXNZt9lYdKFpcRDT5ULUuYXPoT794UNOdU+gpT6Rzo7b4V2HUl/op6GqY894AZwv9faQ==
859 | dependencies:
860 | has-symbols "^1.0.1"
861 |
862 | isexe@^2.0.0:
863 | version "2.0.0"
864 | resolved "https://registry.yarnpkg.com/isexe/-/isexe-2.0.0.tgz#e8fbf374dc556ff8947a10dcb0572d633f2cfa10"
865 | integrity sha1-6PvzdNxVb/iUehDcsFctYz8s+hA=
866 |
867 | jest-worker@^26.2.1:
868 | version "26.5.0"
869 | resolved "https://registry.yarnpkg.com/jest-worker/-/jest-worker-26.5.0.tgz#87deee86dbbc5f98d9919e0dadf2c40e3152fa30"
870 | integrity sha512-kTw66Dn4ZX7WpjZ7T/SUDgRhapFRKWmisVAF0Rv4Fu8SLFD7eLbqpLvbxVqYhSgaWa7I+bW7pHnbyfNsH6stug==
871 | dependencies:
872 | "@types/node" "*"
873 | merge-stream "^2.0.0"
874 | supports-color "^7.0.0"
875 |
876 | js-tokens@^4.0.0:
877 | version "4.0.0"
878 | resolved "https://registry.yarnpkg.com/js-tokens/-/js-tokens-4.0.0.tgz#19203fb59991df98e3a287050d4647cdeaf32499"
879 | integrity sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==
880 |
881 | json-parse-better-errors@^1.0.1:
882 | version "1.0.2"
883 | resolved "https://registry.yarnpkg.com/json-parse-better-errors/-/json-parse-better-errors-1.0.2.tgz#bb867cfb3450e69107c131d1c514bab3dc8bcaa9"
884 | integrity sha512-mrqyZKfX5EhL7hvqcV6WG1yYjnjeuYDzDhhcAAUrq8Po85NBQBJP+ZDUT75qZQ98IkUoBqdkExkukOU7Ts2wrw==
885 |
886 | jsonfile@^6.0.1:
887 | version "6.0.1"
888 | resolved "https://registry.yarnpkg.com/jsonfile/-/jsonfile-6.0.1.tgz#98966cba214378c8c84b82e085907b40bf614179"
889 | integrity sha512-jR2b5v7d2vIOust+w3wtFKZIfpC2pnRmFAhAC/BuweZFQR8qZzxH1OyrQ10HmdVYiXWkYUqPVsz91cG7EL2FBg==
890 | dependencies:
891 | universalify "^1.0.0"
892 | optionalDependencies:
893 | graceful-fs "^4.1.6"
894 |
895 | kleur@^3.0.0:
896 | version "3.0.3"
897 | resolved "https://registry.yarnpkg.com/kleur/-/kleur-3.0.3.tgz#a79c9ecc86ee1ce3fa6206d1216c501f147fc07e"
898 | integrity sha512-eTIzlVOSUR+JxdDFepEYcBMtZ9Qqdef+rnzWdRZuMbOywu5tO2w2N7rqjoANZ5k9vywhL6Br1VRjUIgTQx4E8w==
899 |
900 | livereload-js@^3.1.0:
901 | version "3.3.1"
902 | resolved "https://registry.yarnpkg.com/livereload-js/-/livereload-js-3.3.1.tgz#61f887468086762e61fb2987412cf9d1dda99202"
903 | integrity sha512-CBu1gTEfzVhlOK1WASKAAJ9Qx1fHECTq0SUB67sfxwQssopTyvzqTlgl+c0h9pZ6V+Fzd2rc510ppuNusg9teQ==
904 |
905 | livereload@^0.9.1:
906 | version "0.9.1"
907 | resolved "https://registry.yarnpkg.com/livereload/-/livereload-0.9.1.tgz#65125dabdf2db4fd3f1169e953fe56e3bcc6f477"
908 | integrity sha512-9g7sua11kkyZNo2hLRCG3LuZZwqexoyEyecSlV8cAsfAVVCZqLzVir6XDqmH0r+Vzgnd5LrdHDMyjtFnJQLAYw==
909 | dependencies:
910 | chokidar "^3.3.0"
911 | livereload-js "^3.1.0"
912 | opts ">= 1.2.0"
913 | ws "^6.2.1"
914 |
915 | load-json-file@^4.0.0:
916 | version "4.0.0"
917 | resolved "https://registry.yarnpkg.com/load-json-file/-/load-json-file-4.0.0.tgz#2f5f45ab91e33216234fd53adab668eb4ec0993b"
918 | integrity sha1-L19Fq5HjMhYjT9U62rZo607AmTs=
919 | dependencies:
920 | graceful-fs "^4.1.2"
921 | parse-json "^4.0.0"
922 | pify "^3.0.0"
923 | strip-bom "^3.0.0"
924 |
925 | local-access@^1.0.1:
926 | version "1.0.1"
927 | resolved "https://registry.yarnpkg.com/local-access/-/local-access-1.0.1.tgz#5121258146d64e869046c642ea4f1dd39ff942bb"
928 | integrity sha512-ykt2pgN0aqIy6KQC1CqdWTWkmUwNgaOS6dcpHVjyBJONA+Xi7AtSB1vuxC/U/0tjIP3wcRudwQk1YYzUvzk2bA==
929 |
930 | lodash.camelcase@^4.3.0:
931 | version "4.3.0"
932 | resolved "https://registry.yarnpkg.com/lodash.camelcase/-/lodash.camelcase-4.3.0.tgz#b28aa6288a2b9fc651035c7711f65ab6190331a6"
933 | integrity sha1-soqmKIorn8ZRA1x3EfZathkDMaY=
934 |
935 | long@^4.0.0:
936 | version "4.0.0"
937 | resolved "https://registry.yarnpkg.com/long/-/long-4.0.0.tgz#9a7b71cfb7d361a194ea555241c92f7468d5bf28"
938 | integrity sha512-XsP+KhQif4bjX1kbuSiySJFNAehNxgLb6hPRGJ9QsUr8ajHkuXGdrHmFUTUUXhDwVX2R5bY4JNZEwbUiMhV+MA==
939 |
940 | long@^5.0.0:
941 | version "5.2.1"
942 | resolved "https://registry.yarnpkg.com/long/-/long-5.2.1.tgz#e27595d0083d103d2fa2c20c7699f8e0c92b897f"
943 | integrity sha512-GKSNGeNAtw8IryjjkhZxuKB3JzlcLTwjtiQCHKvqQet81I93kXslhDQruGI/QsddO83mcDToBVy7GqGS/zYf/A==
944 |
945 | magic-string@^0.25.2:
946 | version "0.25.7"
947 | resolved "https://registry.yarnpkg.com/magic-string/-/magic-string-0.25.7.tgz#3f497d6fd34c669c6798dcb821f2ef31f5445051"
948 | integrity sha512-4CrMT5DOHTDk4HYDlzmwu4FVCcIYI8gauveasrdCu2IKIFOJ3f0v/8MDGJCDL9oD2ppz/Av1b0Nj345H9M+XIA==
949 | dependencies:
950 | sourcemap-codec "^1.4.4"
951 |
952 | materialize-css@^1.0.0:
953 | version "1.0.0"
954 | resolved "https://registry.yarnpkg.com/materialize-css/-/materialize-css-1.0.0.tgz#8d5db1c4a81c6d65f3b2e2ca83a8e08daa24d1be"
955 | integrity sha512-4/oecXl8y/1i8RDZvyvwAICyqwNoKU4or5uf8uoAd74k76KzZ0Llym4zhJ5lLNUskcqjO0AuMcvNyDkpz8Z6zw==
956 |
957 | memorystream@^0.3.1:
958 | version "0.3.1"
959 | resolved "https://registry.yarnpkg.com/memorystream/-/memorystream-0.3.1.tgz#86d7090b30ce455d63fbae12dda51a47ddcaf9b2"
960 | integrity sha1-htcJCzDORV1j+64S3aUaR93K+bI=
961 |
962 | merge-stream@^2.0.0:
963 | version "2.0.0"
964 | resolved "https://registry.yarnpkg.com/merge-stream/-/merge-stream-2.0.0.tgz#52823629a14dd00c9770fb6ad47dc6310f2c1f60"
965 | integrity sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==
966 |
967 | mime@^2.3.1:
968 | version "2.4.6"
969 | resolved "https://registry.yarnpkg.com/mime/-/mime-2.4.6.tgz#e5b407c90db442f2beb5b162373d07b69affa4d1"
970 | integrity sha512-RZKhC3EmpBchfTGBVb8fb+RL2cWyw/32lshnsETttkBAyAUXSGHxbEJWWRXc751DrIxG1q04b8QwMbAwkRPpUA==
971 |
972 | minimatch@^3.0.4:
973 | version "3.1.2"
974 | resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-3.1.2.tgz#19cd194bfd3e428f049a70817c038d89ab4be35b"
975 | integrity sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==
976 | dependencies:
977 | brace-expansion "^1.1.7"
978 |
979 | mri@^1.1.0:
980 | version "1.1.6"
981 | resolved "https://registry.yarnpkg.com/mri/-/mri-1.1.6.tgz#49952e1044db21dbf90f6cd92bc9c9a777d415a6"
982 | integrity sha512-oi1b3MfbyGa7FJMP9GmLTttni5JoICpYBRlq+x5V16fZbLsnL9N3wFqqIm/nIG43FjUFkFh9Epzp/kzUGUnJxQ==
983 |
984 | nice-try@^1.0.4:
985 | version "1.0.5"
986 | resolved "https://registry.yarnpkg.com/nice-try/-/nice-try-1.0.5.tgz#a3378a7696ce7d223e88fc9b764bd7ef1089e366"
987 | integrity sha512-1nh45deeb5olNY7eX82BkPO7SSxR5SSYJiPTrTdFUVYwAl8CKMA5N9PjTYkHiRjisVcxcQ1HXdLhx2qxxJzLNQ==
988 |
989 | node-fetch@2.6.1:
990 | version "2.6.1"
991 | resolved "https://registry.yarnpkg.com/node-fetch/-/node-fetch-2.6.1.tgz#045bd323631f76ed2e2b55573394416b639a0052"
992 | integrity sha512-V4aYg89jEoVRxRb2fJdAg8FHvI7cEyYdVAh94HH0UIK8oJxUfkjlDQN9RbMx+bEjP7+ggMiFRprSti032Oipxw==
993 |
994 | normalize-package-data@^2.3.2:
995 | version "2.5.0"
996 | resolved "https://registry.yarnpkg.com/normalize-package-data/-/normalize-package-data-2.5.0.tgz#e66db1838b200c1dfc233225d12cb36520e234a8"
997 | integrity sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA==
998 | dependencies:
999 | hosted-git-info "^2.1.4"
1000 | resolve "^1.10.0"
1001 | semver "2 || 3 || 4 || 5"
1002 | validate-npm-package-license "^3.0.1"
1003 |
1004 | normalize-path@^3.0.0, normalize-path@~3.0.0:
1005 | version "3.0.0"
1006 | resolved "https://registry.yarnpkg.com/normalize-path/-/normalize-path-3.0.0.tgz#0dcd69ff23a1c9b11fd0978316644a0388216a65"
1007 | integrity sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==
1008 |
1009 | npm-run-all@^4.1.5:
1010 | version "4.1.5"
1011 | resolved "https://registry.yarnpkg.com/npm-run-all/-/npm-run-all-4.1.5.tgz#04476202a15ee0e2e214080861bff12a51d98fba"
1012 | integrity sha512-Oo82gJDAVcaMdi3nuoKFavkIHBRVqQ1qvMb+9LHk/cF4P6B2m8aP04hGf7oL6wZ9BuGwX1onlLhpuoofSyoQDQ==
1013 | dependencies:
1014 | ansi-styles "^3.2.1"
1015 | chalk "^2.4.1"
1016 | cross-spawn "^6.0.5"
1017 | memorystream "^0.3.1"
1018 | minimatch "^3.0.4"
1019 | pidtree "^0.3.0"
1020 | read-pkg "^3.0.0"
1021 | shell-quote "^1.6.1"
1022 | string.prototype.padend "^3.0.0"
1023 |
1024 | object-inspect@^1.8.0:
1025 | version "1.8.0"
1026 | resolved "https://registry.yarnpkg.com/object-inspect/-/object-inspect-1.8.0.tgz#df807e5ecf53a609cc6bfe93eac3cc7be5b3a9d0"
1027 | integrity sha512-jLdtEOB112fORuypAyl/50VRVIBIdVQOSUUGQHzJ4xBSbit81zRarz7GThkEFZy1RceYrWYcPcBFPQwHyAc1gA==
1028 |
1029 | object-keys@^1.0.12, object-keys@^1.1.1:
1030 | version "1.1.1"
1031 | resolved "https://registry.yarnpkg.com/object-keys/-/object-keys-1.1.1.tgz#1c47f272df277f3b1daf061677d9c82e2322c60e"
1032 | integrity sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==
1033 |
1034 | object.assign@^4.1.1:
1035 | version "4.1.1"
1036 | resolved "https://registry.yarnpkg.com/object.assign/-/object.assign-4.1.1.tgz#303867a666cdd41936ecdedfb1f8f3e32a478cdd"
1037 | integrity sha512-VT/cxmx5yaoHSOTSyrCygIDFco+RsibY2NM0a4RdEeY/4KgqezwFtK1yr3U67xYhqJSlASm2pKhLVzPj2lr4bA==
1038 | dependencies:
1039 | define-properties "^1.1.3"
1040 | es-abstract "^1.18.0-next.0"
1041 | has-symbols "^1.0.1"
1042 | object-keys "^1.1.1"
1043 |
1044 | "opts@>= 1.2.0":
1045 | version "2.0.2"
1046 | resolved "https://registry.yarnpkg.com/opts/-/opts-2.0.2.tgz#a17e189fbbfee171da559edd8a42423bc5993ce1"
1047 | integrity sha512-k41FwbcLnlgnFh69f4qdUfvDQ+5vaSDnVPFI/y5XuhKRq97EnVVneO9F1ESVCdiVu4fCS2L8usX3mU331hB7pg==
1048 |
1049 | parse-json@^4.0.0:
1050 | version "4.0.0"
1051 | resolved "https://registry.yarnpkg.com/parse-json/-/parse-json-4.0.0.tgz#be35f5425be1f7f6c747184f98a788cb99477ee0"
1052 | integrity sha1-vjX1Qlvh9/bHRxhPmKeIy5lHfuA=
1053 | dependencies:
1054 | error-ex "^1.3.1"
1055 | json-parse-better-errors "^1.0.1"
1056 |
1057 | path-key@^2.0.1:
1058 | version "2.0.1"
1059 | resolved "https://registry.yarnpkg.com/path-key/-/path-key-2.0.1.tgz#411cadb574c5a140d3a4b1910d40d80cc9f40b40"
1060 | integrity sha1-QRyttXTFoUDTpLGRDUDYDMn0C0A=
1061 |
1062 | path-parse@^1.0.6:
1063 | version "1.0.7"
1064 | resolved "https://registry.yarnpkg.com/path-parse/-/path-parse-1.0.7.tgz#fbc114b60ca42b30d9daf5858e4bd68bbedb6735"
1065 | integrity sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==
1066 |
1067 | path-type@^3.0.0:
1068 | version "3.0.0"
1069 | resolved "https://registry.yarnpkg.com/path-type/-/path-type-3.0.0.tgz#cef31dc8e0a1a3bb0d105c0cd97cf3bf47f4e36f"
1070 | integrity sha512-T2ZUsdZFHgA3u4e5PfPbjd7HDDpxPnQb5jN0SrDsjNSuVXHJqtwTnWqG0B1jZrgmJ/7lj1EmVIByWt1gxGkWvg==
1071 | dependencies:
1072 | pify "^3.0.0"
1073 |
1074 | picomatch@^2.0.4, picomatch@^2.2.1, picomatch@^2.2.2:
1075 | version "2.2.2"
1076 | resolved "https://registry.yarnpkg.com/picomatch/-/picomatch-2.2.2.tgz#21f333e9b6b8eaff02468f5146ea406d345f4dad"
1077 | integrity sha512-q0M/9eZHzmr0AulXyPwNfZjtwZ/RBZlbN3K3CErVrk50T2ASYI7Bye0EvekFY3IP1Nt2DHu0re+V2ZHIpMkuWg==
1078 |
1079 | pidtree@^0.3.0:
1080 | version "0.3.1"
1081 | resolved "https://registry.yarnpkg.com/pidtree/-/pidtree-0.3.1.tgz#ef09ac2cc0533df1f3250ccf2c4d366b0d12114a"
1082 | integrity sha512-qQbW94hLHEqCg7nhby4yRC7G2+jYHY4Rguc2bjw7Uug4GIJuu1tvf2uHaZv5Q8zdt+WKJ6qK1FOI6amaWUo5FA==
1083 |
1084 | pify@^3.0.0:
1085 | version "3.0.0"
1086 | resolved "https://registry.yarnpkg.com/pify/-/pify-3.0.0.tgz#e5a4acd2c101fdf3d9a4d07f0dbc4db49dd28176"
1087 | integrity sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY=
1088 |
1089 | promise-polyfill@8.1.3:
1090 | version "8.1.3"
1091 | resolved "https://registry.yarnpkg.com/promise-polyfill/-/promise-polyfill-8.1.3.tgz#8c99b3cf53f3a91c68226ffde7bde81d7f904116"
1092 | integrity sha512-MG5r82wBzh7pSKDRa9y+vllNHz3e3d4CNj1PQE4BQYxLme0gKYYBm9YENq+UkEikyZ0XbiGWxYlVw3Rl9O/U8g==
1093 |
1094 | protobufjs@^6.8.6:
1095 | version "6.11.3"
1096 | resolved "https://registry.yarnpkg.com/protobufjs/-/protobufjs-6.11.3.tgz#637a527205a35caa4f3e2a9a4a13ddffe0e7af74"
1097 | integrity sha512-xL96WDdCZYdU7Slin569tFX712BxsxslWwAfAhCYjQKGTq7dAU91Lomy6nLLhh/dyGhk/YH4TwTSRxTzhuHyZg==
1098 | dependencies:
1099 | "@protobufjs/aspromise" "^1.1.2"
1100 | "@protobufjs/base64" "^1.1.2"
1101 | "@protobufjs/codegen" "^2.0.4"
1102 | "@protobufjs/eventemitter" "^1.1.0"
1103 | "@protobufjs/fetch" "^1.1.0"
1104 | "@protobufjs/float" "^1.0.2"
1105 | "@protobufjs/inquire" "^1.1.0"
1106 | "@protobufjs/path" "^1.1.2"
1107 | "@protobufjs/pool" "^1.1.0"
1108 | "@protobufjs/utf8" "^1.1.0"
1109 | "@types/long" "^4.0.1"
1110 | "@types/node" ">=13.7.0"
1111 | long "^4.0.0"
1112 |
1113 | protobufjs@^7.0.0:
1114 | version "7.2.3"
1115 | resolved "https://registry.yarnpkg.com/protobufjs/-/protobufjs-7.2.3.tgz#01af019e40d9c6133c49acbb3ff9e30f4f0f70b2"
1116 | integrity sha512-TtpvOqwB5Gdz/PQmOjgsrGH1nHjAQVCN7JG4A6r1sXRWESL5rNMAiRcBQlCAdKxZcAbstExQePYG8xof/JVRgg==
1117 | dependencies:
1118 | "@protobufjs/aspromise" "^1.1.2"
1119 | "@protobufjs/base64" "^1.1.2"
1120 | "@protobufjs/codegen" "^2.0.4"
1121 | "@protobufjs/eventemitter" "^1.1.0"
1122 | "@protobufjs/fetch" "^1.1.0"
1123 | "@protobufjs/float" "^1.0.2"
1124 | "@protobufjs/inquire" "^1.1.0"
1125 | "@protobufjs/path" "^1.1.2"
1126 | "@protobufjs/pool" "^1.1.0"
1127 | "@protobufjs/utf8" "^1.1.0"
1128 | "@types/node" ">=13.7.0"
1129 | long "^5.0.0"
1130 |
1131 | randombytes@^2.1.0:
1132 | version "2.1.0"
1133 | resolved "https://registry.yarnpkg.com/randombytes/-/randombytes-2.1.0.tgz#df6f84372f0270dc65cdf6291349ab7a473d4f2a"
1134 | integrity sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ==
1135 | dependencies:
1136 | safe-buffer "^5.1.0"
1137 |
1138 | read-pkg@^3.0.0:
1139 | version "3.0.0"
1140 | resolved "https://registry.yarnpkg.com/read-pkg/-/read-pkg-3.0.0.tgz#9cbc686978fee65d16c00e2b19c237fcf6e38389"
1141 | integrity sha1-nLxoaXj+5l0WwA4rGcI3/Pbjg4k=
1142 | dependencies:
1143 | load-json-file "^4.0.0"
1144 | normalize-package-data "^2.3.2"
1145 | path-type "^3.0.0"
1146 |
1147 | readdirp@~3.5.0:
1148 | version "3.5.0"
1149 | resolved "https://registry.yarnpkg.com/readdirp/-/readdirp-3.5.0.tgz#9ba74c019b15d365278d2e91bb8c48d7b4d42c9e"
1150 | integrity sha512-cMhu7c/8rdhkHXWsY+osBhfSy0JikwpHK/5+imo+LpeasTF8ouErHrlYkwT0++njiyuDvc7OFY5T3ukvZ8qmFQ==
1151 | dependencies:
1152 | picomatch "^2.2.1"
1153 |
1154 | require-directory@^2.1.1:
1155 | version "2.1.1"
1156 | resolved "https://registry.yarnpkg.com/require-directory/-/require-directory-2.1.1.tgz#8c64ad5fd30dab1c976e2344ffe7f792a6a6df42"
1157 | integrity sha1-jGStX9MNqxyXbiNE/+f3kqam30I=
1158 |
1159 | require-relative@^0.8.7:
1160 | version "0.8.7"
1161 | resolved "https://registry.yarnpkg.com/require-relative/-/require-relative-0.8.7.tgz#7999539fc9e047a37928fa196f8e1563dabd36de"
1162 | integrity sha1-eZlTn8ngR6N5KPoZb44VY9q9Nt4=
1163 |
1164 | resolve@^1.10.0, resolve@^1.11.0, resolve@^1.11.1:
1165 | version "1.17.0"
1166 | resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.17.0.tgz#b25941b54968231cc2d1bb76a79cb7f2c0bf8444"
1167 | integrity sha512-ic+7JYiV8Vi2yzQGFWOkiZD5Z9z7O2Zhm9XMaTxdJExKasieFCr+yXZ/WmXsckHiKl12ar0y6XiXDx3m4RHn1w==
1168 | dependencies:
1169 | path-parse "^1.0.6"
1170 |
1171 | rollup-plugin-commonjs@^10.0.0:
1172 | version "10.1.0"
1173 | resolved "https://registry.yarnpkg.com/rollup-plugin-commonjs/-/rollup-plugin-commonjs-10.1.0.tgz#417af3b54503878e084d127adf4d1caf8beb86fb"
1174 | integrity sha512-jlXbjZSQg8EIeAAvepNwhJj++qJWNJw1Cl0YnOqKtP5Djx+fFGkp3WRh+W0ASCaFG5w1jhmzDxgu3SJuVxPF4Q==
1175 | dependencies:
1176 | estree-walker "^0.6.1"
1177 | is-reference "^1.1.2"
1178 | magic-string "^0.25.2"
1179 | resolve "^1.11.0"
1180 | rollup-pluginutils "^2.8.1"
1181 |
1182 | rollup-plugin-css-only@^2.0.0:
1183 | version "2.1.0"
1184 | resolved "https://registry.yarnpkg.com/rollup-plugin-css-only/-/rollup-plugin-css-only-2.1.0.tgz#b9e8505eb01c5257b5eab65bd51eec9050bed9a3"
1185 | integrity sha512-pfdcqAWEmRMFy+ABXAQPA/DKyPqLuBTOf+lWSOgtrVs1v/q7DSXzYa9QZg4myd8/1F7NHcdvPkWnfWqMxq9vrw==
1186 | dependencies:
1187 | "@rollup/pluginutils" "^3.0.0"
1188 | fs-extra "^9.0.0"
1189 |
1190 | rollup-plugin-livereload@^2.0.0:
1191 | version "2.0.0"
1192 | resolved "https://registry.yarnpkg.com/rollup-plugin-livereload/-/rollup-plugin-livereload-2.0.0.tgz#d3928d74e8cf2ae4286c5dd46b770fd3f3b82313"
1193 | integrity sha512-oC/8NqumGYuphkqrfszOHUUIwzKsaHBICw6QRwT5uD07gvePTS+HW+GFwu6f9K8W02CUuTvtIM9AWJrbj4wE1A==
1194 | dependencies:
1195 | livereload "^0.9.1"
1196 |
1197 | rollup-plugin-node-resolve@^5.2.0:
1198 | version "5.2.0"
1199 | resolved "https://registry.yarnpkg.com/rollup-plugin-node-resolve/-/rollup-plugin-node-resolve-5.2.0.tgz#730f93d10ed202473b1fb54a5997a7db8c6d8523"
1200 | integrity sha512-jUlyaDXts7TW2CqQ4GaO5VJ4PwwaV8VUGA7+km3n6k6xtOEacf61u0VXwN80phY/evMcaS+9eIeJ9MOyDxt5Zw==
1201 | dependencies:
1202 | "@types/resolve" "0.0.8"
1203 | builtin-modules "^3.1.0"
1204 | is-module "^1.0.0"
1205 | resolve "^1.11.1"
1206 | rollup-pluginutils "^2.8.1"
1207 |
1208 | rollup-plugin-svelte@^6.0.0:
1209 | version "6.0.1"
1210 | resolved "https://registry.yarnpkg.com/rollup-plugin-svelte/-/rollup-plugin-svelte-6.0.1.tgz#a4fc9c19c5c4277e6dbf8e79185c4cbd6b4383bf"
1211 | integrity sha512-kS9/JZMBNgpKTqVKlwV8mhmGwxu8NiNf6+n5ZzdZ8yDp3+ADqjf8Au+JNEpoOn6kLlh1hLS2Gsa76k9RP57HDQ==
1212 | dependencies:
1213 | require-relative "^0.8.7"
1214 | rollup-pluginutils "^2.8.2"
1215 | sourcemap-codec "^1.4.8"
1216 |
1217 | rollup-plugin-terser@^7.0.0:
1218 | version "7.0.2"
1219 | resolved "https://registry.yarnpkg.com/rollup-plugin-terser/-/rollup-plugin-terser-7.0.2.tgz#e8fbba4869981b2dc35ae7e8a502d5c6c04d324d"
1220 | integrity sha512-w3iIaU4OxcF52UUXiZNsNeuXIMDvFrr+ZXK6bFZ0Q60qyVfq4uLptoS4bbq3paG3x216eQllFZX7zt6TIImguQ==
1221 | dependencies:
1222 | "@babel/code-frame" "^7.10.4"
1223 | jest-worker "^26.2.1"
1224 | serialize-javascript "^4.0.0"
1225 | terser "^5.0.0"
1226 |
1227 | rollup-pluginutils@^2.8.1, rollup-pluginutils@^2.8.2:
1228 | version "2.8.2"
1229 | resolved "https://registry.yarnpkg.com/rollup-pluginutils/-/rollup-pluginutils-2.8.2.tgz#72f2af0748b592364dbd3389e600e5a9444a351e"
1230 | integrity sha512-EEp9NhnUkwY8aif6bxgovPHMoMoNr2FulJziTndpt5H9RdwC47GSGuII9XxpSdzVGM0GWrNPHV6ie1LTNJPaLQ==
1231 | dependencies:
1232 | estree-walker "^0.6.1"
1233 |
1234 | rollup@^2.0.0:
1235 | version "2.30.0"
1236 | resolved "https://registry.yarnpkg.com/rollup/-/rollup-2.30.0.tgz#316a1eb0389dbda4082ef2d191b31488995e4c41"
1237 | integrity sha512-j4K1hUZfgFM03DUpayd3c7kZW+2wDbI6rj7ssQxpCpL1vsGpaM0vSorxBuePFwQDFq9O2DI6AOQbm174Awsq4w==
1238 | optionalDependencies:
1239 | fsevents "~2.1.2"
1240 |
1241 | sade@^1.6.0:
1242 | version "1.7.4"
1243 | resolved "https://registry.yarnpkg.com/sade/-/sade-1.7.4.tgz#ea681e0c65d248d2095c90578c03ca0bb1b54691"
1244 | integrity sha512-y5yauMD93rX840MwUJr7C1ysLFBgMspsdTo4UVrDg3fXDvtwOyIqykhVAAm6fk/3au77773itJStObgK+LKaiA==
1245 | dependencies:
1246 | mri "^1.1.0"
1247 |
1248 | safe-buffer@>=5.1.0, safe-buffer@^5.1.0:
1249 | version "5.2.1"
1250 | resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.2.1.tgz#1eaf9fa9bdb1fdd4ec75f58f9cdb4e6b7827eec6"
1251 | integrity sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==
1252 |
1253 | semiver@^1.0.0:
1254 | version "1.1.0"
1255 | resolved "https://registry.yarnpkg.com/semiver/-/semiver-1.1.0.tgz#9c97fb02c21c7ce4fcf1b73e2c7a24324bdddd5f"
1256 | integrity sha512-QNI2ChmuioGC1/xjyYwyZYADILWyW6AmS1UH6gDj/SFUUUS4MBAWs/7mxnkRPc/F4iHezDP+O8t0dO8WHiEOdg==
1257 |
1258 | "semver@2 || 3 || 4 || 5", semver@^5.5.0:
1259 | version "5.7.2"
1260 | resolved "https://registry.yarnpkg.com/semver/-/semver-5.7.2.tgz#48d55db737c3287cd4835e17fa13feace1c41ef8"
1261 | integrity sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==
1262 |
1263 | serialize-javascript@^4.0.0:
1264 | version "4.0.0"
1265 | resolved "https://registry.yarnpkg.com/serialize-javascript/-/serialize-javascript-4.0.0.tgz#b525e1238489a5ecfc42afacc3fe99e666f4b1aa"
1266 | integrity sha512-GaNA54380uFefWghODBWEGisLZFj00nS5ACs6yHa9nLqlLpVLO8ChDGeKRjZnV4Nh4n0Qi7nhYZD/9fCPzEqkw==
1267 | dependencies:
1268 | randombytes "^2.1.0"
1269 |
1270 | shebang-command@^1.2.0:
1271 | version "1.2.0"
1272 | resolved "https://registry.yarnpkg.com/shebang-command/-/shebang-command-1.2.0.tgz#44aac65b695b03398968c39f363fee5deafdf1ea"
1273 | integrity sha1-RKrGW2lbAzmJaMOfNj/uXer98eo=
1274 | dependencies:
1275 | shebang-regex "^1.0.0"
1276 |
1277 | shebang-regex@^1.0.0:
1278 | version "1.0.0"
1279 | resolved "https://registry.yarnpkg.com/shebang-regex/-/shebang-regex-1.0.0.tgz#da42f49740c0b42db2ca9728571cb190c98efea3"
1280 | integrity sha1-2kL0l0DAtC2yypcoVxyxkMmO/qM=
1281 |
1282 | shell-quote@^1.6.1:
1283 | version "1.7.3"
1284 | resolved "https://registry.yarnpkg.com/shell-quote/-/shell-quote-1.7.3.tgz#aa40edac170445b9a431e17bb62c0b881b9c4123"
1285 | integrity sha512-Vpfqwm4EnqGdlsBFNmHhxhElJYrdfcxPThu+ryKS5J8L/fhAwLazFZtq+S+TWZ9ANj2piSQLGj6NQg+lKPmxrw==
1286 |
1287 | sirv-cli@^1.0.0:
1288 | version "1.0.6"
1289 | resolved "https://registry.yarnpkg.com/sirv-cli/-/sirv-cli-1.0.6.tgz#a4924254d965b23a518512f70010e710185de2f1"
1290 | integrity sha512-K/iY1OHG7hTw4GzLoqMhwzKCbgWmx5joYAAF2+CwyiamWCpVzAgNVWgAc0JmSA2Gf3wseov05il2QbFTGTZMVg==
1291 | dependencies:
1292 | console-clear "^1.1.0"
1293 | get-port "^3.2.0"
1294 | kleur "^3.0.0"
1295 | local-access "^1.0.1"
1296 | sade "^1.6.0"
1297 | semiver "^1.0.0"
1298 | sirv "^1.0.6"
1299 | tinydate "^1.0.0"
1300 |
1301 | sirv@^1.0.6:
1302 | version "1.0.6"
1303 | resolved "https://registry.yarnpkg.com/sirv/-/sirv-1.0.6.tgz#178c13bffccc0dea715a0e50894cf3a6c74a715e"
1304 | integrity sha512-LRGu7Op4Xl9hhigOy2kcB53zAYTjNDdpooey49dIU0cMdpOv9ithVf7nstk3jvs8EhMiT/VORoyazZYGgw4vnA==
1305 | dependencies:
1306 | "@polka/url" "^1.0.0-next.9"
1307 | mime "^2.3.1"
1308 | totalist "^1.0.0"
1309 |
1310 | source-map-support@~0.5.20:
1311 | version "0.5.21"
1312 | resolved "https://registry.yarnpkg.com/source-map-support/-/source-map-support-0.5.21.tgz#04fe7c7f9e1ed2d662233c28cb2b35b9f63f6e4f"
1313 | integrity sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w==
1314 | dependencies:
1315 | buffer-from "^1.0.0"
1316 | source-map "^0.6.0"
1317 |
1318 | source-map@^0.6.0:
1319 | version "0.6.1"
1320 | resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.6.1.tgz#74722af32e9614e9c287a8d0bbde48b5e2f1a263"
1321 | integrity sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==
1322 |
1323 | sourcemap-codec@^1.4.4, sourcemap-codec@^1.4.8:
1324 | version "1.4.8"
1325 | resolved "https://registry.yarnpkg.com/sourcemap-codec/-/sourcemap-codec-1.4.8.tgz#ea804bd94857402e6992d05a38ef1ae35a9ab4c4"
1326 | integrity sha512-9NykojV5Uih4lgo5So5dtw+f0JgJX30KCNI8gwhz2J9A15wD0Ml6tjHKwf6fTSa6fAdVBdZeNOs9eJ71qCk8vA==
1327 |
1328 | spdx-correct@^3.0.0:
1329 | version "3.1.1"
1330 | resolved "https://registry.yarnpkg.com/spdx-correct/-/spdx-correct-3.1.1.tgz#dece81ac9c1e6713e5f7d1b6f17d468fa53d89a9"
1331 | integrity sha512-cOYcUWwhCuHCXi49RhFRCyJEK3iPj1Ziz9DpViV3tbZOwXD49QzIN3MpOLJNxh2qwq2lJJZaKMVw9qNi4jTC0w==
1332 | dependencies:
1333 | spdx-expression-parse "^3.0.0"
1334 | spdx-license-ids "^3.0.0"
1335 |
1336 | spdx-exceptions@^2.1.0:
1337 | version "2.3.0"
1338 | resolved "https://registry.yarnpkg.com/spdx-exceptions/-/spdx-exceptions-2.3.0.tgz#3f28ce1a77a00372683eade4a433183527a2163d"
1339 | integrity sha512-/tTrYOC7PPI1nUAgx34hUpqXuyJG+DTHJTnIULG4rDygi4xu/tfgmq1e1cIRwRzwZgo4NLySi+ricLkZkw4i5A==
1340 |
1341 | spdx-expression-parse@^3.0.0:
1342 | version "3.0.1"
1343 | resolved "https://registry.yarnpkg.com/spdx-expression-parse/-/spdx-expression-parse-3.0.1.tgz#cf70f50482eefdc98e3ce0a6833e4a53ceeba679"
1344 | integrity sha512-cbqHunsQWnJNE6KhVSMsMeH5H/L9EpymbzqTQ3uLwNCLZ1Q481oWaofqH7nO6V07xlXwY6PhQdQ2IedWx/ZK4Q==
1345 | dependencies:
1346 | spdx-exceptions "^2.1.0"
1347 | spdx-license-ids "^3.0.0"
1348 |
1349 | spdx-license-ids@^3.0.0:
1350 | version "3.0.6"
1351 | resolved "https://registry.yarnpkg.com/spdx-license-ids/-/spdx-license-ids-3.0.6.tgz#c80757383c28abf7296744998cbc106ae8b854ce"
1352 | integrity sha512-+orQK83kyMva3WyPf59k1+Y525csj5JejicWut55zeTWANuN17qSiSLUXWtzHeNWORSvT7GLDJ/E/XiIWoXBTw==
1353 |
1354 | string-width@^4.1.0, string-width@^4.2.0:
1355 | version "4.2.0"
1356 | resolved "https://registry.yarnpkg.com/string-width/-/string-width-4.2.0.tgz#952182c46cc7b2c313d1596e623992bd163b72b5"
1357 | integrity sha512-zUz5JD+tgqtuDjMhwIg5uFVV3dtqZ9yQJlZVfq4I01/K5Paj5UHj7VyrQOJvzawSVlKpObApbfD0Ed6yJc+1eg==
1358 | dependencies:
1359 | emoji-regex "^8.0.0"
1360 | is-fullwidth-code-point "^3.0.0"
1361 | strip-ansi "^6.0.0"
1362 |
1363 | string.prototype.padend@^3.0.0:
1364 | version "3.1.0"
1365 | resolved "https://registry.yarnpkg.com/string.prototype.padend/-/string.prototype.padend-3.1.0.tgz#dc08f57a8010dc5c153550318f67e13adbb72ac3"
1366 | integrity sha512-3aIv8Ffdp8EZj8iLwREGpQaUZiPyrWrpzMBHvkiSW/bK/EGve9np07Vwy7IJ5waydpGXzQZu/F8Oze2/IWkBaA==
1367 | dependencies:
1368 | define-properties "^1.1.3"
1369 | es-abstract "^1.17.0-next.1"
1370 |
1371 | string.prototype.trimend@^1.0.1:
1372 | version "1.0.1"
1373 | resolved "https://registry.yarnpkg.com/string.prototype.trimend/-/string.prototype.trimend-1.0.1.tgz#85812a6b847ac002270f5808146064c995fb6913"
1374 | integrity sha512-LRPxFUaTtpqYsTeNKaFOw3R4bxIzWOnbQ837QfBylo8jIxtcbK/A/sMV7Q+OAV/vWo+7s25pOE10KYSjaSO06g==
1375 | dependencies:
1376 | define-properties "^1.1.3"
1377 | es-abstract "^1.17.5"
1378 |
1379 | string.prototype.trimstart@^1.0.1:
1380 | version "1.0.1"
1381 | resolved "https://registry.yarnpkg.com/string.prototype.trimstart/-/string.prototype.trimstart-1.0.1.tgz#14af6d9f34b053f7cfc89b72f8f2ee14b9039a54"
1382 | integrity sha512-XxZn+QpvrBI1FOcg6dIpxUPgWCPuNXvMD72aaRaUQv1eD4e/Qy8i/hFTe0BUmD60p/QA6bh1avmuPTfNjqVWRw==
1383 | dependencies:
1384 | define-properties "^1.1.3"
1385 | es-abstract "^1.17.5"
1386 |
1387 | strip-ansi@^6.0.0:
1388 | version "6.0.0"
1389 | resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-6.0.0.tgz#0b1571dd7669ccd4f3e06e14ef1eed26225ae532"
1390 | integrity sha512-AuvKTrTfQNYNIctbR1K/YGTR1756GycPsg7b9bdV9Duqur4gv6aKqHXah67Z8ImS7WEz5QVcOtlfW2rZEugt6w==
1391 | dependencies:
1392 | ansi-regex "^5.0.0"
1393 |
1394 | strip-bom@^3.0.0:
1395 | version "3.0.0"
1396 | resolved "https://registry.yarnpkg.com/strip-bom/-/strip-bom-3.0.0.tgz#2334c18e9c759f7bdd56fdef7e9ae3d588e68ed3"
1397 | integrity sha1-IzTBjpx1n3vdVv3vfprj1YjmjtM=
1398 |
1399 | supports-color@^5.3.0:
1400 | version "5.5.0"
1401 | resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-5.5.0.tgz#e2e69a44ac8772f78a1ec0b35b689df6530efc8f"
1402 | integrity sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==
1403 | dependencies:
1404 | has-flag "^3.0.0"
1405 |
1406 | supports-color@^7.0.0:
1407 | version "7.2.0"
1408 | resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-7.2.0.tgz#1b7dcdcb32b8138801b3e478ba6a51caa89648da"
1409 | integrity sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==
1410 | dependencies:
1411 | has-flag "^4.0.0"
1412 |
1413 | svelte-router-spa@^5.0.0:
1414 | version "5.7.3"
1415 | resolved "https://registry.yarnpkg.com/svelte-router-spa/-/svelte-router-spa-5.7.3.tgz#e3bcab9880ad3a127d9ca8dbd2dd8dbee6927050"
1416 | integrity sha512-Iqgn+atJZRu/SYQd6VQg0awYzB3n3u2s73VeSy533fRQt9+F3VvFhhHi82rf5yYV7IgkQOziIhEOThKWT2rkvA==
1417 | dependencies:
1418 | url-params-parser "^1.0.2"
1419 |
1420 | svelte@^3.49.0:
1421 | version "3.49.0"
1422 | resolved "https://registry.yarnpkg.com/svelte/-/svelte-3.49.0.tgz#5baee3c672306de1070c3b7888fc2204e36a4029"
1423 | integrity sha512-+lmjic1pApJWDfPCpUUTc1m8azDqYCG1JN9YEngrx/hUyIcFJo6VZhj0A1Ai0wqoHcEIuQy+e9tk+4uDgdtsFA==
1424 |
1425 | terser@^5.0.0:
1426 | version "5.14.2"
1427 | resolved "https://registry.yarnpkg.com/terser/-/terser-5.14.2.tgz#9ac9f22b06994d736174f4091aa368db896f1c10"
1428 | integrity sha512-oL0rGeM/WFQCUd0y2QrWxYnq7tfSuKBiqTjRPWrRgB46WD/kiwHwF8T23z78H6Q6kGCuuHcPB+KULHRdxvVGQA==
1429 | dependencies:
1430 | "@jridgewell/source-map" "^0.3.2"
1431 | acorn "^8.5.0"
1432 | commander "^2.20.0"
1433 | source-map-support "~0.5.20"
1434 |
1435 | tinydate@^1.0.0:
1436 | version "1.3.0"
1437 | resolved "https://registry.yarnpkg.com/tinydate/-/tinydate-1.3.0.tgz#e6ca8e5a22b51bb4ea1c3a2a4fd1352dbd4c57fb"
1438 | integrity sha512-7cR8rLy2QhYHpsBDBVYnnWXm8uRTr38RoZakFSW7Bs7PzfMPNZthuMLkwqZv7MTu8lhQ91cOFYS5a7iFj2oR3w==
1439 |
1440 | to-regex-range@^5.0.1:
1441 | version "5.0.1"
1442 | resolved "https://registry.yarnpkg.com/to-regex-range/-/to-regex-range-5.0.1.tgz#1648c44aae7c8d988a326018ed72f5b4dd0392e4"
1443 | integrity sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==
1444 | dependencies:
1445 | is-number "^7.0.0"
1446 |
1447 | totalist@^1.0.0:
1448 | version "1.1.0"
1449 | resolved "https://registry.yarnpkg.com/totalist/-/totalist-1.1.0.tgz#a4d65a3e546517701e3e5c37a47a70ac97fe56df"
1450 | integrity sha512-gduQwd1rOdDMGxFG1gEvhV88Oirdo2p+KjoYFU7k2g+i7n6AFFbDQ5kMPUsW0pNbfQsB/cwXvT1i4Bue0s9g5g==
1451 |
1452 | tslib@^1.11.1:
1453 | version "1.14.1"
1454 | resolved "https://registry.yarnpkg.com/tslib/-/tslib-1.14.1.tgz#cf2d38bdc34a134bcaf1091c41f6619e2f672d00"
1455 | integrity sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==
1456 |
1457 | universalify@^1.0.0:
1458 | version "1.0.0"
1459 | resolved "https://registry.yarnpkg.com/universalify/-/universalify-1.0.0.tgz#b61a1da173e8435b2fe3c67d29b9adf8594bd16d"
1460 | integrity sha512-rb6X1W158d7pRQBg5gkR8uPaSfiids68LTJQYOtEUhoJUWBdaQHsuT/EUduxXYxcrt4r5PJ4fuHW1MHT6p0qug==
1461 |
1462 | url-params-parser@^1.0.2:
1463 | version "1.0.2"
1464 | resolved "https://registry.yarnpkg.com/url-params-parser/-/url-params-parser-1.0.2.tgz#2076afda890c804c692152d6b42e07f4ba1049fc"
1465 | integrity sha512-0jXbXQBZlyQxIF/kwZ4nu5sOU+jNioXRXlxLgyT+XxG9mQ4nLmxV8zBaR/66bmH0zDIO9cWazK33MTHBIGQwMg==
1466 |
1467 | validate-npm-package-license@^3.0.1:
1468 | version "3.0.4"
1469 | resolved "https://registry.yarnpkg.com/validate-npm-package-license/-/validate-npm-package-license-3.0.4.tgz#fc91f6b9c7ba15c857f4cb2c5defeec39d4f410a"
1470 | integrity sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew==
1471 | dependencies:
1472 | spdx-correct "^3.0.0"
1473 | spdx-expression-parse "^3.0.0"
1474 |
1475 | validate.js@^0.13.0:
1476 | version "0.13.1"
1477 | resolved "https://registry.yarnpkg.com/validate.js/-/validate.js-0.13.1.tgz#b58bfac04a0f600a340f62e5227e70d95971e92a"
1478 | integrity sha512-PnFM3xiZ+kYmLyTiMgTYmU7ZHkjBZz2/+F0DaALc/uUtVzdCt1wAosvYJ5hFQi/hz8O4zb52FQhHZRC+uVkJ+g==
1479 |
1480 | websocket-driver@>=0.5.1:
1481 | version "0.7.4"
1482 | resolved "https://registry.yarnpkg.com/websocket-driver/-/websocket-driver-0.7.4.tgz#89ad5295bbf64b480abcba31e4953aca706f5760"
1483 | integrity sha512-b17KeDIQVjvb0ssuSDF2cYXSg2iztliJ4B9WdsuB6J952qCPKmnVq4DyW5motImXHDC1cBT/1UezrJVsKw5zjg==
1484 | dependencies:
1485 | http-parser-js ">=0.5.1"
1486 | safe-buffer ">=5.1.0"
1487 | websocket-extensions ">=0.1.1"
1488 |
1489 | websocket-extensions@>=0.1.1:
1490 | version "0.1.4"
1491 | resolved "https://registry.yarnpkg.com/websocket-extensions/-/websocket-extensions-0.1.4.tgz#7f8473bc839dfd87608adb95d7eb075211578a42"
1492 | integrity sha512-OqedPIGOfsDlo31UNwYbCFMSaO9m9G/0faIHj5/dZFDMFqPTcx6UwqyOy3COEaEOg/9VsGIpdqn62W5KhoKSpg==
1493 |
1494 | whatwg-fetch@2.0.4:
1495 | version "2.0.4"
1496 | resolved "https://registry.yarnpkg.com/whatwg-fetch/-/whatwg-fetch-2.0.4.tgz#dde6a5df315f9d39991aa17621853d720b85566f"
1497 | integrity sha512-dcQ1GWpOD/eEQ97k66aiEVpNnapVj90/+R+SXTPYGHpYBBypfKJEQjLrvMZ7YXbKm21gXd4NcuxUTjiv1YtLng==
1498 |
1499 | which@^1.2.9:
1500 | version "1.3.1"
1501 | resolved "https://registry.yarnpkg.com/which/-/which-1.3.1.tgz#a45043d54f5805316da8d62f9f50918d3da70b0a"
1502 | integrity sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==
1503 | dependencies:
1504 | isexe "^2.0.0"
1505 |
1506 | wrap-ansi@^7.0.0:
1507 | version "7.0.0"
1508 | resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-7.0.0.tgz#67e145cff510a6a6984bdf1152911d69d2eb9e43"
1509 | integrity sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==
1510 | dependencies:
1511 | ansi-styles "^4.0.0"
1512 | string-width "^4.1.0"
1513 | strip-ansi "^6.0.0"
1514 |
1515 | ws@^6.2.1:
1516 | version "6.2.2"
1517 | resolved "https://registry.yarnpkg.com/ws/-/ws-6.2.2.tgz#dd5cdbd57a9979916097652d78f1cc5faea0c32e"
1518 | integrity sha512-zmhltoSR8u1cnDsD43TX59mzoMZsLKqUweyYBAIvTngR3shc0W6aOZylZmq/7hqyVxPdi+5Ud2QInblgyE72fw==
1519 | dependencies:
1520 | async-limiter "~1.0.0"
1521 |
1522 | xmlhttprequest@1.8.0:
1523 | version "1.8.0"
1524 | resolved "https://registry.yarnpkg.com/xmlhttprequest/-/xmlhttprequest-1.8.0.tgz#67fe075c5c24fef39f9d65f5f7b7fe75171968fc"
1525 | integrity sha1-Z/4HXFwk/vOfnWX197f+dRcZaPw=
1526 |
1527 | y18n@^5.0.5:
1528 | version "5.0.8"
1529 | resolved "https://registry.yarnpkg.com/y18n/-/y18n-5.0.8.tgz#7f4934d0f7ca8c56f95314939ddcd2dd91ce1d55"
1530 | integrity sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==
1531 |
1532 | yargs-parser@^20.2.2:
1533 | version "20.2.9"
1534 | resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-20.2.9.tgz#2eb7dc3b0289718fc295f362753845c41a0c94ee"
1535 | integrity sha512-y11nGElTIV+CT3Zv9t7VKl+Q3hTQoT9a1Qzezhhl6Rp21gJ/IVTW7Z3y9EWXhuUBC2Shnf+DX0antecpAwSP8w==
1536 |
1537 | yargs@^16.2.0:
1538 | version "16.2.0"
1539 | resolved "https://registry.yarnpkg.com/yargs/-/yargs-16.2.0.tgz#1c82bf0f6b6a66eafce7ef30e376f49a12477f66"
1540 | integrity sha512-D1mvvtDG0L5ft/jGWkLpG1+m0eQxOfaBvTNELraWj22wSVUMWxZUvYgJYcKh6jGGIkJFhH4IZPQhR4TKpc8mBw==
1541 | dependencies:
1542 | cliui "^7.0.2"
1543 | escalade "^3.1.1"
1544 | get-caller-file "^2.0.5"
1545 | require-directory "^2.1.1"
1546 | string-width "^4.2.0"
1547 | y18n "^5.0.5"
1548 | yargs-parser "^20.2.2"
1549 |
--------------------------------------------------------------------------------